Omówienie obsługi połączeń
Usługa Postgres używa modelu połączenia opartego na procesie. Nawiązywanie połączenia obejmuje system operacyjny i alokację niewielkiej ilości pamięci. Każde zapytanie SQL jest wykonywane przy użyciu bieżącego połączenia.
Stany Połączenie ion
Połączenie może znajdować się w jednym z czterech stanów:
- aktywne — aktywne połączenia, które obecnie uruchamiają zapytania.
- bezczynność — otwarte połączenia, które nie są używane.
- bezczynność w transakcji — oczekiwanie na połączenie, a nie wykonywanie żadnej pracy. Użyj pg_stat_activity , aby zrozumieć, co robi połączenie i jak długo jest w tym stanie.
- bezczynność transakcji (przerwana) — połączenia, które były wcześniej bezczynne w transakcji , ale są teraz przerywane.
Model połączenia oparty na procesie sprawia, że utrzymanie wielu bezczynnych połączeń jest kosztowne.
Maksymalna liczba połączeń
Usługa PostgreSQL ogranicza maksymalną liczbę równoczesnych połączeń z serwerem w dowolnym momencie przy użyciu parametru serwera o nazwie max_connections. W usłudze Azure Database for PostgreSQL wartość domyślna zależy od warstwy obliczeniowej. Dozwolona wartość to od 25 do 5000.
Lokalna implementacja bazy danych PostgreSQL rezerwuje niektóre połączenia dla administratora w celu zachowania integralności bazy danych. Ta rezerwacja zazwyczaj wynosi 15% wartości max_connections .
Usługa Azure Database for PostgreSQL jest rozwiązaniem zarządzanym i automatycznie rezerwuje trzy połączenia w celu monitorowania serwera elastycznego.
Uwaga
Brak parametru serwera do zarządzania superuser_reserved_connections w usłudze Azure Database for PostgreSQL.
Buforowanie połączeń
Aplikacje klienckie, które często otwierają i zamykają połączenia, mogą doświadczać opóźnienia połączeń, co skutkuje niższymi transakcjami na sekundę i ogólnym większym opóźnieniem aplikacji.
Usługa Azure Database for PostgreSQL zaleca buforowanie połączeń zamiast częstego otwierania i zamykania połączeń. Połączenie ion puli ponownie używa istniejących połączeń, a nie zamykania i ponownego tworzenia połączeń. Ten proces zmniejsza opóźnienie połączenia i umożliwia większe transakcje bazy danych na sekundę dla baz danych na serwerze.
Połączenie puliion ustanawia stały zestaw połączeń podczas uruchamiania serwera, a następnie są utrzymywane. buforowanie Połączenie ion pomaga również zmniejszyć fragmentację pamięci spowodowane przez ciągłe tworzenie nowych połączeń na serwerze.
PGBouncer
to rozwiązanie do buforowania połączeń wbudowane w usługę Azure Database for PostgreSQL. Aby włączyć narzędzie pgBouncer:
- W witrynie Azure Portal przejdź do serwera usługi Azure Database for PostgreSQL.
- W menu po lewej stronie wybierz pozycję Parametry serwera.
- Na pasku wyszukiwania wyszukaj ciąg PgBouncer.
- Ustaw ustawienie pgbouncer.enabled na wartość true, aby włączyć funkcję PgBouncer. To ustawienie nie wymaga ponownego uruchomienia serwera.
- Ustaw pgbouncer.default_pool_size na wymaganą liczbę połączeń na parę użytkowników/bazy danych. Wartość domyślna to 50.
- Ustaw parametr pgBouncer.pool_mode na TRANSACTION.
Uwaga
Narzędzie PgBouncer jest obsługiwane w warstwach obliczeniowych Ogólnego przeznaczenia i Zoptymalizowane pod kątem pamięci w sieciach dostępu publicznego i prywatnego. Narzędzie PgBouncer nie jest obsługiwane w warstwie obliczeniowej z możliwością serii. Gdy warstwa obliczeniowa zostanie zmieniona z warstwy Ogólnego przeznaczenia lub Zoptymalizowane pod kątem pamięci na możliwość serii, funkcja PGBouncer zostanie utracona.