Partage via


Effectuer un réglage intelligent dans Azure Database pour PostgreSQL – Serveur flexible

S’APPLIQUE À : Azure Database pour PostgreSQL - Serveur flexible

Le serveur flexible Azure Database pour PostgreSQL dispose d’une fonctionnalité de réglage intelligent conçue pour améliorer automatiquement les performances et aider à éviter les problèmes. Le réglage intelligent surveille en permanence l’état de la base de données du serveur flexible Azure Database pour PostgreSQL et adapte dynamiquement la base de données à votre charge de travail.

Cette fonctionnalité comprend deux fonctions de réglage automatique :

  • Réglage du nettoyage automatique : cette fonction suit le ratio de ballonnement et ajuste les paramètres de nettoyage automatique en conséquence. Il tient compte de l’utilisation actuelle et prévue des ressources pour éviter les interruptions de charge de travail.
  • Réglage des écritures : cette fonctionnalité supervise de façon permanente le volume et les modèles des opérations d’écriture, et modifie les paramètres qui affectent les performances d’écriture. Ces ajustements améliorent à la fois les performances et la fiabilité du système, afin d’éviter de manière proactive les complications potentielles.

Vous pouvez activer le réglage intelligent à l’aide du Portail Azure ou d’Azure CLI.

Pourquoi le réglage intelligent ?

Le processus de nettoyage automatique est un composant critique de la maintenance de l’intégrité et des performances de la base de données d’un serveur flexible Azure Database pour PostgreSQL. Il permet de récupérer le stockage occupé par des lignes « mortes », ce qui libère de l’espace et permet le bon fonctionnement de la base de données.

Il est tout aussi important d’ajuster les opérations d’écriture au sein de la base de données. Cette tâche incombe généralement aux administrateurs de base de données. Toutefois, la supervision constante d’une base de données et le réglage des opérations d’écriture peuvent être difficiles et chronophages. Cette tâche devient de plus en plus complexe lorsque vous avez affaire à plusieurs bases de données.

C’est là que le réglage intelligent s’effectue. Au lieu de superviser et de paramétrer manuellement votre base de données, vous pouvez utiliser le réglage intelligent pour superviser et paramétrer automatiquement la base de données. Vous pouvez ensuite vous concentrer sur d’autres tâches importantes.

La fonction de réglage automatique du nettoyage automatique dans le réglage intelligent supervise le ratio de ballonnement et ajuste les paramètres en fonction des besoins pour une utilisation optimale des ressources. Il gère de manière proactive le processus de « nettoyage » de la base de données et atténue les problèmes de performances que les données obsolètes peuvent causer.

La fonction de réglage des écritures observe la quantité et les modèles transactionnels des opérations d’écriture. Il ajuste intelligemment les paramètres tels que bgwriter_delay, checkpoint_completion_target, max_wal_sizeet min_wal_size. Ce faisant, la performance et la fiabilité du système s’en trouvent améliorées, même sous des charges d’écriture élevées.

Lorsque vous utilisez le réglage intelligent, vous pouvez économiser des ressources et un temps précieux en vous appuyant sur le serveur flexible Azure Database pour PostgreSQL pour maintenir les performances optimales de vos bases de données.

Comment fonctionne le paramétrage intelligent ?

Le réglage intelligent est un processus de supervision et d’analyse continu qui permet non seulement d’en savoir plus sur les caractéristiques de votre charge de travail, mais également de suivre votre charge actuelle et l’utilisation des ressources, comme le processeur ou les IOPS. Cela ne perturbe pas les opérations normales de votre charge de travail d’application.

Le processus permet à la base de données de s’ajuster dynamiquement à votre charge de travail en discernant le taux de ballonnement actuel, les performances d’écriture et l’efficacité des points de contrôle sur votre instance. Avec ces insights, le réglage intelligent déploie des actions de paramétrage qui améliorent les performances de votre charge de travail et évitent les pièges potentiels.

Réglage du nettoyage automatique

Le réglage intelligent ajuste cinq paramètres liés au nettoyage automatique : autovacuum_vacuum_scale_factor, autovacuum_cost_limit, autovacuum_naptime, autovacuum_vacuum_threshold et autovacuum_vacuum_cost_delay. Ces paramètres règlent les composants tels que :

  • La fraction de la table qui déclenche un processus VACUUM.
  • La limite de délai de nettoyage basée sur les coûts.
  • L’intervalle de pause entre les exécutions de nettoyage automatique.
  • Le nombre minimal de tuples mis à jour ou morts nécessaires pour démarrer un processus VACUUM.
  • La durée de pause entre les séries de nettoyage.

Important

