Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano parametry adaptive_autovacuum, obsługiwane przez usługę Azure Database for PostgreSQL — serwer elastyczny:
-
adaptive_autovacuum.optimize_configurations: umożliwia automatyczne dostrajanie zestawu ustawień autovacuum. -
adaptive_autovacuum.open_transaction_threshold: ustawia próg wieku w sekundach, aby wykryć i ograniczyć stare przygotowane transakcje.
Jak działa każdy parametr
adaptive_autovacuum.optimize_configurations
Po ustawieniu tego parametru na wartość on usługa dostrajania okresowo:
- Zbiera i agreguje sygnały obciążenia oraz statystyk tabel.
- Ocenia przepływy pracy reguł.
- Oblicza proponowane aktualizacje parametrów autovacuum.
- Stosuje aktualizacje i ponownie ładuje konfigurację silnika.
- Zapisuje wpisy inspekcji.
Jeśli nie zostaną spełnione żadne warunki reguły, przebieg może zakończyć się bez wprowadzania zmian.
Bieżące parametry dostrajania:
autovacuum_vacuum_cost_limitautovacuum_vacuum_thresholdautovacuum_vacuum_scale_factorautovacuum_vacuum_cost_delayautovacuum_analyze_scale_factor
Note
- Jeśli ustawisz
autovacuum_vacuum_cost_limitna -1, logika jest wyprowadzana zvacuum_cost_limit. - Usługa dostrajania używa
autovacuum_freeze_max_agejako sygnału wejściowego, ale nie dostraja go bezpośrednio.
Widoczność i działanie nadpisywania dla dostrojonych parametrów
Gdy ta funkcja zmieni dowolny z pięciu parametrów docelowych (autovacuum_vacuum_cost_limit, autovacuum_vacuum_threshold, , autovacuum_vacuum_scale_factorautovacuum_vacuum_cost_delay, autovacuum_analyze_scale_factor):
- Punkt końcowy Configurations płaszczyzny sterowania (na przykład interfejs API GET Configurations lub grupa poleceń CLI
az postgres flexible-server parameter) nie wyświetla tych efektywnych zmian środowiska uruchomieniowego. - Aby wyświetlić obowiązujące wartości, użyj zapytań płaszczyzny danych względem punktu końcowego PostgreSQL (na przykład
SHOW <guc_name>lubSELECT name, setting FROM pg_settings WHERE name IN (...)).
Semantyka nadpisania przez użytkownika:
- Dowolne z tych pięciu parametrów można ustawić bezpośrednio za pośrednictwem portalu, interfejsu API REST, interfejsu wiersza polecenia lub dowolnego z obsługiwanych zestawów SDK.
- Jeśli ustawisz parametr na tę samą wartość, którą obecnie zwraca punkt końcowy konfiguracji płaszczyzny sterowania, operacja jest traktowana jako no-op i nie zostanie zastosowana żadna nowa efektywna zmiana.
- Wartości ustawione przez użytkownika zastępują wartości ustawione przez funkcję w chwili ich zastosowania.
- Jeśli
adaptive_autovacuum.optimize_configurationspozostanie włączone, kolejne iteracje dostrajania mogą ponownie zastosować nowe wartości na podstawie oceny reguły.
adaptive_autovacuum.open_transaction_threshold
Ten parametr steruje ograniczeniem ryzyka przygotowanych transakcji oddzielonych:
- Wartość 0 oznacza wyłączoną.
- Wartość większa niż 0 oznacza, że funkcja jest włączona, a próg jest podany w sekundach.
Po włączeniu, jeśli najstarsza przygotowana transakcja przekroczy próg, program obsługi oddzielonych transakcji ocenia uprawnienia i może wycofać stare przygotowane transakcje. Moduł obsługi aktualizuje próg przechowywany w pamięci przy zmianach parametrów, więc jego działanie jest zgodne z najnowszą wartością.
Ważny szczegół dotyczący czasu:
- Funkcja najpierw określa najstarszy przygotowany znacznik czasu transakcji.
- To wykrywanie jest oparte na sondach, a nie ciągłe.
- Sondowanie odbywa się co 1,800 sekund (czyli co 30 minut), więc działania zaradcze mogą się rozpocząć dopiero po tym, jak sondowanie wykryje odpowiednio starą przygotowaną transakcję.
Zachowanie środowiska uruchomieniowego i harmonogramowania
-
optimize_configurationsCykl dostrajania jest co 30 minut. - Po włączeniu opcji
optimize_configurationsuruchamia się natychmiast proces dostrajania, a następnie odbywają się kolejne zaplanowane uruchomienia. - Obsługa
open_transaction_thresholdjest sterowana zdarzeniami na podstawie obserwacji przygotowanych transakcji. Środki zaradcze są uruchamiane tylko wtedy, gdy kontrole wieku przekraczają próg. - Obserwacja przygotowanej transakcji dla
open_transaction_thresholdjest odświeżana co 300 sekund.
Kiedy po włączeniu tworzony jest intelligentperformance schemat?
Schemat intelligentperformance jest tworzony w bazie azure_sys danych. Jego utworzenie nie następuje od razu; odpowiada za nie funkcjonalność zapisująca statystyki używane przez adaptacyjne autovacuum, a nie samo początkowe uruchomienie dostrajania. Zazwyczaj schemat jest tworzony w ciągu 0–30 minut po włączeniu funkcji.
Możesz włączyć adaptacyjne automatyczne odkurzanie, ustawiając adaptive_autovacuum.optimize_configurations na on lub konfigurując adaptive_autovacuum.open_transaction_threshold na wartość różną od zera (czyli > 0). Schemat jest tworzony po aktywowaniu funkcji i rozpoczyna zbieranie wymaganych statystyk.
Tworzenie może zostać opóźnione lub pominięte, jeśli nie zostaną spełnione pewne wymagania wstępne.
Ograniczenia i wymagania wstępne
Oba mechanizmy kontroli podlegają następującym wymaganiom:
- Instancja musi być instancją główną.
- Usługa PostgreSQL nie jest w trybie odzyskiwania.
- Zasoby obliczeniowe serwera obejmują co najmniej 4 rdzenie wirtualne.
- Serwer jest zwykłym serwerem elastycznym, a nie klastrem elastycznym. Ta funkcja nie jest obsługiwana w klastrach elastycznych.
-
adaptive_autovacuum.optimize_configurationsjest obsługiwane w głównych wersjach 14 i nowszych. -
adaptive_autovacuum.open_transaction_thresholdjest obsługiwane w głównych wersjach 13 i nowszych.
Inspekcja i obserwowanie
System rejestruje akcje obu kontrolek w widoku inspekcji o nazwie intelligentperformance.adaptive_tuning_events.
Schemat widoku
Oczekiwany kształt logiczny:
- intelligentperformance.adaptive_tuning_events
- szczegóły wydarzenia
- optimizer_type
- applied_at
Wykonywanie zapytań dotyczących ostatnich działań
Aby wykonywać zapytania dotyczące ostatnich działań, użyj następujących zapytań:
SELECT
applied_at,
optimizer_type,
event_details
FROM intelligentperformance.adaptive_tuning_events
ORDER BY applied_at DESC
LIMIT 100;
SELECT
optimizer_type,
COUNT(*) AS events
FROM intelligentperformance.adaptive_tuning_events
WHERE applied_at >= now() - interval '7 days'
GROUP BY optimizer_type
ORDER BY events DESC;
Typy zdarzeń i interpretacja
Kolumna optimizer_type wskazuje źródło akcji.
zmieniono_konfigurację_adaptacyjnego_autovacuum
Źródło:
-
optimize_configurationsścieżka dostrajania.
Kształt ładunku:
- Tablica JSON rekordów zmiany parametrów, zazwyczaj w tym:
- server_parameter_name
- poprzednia_wartość
- zaktualizowana_dostrojona_wartość
Interpretacja:
- Wskazuje, że dostrajanie funkcji autovacuum zmieniło ustawienia serwera.
- Pozytywne, gdy kolejne metryki obciążenia wskazują poprawę (presja związana z martwymi krotkami, częstotliwość odkurzania, opóźnienia, CPU/WE/WY).
- Potencjalnie ujemne, gdy zmiany są częste i oscylacyjne i następują regresje.
SELECT
applied_at,
elem->>'server_parameter_name' AS parameter_name,
elem->>'previous_value' AS previous_value,
elem->>'updated_tuned_value' AS updated_value
FROM intelligentperformance.adaptive_tuning_events e
CROSS JOIN LATERAL jsonb_array_elements(e.event_details) AS elem
WHERE e.optimizer_type = 'adaptive_autovacuum_configuration_changed'
ORDER BY applied_at DESC;
wycofanie osieroconej transakcji
Źródło:
-
open_transaction_thresholdścieżka łagodzenia.
Kształt ładunku:
- Obiekt JSON z kluczami będącymi nazwami baz danych, zawierający szczegóły wyniku wycofania (na przykład informacje o próbach i pomyślnych wycofaniach GID).
{
"<example-database-name>": {
"Timestamp": "2026-03-22T18:20:22.0000000Z",
"RollbackGids": ["<example-global-identifier-one>", "<example-global-identifier-two>"],
"OperationSuccessful": true
}
}
Interpretacja:
- Wskazuje, że przygotowane transakcje zostały przymusowo wycofane po przekroczeniu progu.
- Sporadyczne zachowania mogą stanowić zdrowe zachowania ochronne.
- Częste zdarzenia zwykle wskazują problemy z cyklem życia transakcji aplikacji, które należy zbadać.
SELECT
applied_at,
jsonb_pretty(event_details) AS rollback_details
FROM intelligentperformance.adaptive_tuning_events
WHERE optimizer_type = 'orphan_transaction_rollback'
ORDER BY applied_at DESC
LIMIT 50;
Określanie, czy wpływ jest pozytywny, czy negatywny
Dla optimize_configurations:
- Zidentyfikuj znaczniki czasu zmian z
adaptive_autovacuum_configuration_changed. - Porównaj okna 30-, 60-, 90- i 120-minutowe po zmianie pod kątem liczby martwych krotek, częstotliwości wykonywania VACUUM/ANALYZE, opóźnień oraz użycia CPU i operacji we/wy.
Dla open_transaction_threshold:
- Zidentyfikuj zdarzenia
orphan_transaction_rollback. - Sprawdź, czy częstotliwość wycofań jest niska i czy się stabilizuje.
- Zbadaj zachowanie aplikacji, jeśli zdarzenia wycofywania są trwałe.
SELECT
applied_at,
optimizer_type,
event_details
FROM intelligentperformance.adaptive_tuning_events
WHERE applied_at >= now() - interval '7 days'
ORDER BY applied_at DESC;
Retencja i porządkowanie
Mechanizm porządkowania usuwa starsze wpisy z magazynu audytu, stosując stały, niekonfigurowalny okres przechowywania wynoszący 90 dni.
Do długoterminowej analizy trendów wyeksportuj wiersze audytu do własnego magazynu danych obserwowalności.