Extensions PostgreSQL pour les DBA

Module X3

Dalibo SCOP

24.09

29 août 2024

Sur ce document

Formation Module X3
Titre Extensions PostgreSQL pour les DBA
Révision 24.09
PDF https://dali.bo/x3_pdf
EPUB https://dali.bo/x3_epub
HTML https://dali.bo/x3_html
Slides https://dali.bo/x3_slides

Licence Creative Commons CC-BY-NC-SA

Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :

  • Paternité
  • Pas d’utilisation commerciale
  • Partage des conditions initiales à l’identique

Marques déposées

PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.

Versions de PostgreSQL couvertes

Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 12 à 16.

Extensions PostgreSQL pour les DBA

PostgreSQL

Préambule

  • Nombreuses extensions pour observer le comportement de PostgreSQL
  • Contribs ou projets externes

pgstattuple

pgstattuple fournit une mesure (par parcours complet de l’objet) sur:

  • Pour une table
    • remplissage des blocs
    • enregistrements morts
    • espace libre
  • Pour un index
    • profondeur de l’index
    • remplissage des feuilles
    • fragmentation (feuilles non consécutives)

pg_freespacemap

La freespacemap :

  • est renseignée par VACUUM, par objet (table/index)
  • est consommée par les sessions modifiant des données (INSERT/UPDATE)
  • est interrogée la freespacemap pour connaître l’espace libre
  • est rarement utilisée (doute sur l’efficacité de VACUUM)

pg_visibility

La Visibility Map :

  • Est renseignée par VACUUM, par table
  • Permet de savoir que l’ensemble des enregistrements de ce bloc est visible
  • Indispensable pour les parcours d’index seul
  • Interroger la visibility map permet de voir si un bloc est :
    • visible
    • gelé
  • Rarement utilisé

pageinspect

  • Vision du contenu d’un bloc
  • Sans le dictionnaire, donc sans décodage des données
  • Affichage brut
  • Utilisé surtout en debug, ou dans les cas de corruption
  • Fonctions de décodage pour les tables, les index (B-tree, hash, GIN, GiST), FSM
  • Nécessite de connaître le code de PostgreSQL

pgrowlocks

Les verrous mémoire de PostgreSQL ne verrouillent pas les enregistrements :

  • Il est parfois compliqué de comprendre qui verrouille qui, à cause de quel enregistrement
  • pgrowlocks inspecte une table pour détecter les enregistrements verrouillés, leur niveau de verrouillage, et qui les verrouille
  • scan complet de la table !

Gestion du cache

  • pg_buffercache : voir ce qu’il y a dans mes shared buffers
  • pg_prewarm : forcer le chargement du cache