Le réglage intelligent modifie les paramètres liés au nettoyage automatique au niveau du serveur, et non au niveau de la table individuelle. En outre, si le nettoyage automatique est désactivé, le réglage intelligent ne peut pas fonctionner correctement. Pour un réglage intelligent afin d’optimiser le processus, la fonctionnalité de nettoyage automatique doit être activée.

Même si le démon de nettoyage automatique déclenche deux opérations (VACUUM et ANALYZE), le réglage intelligent optimise uniquement le processus VACUUM. Actuellement, cette fonctionnalité n’ajuste pas le processus ANALYZE, qui collecte des statistiques sur le contenu de la table pour aider le planificateur de requêtes du serveur flexible Azure Database pour PostgreSQL à choisir le plan d’exécution de requête le plus approprié.

Le réglage intelligent inclut des protections pour mesurer l’utilisation des ressources, telles que le processeur et les IOPS. Cela n’augmentera pas l’activité de nettoyage automatique lorsque votre instance est soumis à une forte charge. De cette façon, le paramétrage intelligent garantit un équilibre entre les opérations de nettoyage efficaces et les performances globales de votre système.

Lorsque le réglage intelligent optimise le nettoyage automatique, il prend en compte le ballonnement moyen du serveur, en utilisant des statistiques sur les tuples vivants et morts. Pour réduire le ballonnement, le réglage intelligent peut réduire des paramètres tels que le facteur d'échelle ou le temps de sieste. Il peut déclencher le processus VACUUM plus tôt et, si nécessaire, réduire le délai entre les séries.

D’autre part, si le ballonnement est minimal et que le processus de nettoyage automatique est trop agressif, le réglage intelligent peut augmenter des paramètres tels que le délai, le facteur d’échelle et le temps de sieste. Cet équilibre réduit les ballonnements et permet de s’assurer que le processus de nettoyage automatique utilise les ressources efficacement.

Paramétrage des écritures

Le réglage intelligent ajuste quatre paramètres liés à l’optimisation des écritures : bgwriter_delay, checkpoint_completion_target, max_wal_size et min_wal_size.

Le paramètre bgwriter_delay détermine la fréquence à laquelle le processus d’écriture en arrière-plan est réveillé sur des tampons propres « sales » (mémoires tampons qui sont nouvelles ou modifiées). Le processus d’écriture en arrière-plan est l’un des trois processus du serveur flexible Azure Database pour PostgreSQL qui gèrent les opérations d’écriture. L’autre est le processus de point de contrôle et les écritures back-end (processus clients standard, tels que les connexions d’application).

Le rôle principal du processus d’écriture en arrière-plan est d’alléger la charge du processus de point de contrôle principal et de réduire la contrainte des écritures back-end. Le paramètre bgwriter_delay régit la fréquence des rounds de l’enregistreur d’arrière-plan. En ajustant ce paramètre, vous pouvez également optimiser les performances des requêtes DML (Data Manipulation Language).

Le paramètre checkpoint_completion_target fait partie du deuxième mécanisme d’écriture pris en charge par le serveur flexible Azure Database pour PostgreSQL, en particulier le processus de point de contrôle. Les points de contrôle se produisent à intervalles constants définis par checkpoint_timeout (sauf si les points de contrôle sont forcés en dépassant l’espace configuré). Pour éviter de surcharger le système d’E/S avec une augmentation des écritures de pages, l’écriture de tampons sales pendant un point de contrôle est répartie sur une période de temps. Le paramètre checkpoint_completion_target contrôle cette durée en utilisant checkpoint_timeout pour spécifier la durée en tant que fraction de l’intervalle de point de contrôle.

La valeur par défaut de checkpoint_completion_target est 0,9 (depuis PostgreSQL 14). Cette valeur fonctionne généralement mieux, car elle répartit la charge d’E/S sur la période maximale. Dans de rares cas, les points de contrôle peuvent ne pas se terminer dans le temps en raison de fluctuations inattendues du nombre de segments de journalisation WAL (Write-Ahead Logging) nécessaires. L’impact potentiel sur les performances est la raison pour laquelle checkpoint_completion_target est une métrique cible pour le réglage intelligent.

Limitations et problèmes connus

  • Le réglage intelligent n’effectue des optimisations que dans des plages spécifiques. Il est possible que la fonctionnalité n’apporte aucun changement.
  • Le réglage intelligent n’ajuste pas les paramètres ANALYZE.
  • Le réglage du nettoyage automatique est actuellement pris en charge pour les niveaux de calcul de serveur Usage général et Mémoire optimisée dotés d’au moins quatre vCores. Le niveau de calcul de serveur Burstable n’est pas pris en charge.

Étapes suivantes