PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 15.10 » Annexes » Modules supplémentaires fournis » pg_walinspect

F.37. pg_walinspect

Le module pg_walinspect fournit des fonctions SQL qui vous permettent d'inspecter, à un bas niveau, le contenu des journaux de transactions d'une instance PostgreSQL en cours d'exécution, ce qui est utile pour le débogage, l'analyse, la création de rapports ou à des fins pédagogiques. Il est similaire à pg_waldump, mais est accessible via SQL plutôt que via un utilitaire séparé.

Toutes les fonctions de ce module fourniront des informations sur les WAL utilisant l'identifiant de la timeline actuelle du serveur.

Toutes les fonctions de ce module essaieront de trouver le premier enregistrement WAL valide qui est situé à l'endroit ou après le in_lsn ou le start_lsn donné et émettra une erreur si un tel enregistrement n'est pas présent. De même, end_lsn doit être présent, et s'il tombe au milieu d'un enregistrement, l'intégralité de l'enregistrement doit être disponible.

Note

Certaines fonctions, telles que pg_logical_emit_message, renvoient le LSN après l'enregistrement qui vient d'être inséré. Par conséquent, si vous transmettez ce LSN comme in_lsn ou start_lsn à l'une de ces fonctions, elle renverra l'enregistrement suivant.

Par défaut, l'utilisation de ces fonctions est réservée aux superutilisateurs et aux membres du rôle pg_read_server_files. L'accès peut être accordé par des superutilisateurs à d'autres utilisateurs grâce à la commande GRANT.

F.37.1. Fonctions générales

pg_get_wal_record_info(in_lsn pg_lsn) returns record

Obtient les informations d'enregistrement WAL pour un LSN donné. Si le LSN fourni n'est pas au début d'un enregistrement WAL, elle retourne les informations du prochain enregistrement WAL valide disponible ; ou une erreur si aucun enregistrement de ce type n'est trouvé. Voici un exemple de l'utilisation de cette fonction :

postgres=# SELECT * FROM pg_get_wal_record_info('0/1E826E98');
-[ RECORD 1 ]----+----------------------------------------------------
start_lsn        | 0/1E826F20
end_lsn          | 0/1E826F60
prev_lsn         | 0/1E826C80
xid              | 0
resource_manager | Heap2
record_type      | PRUNE
record_length    | 58
main_data_length | 8
fpi_length       | 0
description      | snapshotConflictHorizon 33748 nredirected 0 ndead 2
block_ref        | blkref #0: rel 1663/5/60221 fork main blk 2

pg_get_wal_records_info(start_lsn pg_lsn, end_lsn pg_lsn)

Obtient des informations sur tous les enregistrements WAL valides entre start_lsn et end_lsn. Renvoie une ligne par enregistrement WAL. Si start_lsn ou end_lsn ne sont pas encore disponibles, la fonction renvoie une erreur. Par exemple :

postgres=# SELECT * FROM pg_get_wal_records_info('0/1E913618', '0/1E913740') LIMIT 1;
-[ RECORD 1 ]----+--------------------------------------------------------------
start_lsn        | 0/1E913618
end_lsn          | 0/1E913650
prev_lsn         | 0/1E9135A0
xid              | 0
resource_manager | Standby
record_type      | RUNNING_XACTS
record_length    | 50
main_data_length | 24
fpi_length       | 0
description      | nextXid 33775 latestCompletedXid 33774 oldestRunningXid 33775
block_ref        |

pg_get_wal_records_info_till_end_of_wal(start_lsn pg_lsn) returns setof record

Cette fonction est identique à pg_get_wal_records_info() sauf qu'elle obtient des informations sur tous les enregistrements WAL valides depuis start_lsn jusqu'à la fin du WAL.

pg_get_wal_stats(start_lsn pg_lsn, end_lsn pg_lsn, per_record boolean DEFAULT false) returns setof record

Récupère les statistiques de tous les enregistrements WAL valides entre start_lsn et end_lsn. Par défaut, elle renvoie une ligne par type resource_manager. Lorsque per_record est défini sur true, elle renvoie une ligne par record_type. Si start_lsn ou end_lsn ne sont pas encore disponibles, la fonction retourne une erreur. Par exemple :

postgres=# SELECT * FROM pg_get_wal_stats('0/1E847D00', '0/1E84F500')
             WHERE count > 0 AND
                   "resource_manager/record_type" = 'Transaction'
              LIMIT 1;
-[ RECORD 1 ]----------------+-------------------
resource_manager/record_type | Transaction
count                        | 2
count_percentage             | 8
record_size                  | 875
record_size_percentage       | 41.23468426013195
fpi_size                     | 0
fpi_size_percentage          | 0
combined_size                | 875
combined_size_percentage     | 2.8634072910530795

pg_get_wal_stats_till_end_of_wal(start_lsn pg_lsn, per_record boolean DEFAULT false) returns setof record

Cette fonction est identique à pg_get_wal_stats() sauf qu'elle obtient les statistiques de tous les enregistrements WAL valides depuis start_lsn jusqu'à la fin du WAL.

F.37.2. Auteur

Bharath Rupireddy