Förstå anslutningshantering
Postgres använder en processbaserad anslutningsmodell. Upprättandet av en anslutning omfattar operativsystemet och allokeringen av en liten mängd minne. Varje SQL-fråga körs med hjälp av en aktuell anslutning.
Anslut ionstillstånd
En anslutning kan vara i ett av fyra tillstånd:
- active – aktiva anslutningar som för närvarande kör frågor.
- idle – öppna anslutningar som inte används.
- inaktiv i transaktionen – en anslutning som väntar och inte utför något arbete. Använd pg_stat_activity för att förstå vad en anslutning gör och hur länge den är i det här tillståndet.
- inaktiv i transaktionen (avbröts) – anslutningar som tidigare var inaktiva i transaktionen men nu avbryts.
Den processbaserade anslutningsmodellen gör det dyrt att underhålla många inaktiva anslutningar.
Maximalt antal anslutningar
PostgreSQL begränsar det maximala antalet samtidiga anslutningar till servern samtidigt med hjälp av en serverparameter med namnet max_connections. I Azure Database for PostgreSQL beror standardinställningen på beräkningsnivån. Det tillåtna värdet är mellan 25 och 5 000.
En lokal implementering av PostgreSQL reserverar vissa anslutningar för superanvändaren för att upprätthålla databasens integritet. Den här reservationen skulle vanligtvis vara 15 % av det max_connections värdet.
Azure Database for PostgreSQL är en hanterad lösning och reserverar automatiskt tre anslutningar för att övervaka en flexibel server.
Kommentar
Det finns ingen serverparameter för att hantera superuser_reserved_connections i Azure Database for PostgreSQL.
Anslutningspooler
Klientprogram som ofta öppnar och stänger anslutningar kan uppleva anslutningsfördröjning, vilket resulterar i lägre transaktioner per sekund och generellt högre programfördröjning.
Azure Database for PostgreSQL rekommenderar anslutningspooler i stället för att ofta öppna och stänga anslutningar. Anslut jonpool återanvänder befintliga anslutningar i stället för att stänga och återskapa anslutningar. Den här processen minskar anslutningsfördröjningen och tillåter högre databastransaktioner per sekund för databaser på servern.
Anslut ion pooling upprättar en fast uppsättning anslutningar när servern startas, och dessa anslutningar underhålls sedan. Anslut ionspooler bidrar också till att minska minnesfragmenteringen som orsakas av att nya anslutningar ständigt skapas på servern.
PGBouncer
är en anslutningspoollösning som är inbyggd i Azure Database for PostgreSQL. Så här aktiverar du pgBouncer:
- Gå till Azure Database for PostgreSQL-servern i Azure-portalen.
- Välj Serverparametrar på den vänstra menyn.
- Sök efter PgBouncer i sökfältet.
- Ange inställningen pgbouncer.enabled till true för att aktivera PgBouncer. Den här inställningen kräver ingen omstart av servern.
- Ange pgbouncer.default_pool_size till det antal anslutningar per användar-/databaspar som du behöver. Standardvärdet är 50.
- Ange parametern pgBouncer.pool_mode till TRANSACTION.
Kommentar
PgBouncer stöds på beräkningsnivåer för generell användning och minnesoptimerad i både offentliga och privata åtkomstnätverk. PgBouncer stöds inte på beräkningsnivån Burstable. När beräkningsnivån ändras från Generell användning eller Minnesoptimerad till Burstable går PGBouncer-funktionen förlorad.