Grundlegendes zur Verbindungsverarbeitung
Postgres verwendet ein prozessbasiertes Verbindungsmodell. Das Herstellen einer Verbindung schließt das Betriebssystem und die Zuordnung einer geringen Arbeitsspeicherkapazität ein. Jede SQL-Abfrage wird mithilfe einer aktuellen Verbindung ausgeführt.
Verbindungsstatus
Eine Verbindung kann die folgenden vier Status aufweisen:
- active: Aktive Verbindungen, die derzeit Abfragen ausführen.
- idle: Hergestellte Verbindungen, die nicht verwendet werden.
- idle in transaction: Wartende Verbindungen, die keine Vorgänge ausführen. Verwenden Sie pg_stat_activity, um zu verstehen, welche Vorgänge eine Verbindung ausführt und wie lang sie diesen Status schon aufweist.
- idle in transaction (aborted): Verbindungen, die zuvor den Status idle in transaction aufwiesen, jetzt aber abgebrochen sind.
Beim prozessbasierten Verbindungsmodell ist es teuer, viele Verbindungen im Leerlauf beizubehalten.
Maximale Anzahl der Verbindungen
PostgreSQL beschränkt die maximale Anzahl gleichzeitiger Verbindungen mit dem Server mithilfe eines Serverparameters namens max_connections. In Azure Database for PostgreSQL hängt die Standardeinstellung von Ihrem Computetarif ab. Der zulässige Wert liegt zwischen 25 und 5000.
Eine lokale Implementierung von PostgreSQL reserviert einige Verbindungen für Administrator*innen, um die Integrität der Datenbank beizubehalten. Diese Reservierung entspricht in der Regel 15 Prozent des max_connections-Werts.
Azure Database for PostgreSQL ist eine verwaltete Lösung und reserviert automatisch drei Verbindungen zur Überwachung eines flexiblen Servers.
Hinweis
Es gibt keinen Server zum Verwalten von superuser_reserved_connections in Azure Database for PostgreSQL.
Verbindungspooling
Wenn Clientanwendungen häufig Verbindungen herstellen und beenden, kann dies zu Verbindungslatenz und somit zu weniger Transaktionen pro Sekunde und einer allgemein höheren Anwendungslatenz führen.
Azure Database for PostgreSQL empfiehlt das Verbindungspooling, anstatt häufig Verbindungen herzustellen und wieder zu beenden. Beim Verbindungspooling werden vorhandene Verbindungen wiederverwendet, anstatt diese zu beenden und neu herzustellen. Dieser Prozess reduziert die Verbindungslatenz und es sind mehr Datenbanktransaktionen pro Sekunde für Datenbanken auf dem Server möglich.
Das Verbindungspooling stellt eine festgelegte Gruppe von Verbindungen bereit, wenn der Server gestartet wird, und diese Verbindungen werden dann verwaltet. Dieser Ansatz hilft auch dabei, die Speicherfragmentierung zu reduzieren, die durch das ständige Erstellen neuer Verbindungen auf dem Server verursacht wird.
PGBouncer
ist eine in Azure Database for PostgreSQL integrierte Verbindungspoolinglösung. Führen Sie die folgenden Schritte aus, um PgBouncer zu aktivieren:
- Navigieren Sie im Azure-Portal zu Ihrem Azure Database for PostgreSQL-Server.
- Klicken Sie im linken Menü auf Serverparameter.
- Suchen Sie über die Suchleiste nach PgBouncer.
- Legen Sie die Einstellung pgbouncer.enabled auf „true“ fest, um PgBouncer zu aktivieren. Für diese Einstellung ist kein Neustart des Servers erforderlich.
- Legen Sie pgbouncer.default_pool_size auf die gewünschte Anzahl der Verbindungen pro Benutzer-Datenbank-Paar fest. Der Standardwert ist 50.
- Legen Sie den ParameterpgBouncer.pool_mode auf TRANSACTION fest.
Hinweis
PgBouncer wird auf den Computeebenen „Universell“ und „Arbeitsspeicheroptimiert“ sowohl in Netzwerken mit öffentlichem als auch mit privatem Zugriff unterstützt. PgBouncer wird für den Computetarif „Burstfähig“ nicht unterstützt. Wenn der Computetarif von „Universell“ oder „Speicheroptimiert“ in „Burstfähig“ geändert wird, ist die PgBouncer-Funktion nicht verfügbar.