Parametry serwera w usłudze Azure Database for PostgreSQL — serwer elastyczny

DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny

Usługa Azure Database for PostgreSQL udostępnia podzestaw konfigurowalnych parametrów dla każdego serwera. Aby uzyskać więcej informacji na temat parametrów bazy danych Postgres, zobacz dokumentację bazy danych PostgreSQL.

Typy parametrów

Usługa Azure Database for PostgreSQL — serwer elastyczny jest wstępnie skonfigurowany z optymalnymi ustawieniami domyślnymi dla każdego parametru. Parametry są podzielone na jeden z następujących typów:

  • Statyczne: Te parametry wymagają ponownego uruchomienia serwera w celu zaimplementowania wszelkich zmian.
  • Dynamiczny: te parametry można zmienić bez konieczności ponownego uruchamiania wystąpienia serwera. Jednak zmiany będą stosowane tylko do nowych połączeń ustanowionych po modyfikacji.
  • Tylko do odczytu: te parametry nie są konfigurowalne ze względu na ich krytyczną rolę w utrzymaniu niezawodności, bezpieczeństwa lub innych aspektów operacyjnych usługi.

Aby określić typ parametru, przejdź do witryny Azure Portal i otwórz okienko Parametry serwera. Parametry są pogrupowane na karty w celu łatwej identyfikacji.

Dostosowywanie parametrów

Różne metody i poziomy są dostępne do dostosowywania parametrów zgodnie z konkretnymi potrzebami.

Poziom globalny

Aby zmienić ustawienia globalnie na poziomie wystąpienia lub serwera, przejdź do okienka Parametry serwera w witrynie Azure Portal. Możesz również użyć innych dostępnych narzędzi, takich jak interfejs wiersza polecenia platformy Azure, interfejs API REST, szablony usługi Azure Resource Manager lub narzędzia partnerskie.

Uwaga

Ponieważ usługa Azure Database for PostgreSQL jest zarządzaną usługą bazy danych, użytkownicy nie mają dostępu do hosta ani systemu operacyjnego, aby wyświetlić lub zmodyfikować pliki konfiguracji, takie jak postgresql.conf. Zawartość plików jest automatycznie aktualizowana w oparciu o wprowadzone zmiany parametrów.

Zrzut ekranu przedstawiający okienko parametrów serwera w witrynie Azure Portal.

Poziomy szczegółowe

Parametry można dostosować na bardziej szczegółowych poziomach. Te korekty zastępują globalnie ustawione wartości. Ich zakres i czas trwania zależą od poziomu, na którym je ustawisz:

  • Poziom bazy danych: użyj ALTER DATABASE polecenia dla konfiguracji specyficznych dla bazy danych.

  • Poziom roli lub użytkownika: użyj ALTER USER polecenia dla ustawień skoncentrowanych na użytkowniku.

  • Funkcja, poziom procedury: podczas definiowania funkcji lub procedury można określić lub zmienić parametry konfiguracji, które zostaną ustawione po wywołaniu funkcji.

  • Poziom tabeli: na przykład można modyfikować parametry związane z automatycznym czyszczeniem na tym poziomie.

  • Poziom sesji: na czas trwania pojedynczej sesji bazy danych można dostosować określone parametry. Baza danych PostgreSQL ułatwia to dostosowanie za pomocą następujących poleceń SQL:

    • Użyj polecenia , SET aby wprowadzić korekty specyficzne dla sesji. Te zmiany służą jako ustawienia domyślne podczas bieżącej sesji. Dostęp do tych zmian może wymagać określonych SET uprawnień, a ograniczenia dotyczące parametrów modyfikowalnych i tylko do odczytu opisanych wcześniej nie mają zastosowania. Odpowiadająca mu funkcja SQL to set_config(setting_name, new_value, is_local).
    • Użyj polecenia , SHOW aby sprawdzić istniejące ustawienia parametrów. Jej odpowiednik funkcji SQL to current_setting(setting_name text).

Ważne parametry

W poniższych sekcjach opisano niektóre parametry.

shared_buffers

Atrybut Wartość
Domyślna wartość 25% całkowitej pamięci RAM
Dozwolona wartość 10–75% całkowitej pamięci RAM
Typ Static
Poziom Globalnie
Uwagi specyficzne dla platformy Azure Ustawienie shared_buffers jest skalowane liniowo (w przybliżeniu) w miarę wzrostu liczby rdzeni wirtualnych w warstwie.

opis

Parametr shared_buffers konfiguracji określa ilość pamięci systemowej przydzielonej do bazy danych PostgreSQL na potrzeby buforowania danych. Służy jako scentralizowana pula pamięci, która jest dostępna dla wszystkich procesów bazy danych.

Gdy dane są potrzebne, proces bazy danych najpierw sprawdza udostępniony bufor. Jeśli wymagane dane są obecne, są szybko pobierane i pomijają bardziej czasochłonny odczyt dysku. Pełniąc rolę pośrednika między procesami bazy danych a dyskiem, shared_buffers skutecznie zmniejsza liczbę wymaganych operacji we/wy.

