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.
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ślonychSET
uprawnień, a ograniczenia dotyczące parametrów modyfikowalnych i tylko do odczytu opisanych wcześniej nie mają zastosowania. Odpowiadająca mu funkcja SQL toset_config(setting_name, new_value, is_local)
. - Użyj polecenia ,
SHOW
aby sprawdzić istniejące ustawienia parametrów. Jej odpowiednik funkcji SQL tocurrent_setting(setting_name text)
.
- Użyj polecenia ,
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 , , ON OFF |
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 naTRY
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 obszarushared_buffers
pamięci udostępnionej. - Użycie specyficzne dla zapytania: nie wszystkie sesje lub zapytania używają polecenia
work_mem
. Proste zapytania, takie jakSELECT 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 elementuwork_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ększonejwork_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:
- Połączenie do bazy danych przy użyciu narzędzia psql lub preferowanego klienta PostgreSQL.
- 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'
. - Uruchom
EXPLAIN ANALYZE
na problematycznym zapytaniu w tej samej sesji. - 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 przetestujwork_mem
, dopóki"quicksort Memory"
nie zostanie wyświetlona. Wygląd sygnałów"quicksort Memory"
, że zapytanie działa teraz w pamięci. - 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 INDEX
i ALTER TABLE
. W przeciwieństwie do work_mem
metody , 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_mem
wartości , należy pamiętać, żeVACUUM
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.