Omówienie obsługi połączeń

Ukończone

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:

  1. W witrynie Azure Portal przejdź do serwera usługi Azure Database for PostgreSQL.
  2. W menu po lewej stronie wybierz pozycję Parametry serwera.
  3. Na pasku wyszukiwania wyszukaj ciąg PgBouncer.
  4. Ustaw ustawienie pgbouncer.enabled na wartość true, aby włączyć funkcję PgBouncer. To ustawienie nie wymaga ponownego uruchomienia serwera.
  5. Ustaw pgbouncer.default_pool_size na wymaganą liczbę połączeń na parę użytkowników/bazy danych. Wartość domyślna to 50.
  6. 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.