huge_pages

Atrybut Wartość
Domyślna wartość TRY
Dozwolona wartość TRY, , ONOFF
Typ Static
Poziom Globalnie
Uwagi specyficzne dla platformy Azure W przypadku serwerów z co najmniej czterema rdzeniami wirtualnymi ogromne strony są automatycznie przydzielane z bazowego systemu operacyjnego. Ta funkcja nie jest dostępna dla serwerów z mniej niż czterema rdzeniami wirtualnymi. Liczba ogromnych stron jest automatycznie dostosowywana w przypadku zmiany ustawień pamięci udostępnionej, w tym zmian w pliku shared_buffers.

opis

Ogromne strony to funkcja umożliwiająca zarządzanie pamięcią w większych blokach. Zazwyczaj można zarządzać blokami o maksymalnie 2 MB, a nie standardowymi stronami 4 KB.

Korzystanie z ogromnych stron może oferować zalety wydajności, które skutecznie odciążają procesor CPU:

  • Zmniejszają one obciążenie związane z zadaniami zarządzania pamięcią, takimi jak mniejsza liczba pominiętych buforów wyszukiwania tłumaczenia (TLB).
  • Skracają czas potrzebny do zarządzania pamięcią.

W szczególności w usłudze PostgreSQL można używać ogromnych stron tylko dla obszaru pamięci udostępnionej. Znaczna część obszaru pamięci udostępnionej jest przydzielana dla buforów udostępnionych.

Kolejną zaletą jest to, że ogromne strony uniemożliwiają zamianę obszaru pamięci udostępnionej na dysk, co dodatkowo stabilizuje wydajność.

Zalecenia

  • W przypadku serwerów, które mają znaczne zasoby pamięci, należy unikać wyłączania ogromnych stron. Wyłączenie ogromnych stron może naruszyć wydajność.
  • Jeśli zaczniesz od mniejszego serwera, który nie obsługuje ogromnych stron, ale przewidujesz skalowanie w górę do serwera, który to robi, zachowaj huge_pages ustawienie na TRY potrzeby bezproblemowego przejścia i optymalnej wydajności.

work_mem

Atrybut Wartość
Domyślna wartość 4MB
Dozwolona wartość 4MB-2GB
Typ Dynamiczny
Poziom Globalny i szczegółowy

opis

Parametr work_mem w usłudze PostgreSQL kontroluje ilość pamięci przydzielonej dla niektórych operacji wewnętrznych w obszarze pamięci prywatnej sesji każdej sesji bazy danych. Przykłady tych operacji to sortowanie i skróty.

W przeciwieństwie do buforów udostępnionych, które znajdują się w obszarze pamięci udostępnionej, work_mem jest przydzielane w przestrzeni pamięci prywatnej na sesję lub na zapytanie. Ustawiając odpowiedni work_mem rozmiar, można znacznie zwiększyć wydajność tych operacji i zmniejszyć konieczność zapisywania danych tymczasowych na dysku.

Kwestie kluczowe

  • Pamięć połączenia prywatnego: work_mem jest częścią pamięci prywatnej używanej przez każdą sesję bazy danych. Ta pamięć różni się od używanego obszaru shared_buffers pamięci udostępnionej.
  • Użycie specyficzne dla zapytania: nie wszystkie sesje lub zapytania używają polecenia work_mem. Proste zapytania, takie jak SELECT 1 , są mało prawdopodobne, aby wymagać work_mem. Jednak złożone zapytania obejmujące operacje, takie jak sortowanie lub tworzenie skrótów, mogą używać jednego lub wielu fragmentów elementu work_mem.
  • Operacje równoległe: w przypadku zapytań obejmujących wiele równoległych zapleczy każde zaplecze może potencjalnie używać jednego lub wielu fragmentów elementu work_mem.

Monitorowanie i dostosowywanie work_mem

Ważne jest, aby stale monitorować wydajność systemu i dostosowywać work_mem je odpowiednio do potrzeb, przede wszystkim wtedy, gdy czasy wykonywania zapytań związane z sortowaniem lub operacjami tworzenia skrótów są powolne. Poniżej przedstawiono sposoby monitorowania wydajności przy użyciu narzędzi dostępnych w witrynie Azure Portal:

  • Szczegółowe informacje o wydajności zapytań: sprawdź kartę Najważniejsze zapytania według plików tymczasowych, aby zidentyfikować zapytania generujące pliki tymczasowe. Taka sytuacja sugeruje potencjalną potrzebę zwiększenia work_mem.
  • Przewodniki rozwiązywania problemów: użyj karty Wysokie pliki tymczasowe w przewodnikach rozwiązywania problemów, aby zidentyfikować problematyczne zapytania.
Szczegółowe dostosowanie

