Autovacuum dans PostgreSQL

Autovacuum dans PostgreSQL
Vide? Oui, le concept existe dans les bases de données Postgres. Lorsqu'un enregistrement est supprimé dans Postgres, un tuple mort est formé et avec l'aide de la commande à vide, ces tuples morts peuvent être supprimés. Après avoir retiré les tuples morts, l'action d'analyse de Postgres est effectuée sur la table pour mettre à jour les statistiques. Pour effectuer le vide et analyser les actions collectivement et automatiquement, la commande Autovacuum de Postgres est utilisée. Il effectue à la fois la suppression puis met à jour les statistiques . Pour obtenir une compréhension plus approfondie de cet utilitaire Postgres, ce guide est structuré pour obtenir un aperçu et un bon autovacuum pratique dans Postgres.

Comment fonctionne le vide automatique postgres

L'autovacuum est le processus d'arrière-plan dans Postgres et est activé par défaut. Cependant, vous pouvez obtenir les paramètres d'Autovacuum en naviguant vers le postgresql.confli déposer.

Comme indiqué précédemment, l'aspirateur automatique effectue à la fois l'aspirateur et l'analyse. Postgres analyse et aspire un tableau basé sur le seuil décrit ci-dessous:

Pour le seuil d'aspirateur automatique d'une table, l'équation suivante est utilisée:

Autovacuum Seuil à vide = autovacuum_vacuum_scale_factor * Non._of_tuples + autovacuum_vacuum_threshold

Et pour obtenir le seuil d'analyse automatique, l'équation suivante fait le travail:

Autovacuum Analyser Threshold = autovacuum_analyze_scale_factor * Nombre de tuples + autovacuum_analyze_threshold

Les terminologies utilisées dans les sections ci-dessus sont décrites dans la section à venir.

Comment configurer le vide automatique postgres

La fonctionnalité de vide automatique de Postgres dépend des paramètres et des options disponibles à l'intérieur du PostgreSQL.fichier de confr. À l'aide de la description fournie ci-dessous, vous pouvez modifier les paramètres pour régler la fonctionnalité de vide automatique.

Les paramètres suivants ont le rôle clé dans la définition de la politique de Postgres Autovacuum.

  • autovacuum: Affiche l'état par défaut pour l'appel de vide automatique.
  • autovacuum_naptime: La valeur par défaut du paramètre est les années 60 (1 min), ce qui indique la différence entre chaque réveil de vide automatique.
  • autovacuum_max_workers: Les processus qui sont aspirés après la sieste.
  • autovacuum_vacuum_scale_factor: Ce facteur dirige l'aspirateur automatique pour démarrer le processus lorsque le pourcentage de la valeur spécifiée est modifié. Il est par défaut réglé sur 20%, ce qui signifie que le vide automatique entrera en action lorsque 20% des tableaux / enregistrements sont mis à jour.
  • autovacuum_vacuum_threshold: Ce paramètre garantit que le vide automatique doit fonctionner après (par défaut, il est de 50), les nombres de tables sont mis à jour / modifiés.
  • autovacuum_analyze_scale_factor: Ce facteur fait référence au processus d'analyse qu'un aspirateur automatique effectue. Lorsqu'un pourcentage spécifique d'enregistrements est mis à jour / modifié, le tableau effectue l'analyse.
  • autovacuum_analyze_threshold: Lorsque des nombres spécifiques de tables rencontrent des mises à jour et que le seuil est atteint, l'aspirateur automatique commence à analyser le tableau et la valeur par défaut de ce paramètre est de 50.

Pour modifier le fichier, vous pouvez l'ouvrir dans un éditeur Nano en utilisant la commande indiquée ci-dessous (l'emplacement de PostgreSQL.Le fichier conf, peut varier dans votre cas):

$ sudo nano / etc / postgresql / 12 / main / postgresql.confli

Comment configurer les paramètres de vide automatique pour un tableau

Le postgresql.confli Le fichier traite des modifications globales des paramètres Autovacuum. Cependant, vous pouvez régler les paramètres pour une seule table. Par exemple, nous avons utilisé les paramètres suivants pour le linuxhint Tableau de la base de données MyDB:

  • autovacuum_vacuum_scale_factor = 0.2
  • autovacuum_vacuum_threshold = 30
  • autovacuum_analyze_scale_factor = 0.2
  • autovacuum_analyze_threshold = 20

Ces paramètres seront passés avec une déclaration de la table alter de PowerShell et la table alter sera appliquée sur la table LinuxHint comme indiqué ci-dessous:

> Alter table linuxhint set (autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_analyze_threshold = 20);

Il peut être calculé manuellement en insérant les valeurs dans les équations données dans la section ci-dessus et est la suivante. Supposons que la table LinuxHint contient 10 tuples:

Le fonctionnement à vide de l'Autovacuum est calculé comme indiqué ci-dessous. La sortie montre que le fonctionnement à vide de l'Autovacuum sera effectué lorsque le nombre d'enregistrements obsolètes atteindra 31.

Seuil de vide autovacuum de la table de Linuxhint = (0.2 * 5) + 30 = 31

De même, le fonctionnement d'analyse de l'Autovacuum sur la table LinuxHint sera effectué lorsque le nombre d'insertions / suppressions / mise à jour équivaut ou dépasse 21.

Autovacuum Analyse de la table LinuxHint = (0.2 * 5) + 20 = 21

Pourquoi l'aspirateur automatique

En regardant le travail et la discussion ci-dessus, les avantages suivants du vide automatique peuvent être extraits:

  • L'espace est géré efficacement en supprimant les cellules mortes
  • Le temps d'analyse et d'aspiration est enregistré lorsqu'il est effectué automatiquement
  • Les ballonnements de table ne se produisent pas car la suppression des tuples mortes se produit automatiquement et donc le tableau ne déborde pas.
  • Autovacuum peut être effectué de manière parallèle. Par exemple, Autovacuum ne verrouille pas la table comme le fait le vide manuel.

Conclusion

La fonctionnalité de vide automatique de Postgres vous permet d'effectuer le vide et d'analyser les tableaux d'une base de données. Même si l'on peut passer l'aspirateur et analyser manuellement, le vide automatisé fera les deux. Cet article fournit des informations détaillées sur la fonctionnalité de vide automatique de Postgres. Postgres calcule les valeurs de seuil pour chaque tableau, puis décide de l'aspirateur ou d'analyser ce tableau. De plus, nous avons fourni les équations de Postgres pour calculer le vaccin et analyser le seuil.