Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die von Azure Database for PostgreSQL – Flexibler Server unterstützten adaptive_autovacuum Parameter dokumentiert:
-
adaptive_autovacuum.optimize_configurations: Aktiviert die automatische Optimierung einer Reihe von Autovacuum-Einstellungen. -
adaptive_autovacuum.open_transaction_threshold: Legt den Altersschwellenwert in Sekunden fest, um alte vorbereitete Transaktionen zu erkennen und abzumildern.
Funktionsweise der einzelnen Parameter
adaptive_autovacuum.optimize_configurations
Wenn Sie diesen Parameter auf on setzen, führt der Optimierungsdienst regelmäßig Folgendes aus:
- Erfasst und aggregiert Arbeitsauslastungs- und Tabellenstatistiksignale.
- Wertet Regelworkflows aus.
- Berechnet mögliche Aktualisierungen der Autovacuum-Parameter.
- Wendet Aktualisierungen an und lädt die Engine-Konfiguration neu.
- Schreibt Auditprotokolleinträge.
Wenn keine Regelbedingungen erfüllt sind, kann ein Durchlauf ohne Änderungen enden.
Aktuelle tunbare Parameter:
autovacuum_vacuum_cost_limitautovacuum_vacuum_thresholdautovacuum_vacuum_scale_factorautovacuum_vacuum_cost_delayautovacuum_analyze_scale_factor
Note
- Wenn Sie
autovacuum_vacuum_cost_limitauf -1 setzen, wird die Logik ausvacuum_cost_limitabgeleitet. - Der Optimierungsdienst verwendet
autovacuum_freeze_max_ageals Eingabesignal, optimiert es jedoch nicht direkt.
Sichtbarkeits- und Außerkraftsetzungsverhalten für abgestimmte Parameter
Wenn dieses Feature einen der fünf Zielparameter ändert (autovacuum_vacuum_cost_limit, autovacuum_vacuum_threshold, , autovacuum_vacuum_scale_factor, autovacuum_vacuum_cost_delay): autovacuum_analyze_scale_factor
- Der Endpunkt "Konfigurationen" der Steuerungsebene (z. B. GET-Konfigurations-API oder
az postgres flexible-server parameterCLI-Befehlsgruppe) zeigt diese effektiven Laufzeitänderungen nicht an. - Um die effektiven Werte anzuzeigen, verwenden Sie Datenebenenabfragen für den PostgreSQL-Endpunkt (z. B.
SHOW <guc_name>oderSELECT name, setting FROM pg_settings WHERE name IN (...)).
Benutzerüberschreibungssemantik:
- Sie können jeden dieser fünf Parameter direkt über das Portal, die REST-API, die CLI oder eine der unterstützten SDKs festlegen.
- Wenn Sie einen Parameter auf denselben Wert festlegen, den der Endpunkt "Konfigurationen" der Steuerungsebene derzeit zurückgibt, wird der Vorgang als no-op behandelt, und es wird keine neue effektive Änderung angewendet.
- Vom Benutzer festgelegte Werte setzen die vom Feature angewendeten Werte zum Zeitpunkt der Anwendung außer Kraft.
- Wenn
adaptive_autovacuum.optimize_configurationssie aktiviert bleibt, können spätere Optimierungsiterationen neue Werte basierend auf der Regelauswertung erneut anwenden.
adaptive_autovacuum.open_transaction_threshold
Dieser Parameter steuert die Minderung von Problemen mit verwaisten vorbereiteten Transaktionen:
- 0 bedeutet deaktiviert.
- Ein Wert größer als 0 bedeutet, dass die Funktion mit einem Schwellenwert in Sekunden aktiviert ist.
Wenn diese Funktion aktiviert ist und die älteste vorbereitete Transaktion den Schwellenwert überschreitet, prüft der Handler für verwaiste Transaktionen, ob sie infrage kommen, und kann alte vorbereitete Transaktionen zurückrollen. Der Handler aktualisiert seinen Speicherschwellenwert bei Parameteränderungen, sodass das Verhalten auf den neuesten Wert folgt.
Wichtige Zeitangaben:
- Das Feature bestimmt zuerst den ältesten vorbereiteten Transaktionszeitstempel.
- Diese Erkennung ist umfragebasiert, nicht fortlaufend.
- Die Abfrage erfolgt alle 1.800 Sekunden (d. h. alle 30 Minuten), sodass eine Gegenmaßnahme erst eingeleitet werden kann, nachdem bei einer Abfrage eine vorbereitete Transaktion erkannt wurde, die alt genug ist.
Laufzeit- und Planungsverhalten
- Der Optimierungsrhythmus für
optimize_configurationsbeträgt 30 Minuten. - Wenn Sie
optimize_configurationsaktivieren, wird sofort ein Optimierungslauf gestartet, danach werden die geplanten Läufe weiterhin ausgeführt. - Die Behandlung von
open_transaction_thresholderfolgt ereignisgesteuert auf Grundlage von Beobachtungen vorbereiteter Transaktionen. Die Abhilfemaßnahme wird nur ausgeführt, wenn die Altersprüfungen den Schwellenwert überschreiten. - Die Beobachtung vorbereiteter Transaktionen für
open_transaction_thresholdwird alle 300 Sekunden aktualisiert.
Wann wird das intelligentperformance Schema nach dem Aktivieren erstellt?
Das intelligentperformance Schema wird unter der azure_sys Datenbank erstellt. Seine Erstellung erfolgt nicht unmittelbar, sondern durch die Funktionalität, die die vom adaptiven Autovacuum verwendeten Statistiken dauerhaft speichert, und nicht durch den ersten Tuning-Durchlauf selbst. Normalerweise wird das Schema innerhalb von 0 bis 30 Minuten nach dem Aktivieren des Features erstellt.
Sie können adaptives Autovacuum aktivieren, indem Sie adaptive_autovacuum.optimize_configurations auf on setzen oder indem Sie adaptive_autovacuum.open_transaction_threshold auf einen Wert ungleich null festlegen (d. h. > 0). Das Schema wird erstellt, sobald das Feature aktiv wird und mit der Erfassung der erforderlichen Statistiken beginnt.
Die Erstellung kann verzögert oder übersprungen werden, wenn bestimmte Voraussetzungen nicht erfüllt sind.
Einschränkungen und Voraussetzungen
Beide Steuerelemente unterliegen den folgenden Anforderungen:
- Die Instanz muss eine primäre Instanz sein.
- PostgreSQL befindet sich nicht im Wiederherstellungsmodus.
- Die Berechnung des Servers weist mindestens 4 vCores auf.
- Der Server ist ein normaler flexibler Server, kein elastischer Cluster. Das Feature wird für elastische Cluster nicht unterstützt.
-
adaptive_autovacuum.optimize_configurationswird für Hauptversionen unterstützt, die größer oder gleich 14 sind. -
adaptive_autovacuum.open_transaction_thresholdwird für Hauptversionen unterstützt, die größer oder gleich 13 sind.
Überwachung und Beobachtbarkeit
Das System zeichnet Aktionen aus beiden Steuerelementen in einer Überwachungsansicht mit dem Namen intelligentperformance.adaptive_tuning_eventsauf.
Schema der Ansicht
Erwartete logische Form:
- intelligentperformance.adaptive_tuning_events
- Veranstaltungsdetails
- optimizer_type
- applied_at
Abfrage nach der letzten Aktivität
Verwenden Sie zum Abfragen der letzten Aktivität die folgenden Abfragen:
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;
Ereignistypen und Interpretationen
Die optimizer_type Spalte gibt die Aktionsquelle an.
adaptive_autovacuum_configuration_changed
Quelle:
-
optimize_configurationsOptimierungspfad.
Nutzlastform:
- JSON-Array von Parameteränderungsdatensätzen, in der Regel einschließlich:
- server_parameter_name
- vorheriger_Wert
- aktualisierter_abgestimmter_Wert
Interpretation:
- Gibt an, dass das Autovacuum-Tuning die Servereinstellungen geändert hat.
- Positiv, wenn sich nachfolgende Workload-Metriken verbessern (Dead Tuple Pressure, Vacuum Cadence, Latenz, CPU/IO).
- Potenziell negativ, wenn Änderungen häufig und oszillierend sind und regressionen folgen.
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;
orphan_transaction_rollback
Quelle:
-
open_transaction_thresholdMitigationspfad.
Nutzlastform:
- JSON-Objekt mit Schlüsseln pro Datenbank und Details zum Rollback-Ergebnis (z. B. Informationen zu versuchten und erfolgreichen GID-Rollbacks).
{
"<example-database-name>": {
"Timestamp": "2026-03-22T18:20:22.0000000Z",
"RollbackGids": ["<example-global-identifier-one>", "<example-global-identifier-two>"],
"OperationSuccessful": true
}
}
Interpretation:
- Gibt an, dass vorbereitete Transaktionen nach Überschreiten des Schwellenwerts zwangsweise zurückgesetzt wurden.
- Gelegentliche Ereignisse können ein gesundes Schutzverhalten sein.
- Häufige Ereignisse deuten in der Regel auf Anwendungstransaktionslebenszyklus-Probleme hin, die untersucht werden sollten.
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;
Bestimmen, ob die Auswirkung positiv oder negativ ist
Für optimize_configurations:
- Identifizieren Sie Änderungszeitstempel aus
adaptive_autovacuum_configuration_changed. - Vergleichen Sie 30- bis 120-minütige Zeitfenster nach der Änderung hinsichtlich toter Tupel, der Vacuum-/Analyze-Taktung, der Latenz sowie der CPU-/I/O-Auslastung.
Für open_transaction_threshold:
- Identifizieren von
orphan_transaction_rollbackEreignissen. - Überprüfen Sie, ob die Rollbackhäufigkeit niedrig und stabil ist.
- Untersuchen Sie das Anwendungsverhalten, wenn Rollbackereignisse persistent sind.
SELECT
applied_at,
optimizer_type,
event_details
FROM intelligentperformance.adaptive_tuning_events
WHERE applied_at >= now() - interval '7 days'
ORDER BY applied_at DESC;
Aufbewahrung und Haushaltung
Die Hausverwaltung entfernt ältere Datensätze aus dem Überwachungsspeicher mithilfe eines festen und nicht konfigurierten Aufbewahrungsfensters von 90 Tagen.
Für längerfristige Trendanalysen exportieren Sie Audit-Zeilen in Ihren eigenen Observability-Speicher.