Chociaż zarządzasz parametrem work_mem , często wydajniejsze jest wdrożenie podejścia do szczegółowego dostosowania, a nie ustawienia wartości globalnej. Takie podejście zapewnia przydzielenie pamięci w sposób rozsądny na podstawie konkretnych potrzeb procesów i użytkowników. Minimalizuje również ryzyko wystąpienia problemów z brakiem pamięci. Oto jak to zrobić:

  • Poziom użytkownika: jeśli określony użytkownik jest głównie zaangażowany w zadania agregacji lub raportowania, które intensywnie korzystają z pamięci, rozważ dostosowanie work_mem wartości dla tego użytkownika. ALTER ROLE Użyj polecenia , aby zwiększyć wydajność operacji użytkownika.

  • Poziom funkcji/procedury: Jeśli określone funkcje lub procedury generują znaczne pliki tymczasowe, zwiększenie work_mem wartości na poziomie określonej funkcji lub procedury może być korzystne. ALTER FUNCTION Użyj polecenia lubALTER PROCEDURE, aby w szczególności przydzielić więcej pamięci do tych operacji.

  • Poziom bazy danych: zmień work_mem na poziomie bazy danych, jeśli tylko określone bazy danych generują dużą liczbę plików tymczasowych.

  • Poziom globalny: Jeśli analiza systemu ujawnia, że większość zapytań generuje małe pliki tymczasowe, podczas gdy tylko kilka tworzy duże pliki, rozsądne może być globalne zwiększenie work_mem wartości. Ta akcja ułatwia przetwarzanie większości zapytań w pamięci, dzięki czemu można uniknąć operacji opartych na dyskach i zwiększyć wydajność. Należy jednak zawsze zachować ostrożność i monitorować wykorzystanie pamięci na serwerze, aby zapewnić obsługę zwiększonej work_mem wartości.

Określanie minimalnej wartości work_mem dla operacji sortowania

Aby znaleźć minimalną work_mem wartość dla określonego zapytania, zwłaszcza taką, która generuje pliki dysku tymczasowego podczas procesu sortowania, zacznij od rozważenia tymczasowego rozmiaru pliku wygenerowanego podczas wykonywania zapytania. Jeśli na przykład zapytanie generuje plik tymczasowy o rozmiarze 20 MB:

  1. Połączenie do bazy danych przy użyciu narzędzia psql lub preferowanego klienta PostgreSQL.
  2. Ustaw wartość początkową work_mem nieco większą niż 20 MB, aby uwzględnić dodatkowe nagłówki podczas przetwarzania w pamięci. Użyj polecenia, takiego jak: SET work_mem TO '25MB'.
  3. Uruchom EXPLAIN ANALYZE na problematycznym zapytaniu w tej samej sesji.
  4. Przejrzyj dane wyjściowe dla elementu "Sort Method: quicksort Memory: xkB". Jeśli wskazuje "external merge Disk: xkB"wartość , zwiększ wartość przyrostowo i ponownie przetestuj work_mem , dopóki "quicksort Memory" nie zostanie wyświetlona. Wygląd sygnałów "quicksort Memory" , że zapytanie działa teraz w pamięci.
  5. Po określeniu wartości za pomocą tej metody można ją zastosować globalnie lub na bardziej szczegółowych poziomach (zgodnie z wcześniejszym opisem) zgodnie z potrzebami operacyjnymi.

maintenance_work_mem

Atrybut Wartość
Domyślna wartość Zależne od pamięci serwera
Dozwolona wartość 1MB-2GB
Typ Dynamiczny
Poziom Globalny i szczegółowy

opis

maintenance_work_mem to parametr konfiguracji w usłudze PostgreSQL. Zarządza ilością pamięci przydzielonej do operacji konserwacji, takich jak VACUUM, CREATE INDEXi ALTER TABLE. W przeciwieństwie do work_memmetody , która ma wpływ na alokację pamięci dla operacji zapytań, maintenance_work_mem jest zarezerwowana dla zadań, które utrzymują i optymalizują strukturę bazy danych.

Kwestie kluczowe

  • Limit pamięci próżniowej: jeśli chcesz przyspieszyć czyszczenie martwych krotki przez zwiększenie maintenance_work_memwartości , należy pamiętać, że VACUUM ma wbudowane ograniczenie dotyczące zbierania martwych identyfikatorów krotki. W tym procesie może być używane tylko do 1 GB pamięci.
  • Separacja pamięci dla automatycznego czyszczenia: możesz użyć autovacuum_work_mem ustawienia , aby kontrolować pamięć, która automatycznie używa operacji czyszczenia niezależnie. To ustawienie działa jako podzbiór .maintenance_work_mem Możesz zdecydować, ile jest używanych automatycznego czyszczenia pamięci bez wpływu na alokację pamięci dla innych zadań konserwacji i operacji definicji danych.

Następne kroki

Aby uzyskać informacje na temat obsługiwanych rozszerzeń PostgreSQL, zobacz Rozszerzenia PostgreSQL w usłudze Azure Database for PostgreSQL — serwer elastyczny.