Einführung in die Verwaltung von Verbindungen

Abgeschlossen

Postgres verwendet ein prozessbasiertes Verbindungsmodell. Das Herstellen einer Verbindung umfasst das Betriebssystem und die Zuordnung eines kleinen Arbeitsspeichers. Jede SQL-Abfrage wird mit einer aktuellen Verbindung ausgeführt.

Verbindungszustände

Eine Verbindung kann sich in einem von vier Zuständen befinden:

  • aktive – aktive Verbindungen, die derzeit Abfragen ausführen.
  • Leerlauf – offene Verbindungen, die nicht verwendet werden.
  • ist untätig in der Transaktion – eine Verbindung, die wartet und keine Arbeit verrichtet. Verwenden Sie pg_stat_activity, um zu verstehen, was eine Verbindung tut, und wie lange sie sich in diesem Zustand befindet.
  • im Leerlauf der Transaktion (abgebrochen) – Verbindungen, die zuvor im Leerlauf der Transaktion waren, aber jetzt abgebrochen wurden.

Das prozessbasierte Verbindungsmodell macht es teuer, viele Leerlaufverbindungen aufrechtzuerhalten.

Maximale Verbindungen

PostgreSQL begrenzt die maximale Anzahl gleichzeitiger Verbindungen mit dem Server mithilfe eines Serverparameters, der max_connectionsgenannt wird. In Azure Database for PostgreSQL hängt der Standardwert von Ihrer Computeebene ab. Der zulässige Wert liegt zwischen 25 und 5000.

Eine lokale Implementierung von PostgreSQL behält sich einige Verbindungen für den Superbenutzer vor, um die Integrität der Datenbank aufrechtzuerhalten. Diese Reservierung entspricht in der Regel 15% des Werts von max_connections.

Azure Database for PostgreSQL ist eine verwaltete Lösung und reserviert automatisch drei Verbindungen, um einen flexiblen Server zu überwachen.

Anmerkung

Es gibt keinen Serverparameter zum Verwalten von superuser_reserved_connections in der Azure-Datenbank für PostgreSQL.

Verbindungspooling

Clientanwendungen, die häufig Verbindungen öffnen und schließen, können eine Verbindungslatenz feststellen, was zu niedrigeren Transaktionen pro Sekunde und insgesamt einer höheren Anwendungslatenz führt.

Azure Database for PostgreSQL empfiehlt verbindungspooling anstelle von häufig geöffneten und schließenden Verbindungen. Durch Verbindungs-Pooling werden vorhandene Verbindungen wiederverwendet, anstatt sie zu schließen und neu zu erstellen. Dieser Prozess reduziert die Verbindungslatenz und ermöglicht höhere Datenbanktransaktionen pro Sekunde für Datenbanken auf dem Server.

Das Verbindungspooling etabliert beim Starten des Servers einen festen Satz von Verbindungen, und diese Verbindungen werden dann verwaltet. Das Verbindungspooling trägt auch dazu bei, die durch ständig neu erstellte Verbindungen auf dem Server verursachte Speicherfragmentierung zu reduzieren.

PGBouncer ist eine In Azure-Datenbank für PostgreSQL integrierte Verbindungspoollösung. So aktivieren Sie pgBouncer:

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure-Datenbank für PostgreSQL-Server.
  2. Wählen Sie im linken Menü Serverparameteraus.
  3. Suchen Sie in der Suchleiste nach PgBouncer.
  4. Legen Sie die Einstellung pgbouncer.enabled auf "true" fest, um PgBouncer zu aktivieren. Für diese Einstellung ist kein Neustart des Servers erforderlich.
  5. Legen Sie pgbouncer.default_pool_size auf die Anzahl der verbindungen pro Benutzer-/Datenbankpaar fest, die Sie benötigen. Der Standardwert ist 50.
  6. Legen Sie den parameter pgBouncer.pool_mode auf TRANSACTION fest.

Anmerkung

PgBouncer wird in den Computeebenen "General Purpose" und "Memory Optimized" sowohl im öffentlichen Zugriff als auch in privaten Zugriffsnetzwerken unterstützt. PgBouncer wird auf der Burstable-Computeebene nicht unterstützt. Wenn die Computeebene von "General Purpose" oder "Memory Optimized" in "Burstable" geändert wird, geht die PGBouncer-Funktion verloren.