Zum Inhalt springen

Funktionen

PgBouncer-Funktionen — Pooling-Modi und SQL-Kompatibilität
  • Mehrere Pooling-Modi mit unterschiedlich restriktiver Verbindungszuweisung:

    Sitzungs-Pooling
    Die am wenigsten restriktive Methode. Wenn ein Client eine Verbindung herstellt, wird ihm für die gesamte Dauer der Clientverbindung eine Serververbindung zugewiesen. Trennt der Client die Verbindung, wird die Serververbindung wieder in den Pool zurückgegeben. Dieser Modus unterstützt sämtliche PostgreSQL-Funktionen.
    Transaktions-Pooling
    Eine Serververbindung wird einem Client nur für die Dauer einer Transaktion zugewiesen. Sobald PgBouncer erkennt, dass die Transaktion beendet ist, wird die Serververbindung wieder in den Pool zurückgegeben. Dieser Modus ist mit einigen sitzungsbezogenen Funktionen von PostgreSQL nicht kompatibel. Er kann nur eingesetzt werden, wenn die Anwendung darauf abgestimmt ist und keine inkompatiblen Funktionen verwendet. Die folgende Tabelle führt diese Funktionen auf.
    Statement-Pooling
    Die restriktivste Methode. Sie entspricht dem Transaktions-Pooling, lässt jedoch keine Transaktionen mit mehreren Anweisungen zu. Damit wird auf der Clientseite der „Autocommit“-Modus erzwungen; der Modus ist vor allem für PL/Proxy vorgesehen.
  • Geringer Speicherbedarf (standardmäßig 2 kB pro Verbindung), da PgBouncer vollständige Pakete nicht auf einmal einlesen muss.

  • PgBouncer ist nicht an einen einzelnen Backend-Server gebunden. Die Zieldatenbanken können sich auf unterschiedlichen Hosts befinden.

  • Unterstützt für die meisten Einstellungen eine Neukonfiguration im laufenden Betrieb.

  • Unterstützt Neustarts und Upgrades im laufenden Betrieb, ohne Clientverbindungen zu trennen.


SQL-Funktionsmatrix für Pooling-Modi

Die folgende Tabelle zeigt verschiedene PostgreSQL-Funktionen und ihre Kompatibilität mit den Pooling-Modi von PgBouncer. Beachten Sie, dass das Transaktions-Pooling das vom Client erwartete Serververhalten bewusst verändert. Es kann daher nur verwendet werden, wenn die Anwendung darauf abgestimmt ist und keine inkompatiblen Funktionen nutzt.

FunktionSitzungs-PoolingTransaktions-Pooling
Startparameter 1JaJa
SET/RESETJaNie
LISTENJaNie
NOTIFYJaJa
CURSOR WITHOUT HOLDJaJa
CURSOR WITH HOLDJaNie
Auf Protokollebene vorbereitete AnweisungenJaJa 2
PREPARE / DEALLOCATEJaNie
Temporäre Tabellen mit ON COMMIT DROPJaJa
Temporäre Tabellen mit PRESERVE/DELETE ROWSJaNie
Zurücksetzen zwischengespeicherter PläneJaJa
LOAD-AnweisungJaNie
Advisory Locks auf SitzungsebeneJaNie

  1. Zu den Startparametern gehören client_encoding, DateStyle, IntervalStyle, Timezone, standard_conforming_strings und application_name. PgBouncer erkennt Änderungen an diesen Parametern und kann so gewährleisten, dass sie für den Client konsistent bleiben. Wenn PgBouncer weitere Parameter unterstützen soll, lesen Sie die Beschreibungen von track_extra_parameters und ignore_startup_parameters . ↩︎

  2. Um diese Unterstützung zu aktivieren, müssen Sie max_prepared_statements auf einen Wert ungleich null setzen. ↩︎