Inzicht in de verwerking van verbindingen

Voltooid

Postgres maakt gebruik van een op processen gebaseerd verbindingsmodel. Het tot stand brengen van een verbinding omvat het besturingssysteem en de toewijzing van een kleine hoeveelheid geheugen. Elke SQL-query wordt uitgevoerd met behulp van een huidige verbinding.

Verbinding maken ionstatussen

Een verbinding kan een van de volgende vier statussen hebben:

  • actief - actieve verbindingen, die momenteel query's uitvoeren.
  • niet actief: open verbindingen die niet in gebruik zijn.
  • niet actief in transactie : een verbinding die wacht, geen werk doet. Gebruik pg_stat_activity om te begrijpen wat een verbinding doet en hoe lang deze status heeft.
  • niet-actief in transactie (afgebroken) - verbindingen die eerder inactief waren in transactie , maar nu worden afgebroken.

Het procesgebaseerde verbindingsmodel maakt het duur om veel niet-actieve verbindingen te onderhouden.

Maximum aantal verbindingen

PostgreSQL beperkt het maximum aantal gelijktijdige verbindingen met de server op elk gewenst moment met behulp van een serverparameter met de naam max_connections. In Azure Database for PostgreSQL is de standaardwaarde afhankelijk van uw rekenlaag. De toegestane waarde ligt tussen 25 en 5000.

Een on-premises implementatie van PostgreSQL reserveert enkele verbindingen voor de supergebruiker om de integriteit van de database te behouden. Deze reservering is doorgaans 15% van de max_connections waarde.

Azure Database for PostgreSQL is een beheerde oplossing en reserveert automatisch drie verbindingen om een flexibele server te bewaken.

Notitie

Er is geen serverparameter voor het beheren van superuser_reserved_connections in Azure Database for PostgreSQL.

Groepsgewijze verbinding

Clienttoepassingen die vaak verbindingen openen en sluiten, kunnen verbindingslatentie ervaren, wat resulteert in lagere transacties per seconde en algehele hogere toepassingslatentie.

Azure Database for PostgreSQL raadt verbindingspooling aan in plaats van vaak verbindingen te openen en te sluiten. Verbinding maken groepering gebruikt bestaande verbindingen opnieuw in plaats van verbindingen te sluiten en opnieuw te maken. Dit proces vermindert de verbindingslatentie en maakt hogere databasetransacties per seconde mogelijk voor databases op de server.

Verbinding maken groepering brengt een vaste set verbindingen tot stand wanneer de server wordt gestart en worden deze verbindingen vervolgens onderhouden. Verbinding maken ion-pooling helpt ook de geheugenfragmentatie te verminderen die wordt veroorzaakt door nieuwe verbindingen die voortdurend op de server worden gemaakt.

PGBouncer is een oplossing voor groepsgewijze verbindingen die is ingebouwd in Azure Database for PostgreSQL. PgBouncer inschakelen:

  1. Navigeer in Azure Portal naar uw Azure Database for PostgreSQL-server.
  2. Selecteer Serverparameters in het linkermenu.
  3. Zoek in de zoekbalk naar PgBouncer.
  4. Stel de instelling pgbouncer.enabled in op true om PgBouncer in te schakelen. Deze instelling vereist geen herstart van de server.
  5. Stel pgbouncer.default_pool_size in op het aantal verbindingen per gebruiker/databasepaar dat u nodig hebt. De standaardwaarde is 50.
  6. Stel de parameter pgBouncer.pool_mode in op TRANSACTION.

Notitie

PgBouncer wordt ondersteund in de rekenlagen Algemeen gebruik en Geoptimaliseerd voor geheugen in zowel openbare toegang als particuliere toegangsnetwerken. PgBouncer wordt niet ondersteund in de Burstable-rekenlaag. Wanneer de rekenlaag wordt gewijzigd van Algemeen gebruik of Geoptimaliseerd voor geheugen naar Burstable, gaat de PGBouncer-functie verloren.