Vysvětlení zpracování připojení
Postgres používá model připojení založený na procesu. Vytvoření připojení zahrnuje operační systém a přidělení malého množství paměti. Každý dotaz SQL se spustí pomocí aktuálního připojení.
Stavy připojení
Připojení může být v jednom ze čtyř stavů:
- aktivní – aktivní připojení, která aktuálně spouští dotazy.
- nečinný – otevřená připojení, která se nepoužívají.
- nečinný v transakci – připojení čeká, neprovádí žádnou práci. Pomocí pg_stat_activity zjistěte, co připojení dělá a jak dlouho je v tomto stavu.
- nečinnosti v transakce (přerušeno) – připojení, která byla dříve nečinná v transakčním, ale nyní jsou přerušena.
Model připojení založený na procesu ztěžuje údržbu mnoha nečinných připojení.
Maximální počet připojení
PostgreSQL omezuje maximální počet souběžných připojení k serveru najednou pomocí parametru serveru s názvem max_connections. Ve službě Azure Database for PostgreSQL závisí výchozí hodnota na vaší úrovni výpočetních prostředků. Povolená hodnota je mezi 25 a 5000.
Místní implementace PostgreSQL si vyhrazuje některá připojení pro superuživatele, aby zachovala integritu databáze. Tato rezervace by obvykle byla 15% hodnoty max_connections.
Azure Database for PostgreSQL je spravované řešení a automaticky si vyhrazuje tři připojení pro monitorování flexibilního serveru.
Poznámka
Neexistuje žádný parametr serveru pro správu superuser_reserved_connections ve službě Azure Database for PostgreSQL.
Sdružování připojení
Klientské aplikace, které často otevírají a ukončují připojení, můžou zaznamenat latenci připojení, což vede k nižším transakcím za sekundu a celkové vyšší latenci aplikace.
Azure Database for PostgreSQL místo častého otevírání a zavírání připojení doporučuje sdružování připojení. Sdružování připojení znovu používá existující připojení místo zavření a opětovného vytváření připojení. Tento proces snižuje latenci připojení a umožňuje vyšší databázové transakce za sekundu pro databáze na serveru.
Sdružování připojení vytvoří pevnou sadu připojení při spuštění serveru a tato připojení se pak zachovají. Sdružování připojení také pomáhá snížit fragmentaci paměti způsobenou neustále vytvářenými novými připojeními na serveru.
PGBouncer
je řešení sdružování připojení, které je integrované ve službě Azure Database for PostgreSQL. Povolení nástroje pgBouncer:
- Na webu Azure Portal přejděte na server Azure Database for PostgreSQL.
- V nabídce vlevo vyberte Parametry serveru.
- Na panelu hledání vyhledejte pgBouncer.
- Nastavte pgbouncer.enabled na hodnotu true, abyste povolili PgBouncer. Toto nastavení nevyžaduje restartování serveru.
- Nastavte pgbouncer.default_pool_size na počet připojení na dvojici uživatele nebo databáze, kterou potřebujete. Výchozí hodnota je 50.
- Nastavte parametr pgBouncer.pool_mode na TRANSACTION.
Poznámka
PgBouncer je podporován na výpočetních úrovních pro obecné účely a optimalizováno pro paměť v sítích veřejného přístupu i privátního přístupu. PgBouncer není podporován na úrovni výpočetních prostředků s možností nárazového škálování. Když se úroveň výpočetních prostředků změní z General Purpose nebo Memory Optimized na Burstable, schopnost PGBouncer je ztracena.