Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article documente les paramètres adaptive_autovacuum pris en charge par Azure Database pour PostgreSQL - Serveur flexible :
-
adaptive_autovacuum.optimize_configurations: Active l’ajustement automatique d’une série de paramètres d’autovacuum. -
adaptive_autovacuum.open_transaction_threshold: définit le seuil d’âge en secondes pour détecter et atténuer les anciennes transactions préparées.
Fonctionnement de chaque paramètre
adaptive_autovacuum.optimize_configurations
Lorsque vous définissez ce paramètre sur on, le service de réglage effectue périodiquement les opérations suivantes :
- Collecte et agrège les signaux de charge de travail et de statistiques de table.
- Évalue les flux de travail de règle.
- Calcule les mises à jour des paramètres autovacuum candidats.
- Applique les mises à jour et recharge la configuration du moteur.
- Écrit les entrées d’audit.
Si aucune condition de règle n’est remplie, une exécution peut se terminer sans aucune modification.
Paramètres paramétrables actuels :
autovacuum_vacuum_cost_limitautovacuum_vacuum_thresholdautovacuum_vacuum_scale_factorautovacuum_vacuum_cost_delayautovacuum_analyze_scale_factor
Note
- Si vous définissez
autovacuum_vacuum_cost_limitla valeur -1, la logique dérive devacuum_cost_limit. - Le service d’optimisation utilise
autovacuum_freeze_max_agecomme signal d’entrée, mais ne l’ajuste pas directement.
Visibilité et comportement de remplacement pour les paramètres paramétrés
Lorsque cette fonctionnalité modifie l’un des cinq paramètres cibles (autovacuum_vacuum_cost_limit, autovacuum_vacuum_threshold, autovacuum_vacuum_scale_factor, autovacuum_vacuum_cost_delayautovacuum_analyze_scale_factor) :
- Le point de terminaison Configurations du plan de contrôle (par exemple, l’API GET Configurations ou
az postgres flexible-server parameterle groupe de commandes CLI) n’affiche pas ces modifications d’exécution effectives. - Pour afficher les valeurs effectives, utilisez des requêtes de plan de données sur le point de terminaison PostgreSQL (par exemple,
SHOW <guc_name>ouSELECT name, setting FROM pg_settings WHERE name IN (...)).
Sémantique de priorité définie par l’utilisateur :
- Vous pouvez définir l’un de ces cinq paramètres directement via le portail, l’API REST, l’interface CLI ou l’un des kits SDK pris en charge.
- Si vous définissez un paramètre sur la même valeur que celle que le point de terminaison Configurations du plan de contrôle renvoie actuellement, l’opération est considérée comme sans effet et aucun nouveau changement effectif n’est appliqué.
- Les valeurs définies par l’utilisateur remplacent les valeurs appliquées par les fonctionnalités au moment où elles sont appliquées.
- Si
adaptive_autovacuum.optimize_configurationselle reste activée, les itérations de réglage ultérieures peuvent appliquer de nouvelles valeurs en fonction de l’évaluation des règles.
adaptive_autovacuum.open_transaction_threshold
Ce paramètre contrôle le mécanisme d’atténuation des transactions préparées orphelines :
- 0 signifie désactivé.
- Une valeur supérieure à 0 indique que l’option est activée, avec un seuil exprimé en secondes.
Lorsqu’elle est activée, si la transaction préparée la plus ancienne dépasse le seuil, le gestionnaire de transactions orphelins évalue l’éligibilité et peut restaurer les anciennes transactions préparées. Le gestionnaire met à jour son seuil en mémoire sur les modifications de paramètres, de sorte que le comportement suit la dernière valeur.
Détail important concernant le timing :
- La fonctionnalité détermine d’abord l’horodatage de transaction préparé le plus ancien.
- Cette détection est basée sur des sondages, et non continue.
- Le sondage s’exécute toutes les 1 800 secondes (c’est-à-dire toutes les 30 minutes), de sorte que l’atténuation ne peut démarrer qu’après qu’un sondage observe une transaction préparée assez ancienne.
Comportement d’exécution et de planification
- La fréquence d'ajustement de
optimize_configurationsest de 30 minutes. - Lorsque vous activez
optimize_configurations, il déclenche une exécution de réglage immédiate, puis les exécutions planifiées continuent. - La gestion de
open_transaction_thresholdest pilotée par des événements, à partir d’observations de transactions préparées. La mesure d’atténuation ne s’exécute que lorsque les contrôles d’âge dépassent le seuil. - L’observation de la transaction préparée pour
open_transaction_thresholdest actualisée toutes les 300 secondes.
Quand le intelligentperformance schéma est-il créé après l’activation ?
Le intelligentperformance schéma est créé sous la azure_sys base de données. Sa création n’est pas immédiate et est gérée par la fonctionnalité qui conserve les statistiques utilisées par le nettoyage automatique adaptatif, plutôt que par l’exécution initiale du réglage. En règle générale, le schéma est créé dans les 0 à 30 minutes après l’activation de la fonctionnalité.
Vous pouvez activer le nettoyage automatique adaptatif en définissant adaptive_autovacuum.optimize_configurations ou en configurant on sur une valeur différente de zéro (c’est-à-dire adaptive_autovacuum.open_transaction_threshold> 0). Le schéma est créé une fois la fonctionnalité active et commence à collecter les statistiques requises.
La création peut être retardée ou ignorée si certaines conditions préalables ne sont pas remplies.
Limitations et conditions préalables
Les deux contrôles sont soumis aux exigences suivantes :
- L’instance doit être une instance primaire.
- PostgreSQL n’est pas en mode de récupération.
- Le calcul du serveur a au moins 4 vCores.
- Le serveur est un serveur flexible standard, et non un cluster élastique. La fonctionnalité n’est pas prise en charge sur les clusters élastiques.
-
adaptive_autovacuum.optimize_configurationsest pris en charge sur les versions majeures supérieures ou égales à 14. -
adaptive_autovacuum.open_transaction_thresholdest pris en charge sur les versions majeures supérieures ou égales à 13.
Audit et observabilité
Le système enregistre les actions des deux contrôles dans une vue d’audit nommée intelligentperformance.adaptive_tuning_events.
Schéma de la vue
Forme logique attendue :
- intelligentperformance.adaptive_tuning_events
- Détails de l’événement
- type_optimiseur
- applied_at
Rechercher une activité récente
Pour interroger l’activité récente, utilisez les requêtes suivantes :
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;
Types d’événements et interprétation
La optimizer_type colonne indique la source d’action.
adaptive_autovacuum_configuration_changed
Source :
-
optimize_configurationsparcours de réglage.
Schéma de la charge utile :
- Tableau JSON d’enregistrements de modification de paramètre, notamment :
- server_parameter_name
- valeur_précédente
- updated_tuned_value
Interprétation :
- Indique que le réglage d’autovacuum a modifié les paramètres du serveur.
- Positif si les métriques de charge de travail s’améliorent par la suite (pression des tuples morts, fréquence des opérations de nettoyage automatique, latence, processeur/E/S).
- Potentiellement négatif lorsque les changements sont fréquents et oscillants et sont suivis de régressions.
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
Source :
-
open_transaction_thresholdchemin d’atténuation.
Schéma de la charge utile :
- Objet JSON indexé par base de données, avec les détails du résultat de l’annulation (par exemple, des informations sur les tentatives d’annulation de GID et les annulations de GID réussies).
{
"<example-database-name>": {
"Timestamp": "2026-03-22T18:20:22.0000000Z",
"RollbackGids": ["<example-global-identifier-one>", "<example-global-identifier-two>"],
"OperationSuccessful": true
}
}
Interprétation :
- Indique que les transactions préparées ont été annulées de force après avoir dépassé le seuil.
- Les événements occasionnels peuvent être un comportement protecteur sain.
- Les événements fréquents indiquent généralement des problèmes de cycle de vie des transactions d’application qui doivent être examinés.
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;
Déterminer si l’impact est positif ou négatif
Pour optimize_configurations:
- Identifier les horodatages des modifications à partir de
adaptive_autovacuum_configuration_changed. - Comparez des fenêtres post-changement de 30 à 120 minutes pour les tuples morts, la fréquence des opérations de nettoyage/d’analyse, la latence et le processeur/les E/S.
Pour open_transaction_threshold:
- Identifier les
orphan_transaction_rollbackévénements. - Vérifiez si la fréquence des retours en arrière est faible et se stabilise.
- Analysez le comportement de l’application si les événements d’annulation persistent.
SELECT
applied_at,
optimizer_type,
event_details
FROM intelligentperformance.adaptive_tuning_events
WHERE applied_at >= now() - interval '7 days'
ORDER BY applied_at DESC;
Rétention et maintenance
La tâche de nettoyage supprime les enregistrements les plus anciens du stockage d’audit selon une période de rétention fixe et non configurable de 90 jours.
Pour une analyse des tendances à plus long terme, exportez les entrées d’audit vers votre propre plateforme d’observabilité.