5 votes

Que représentent backend_xmin et backend_xid dans pg_stat_activity ?

Postgresql expose la vue pg_stat_activity . Conformément à la documentation ,

backend_xid signifie Identifiant de transaction de premier niveau de ce backend, le cas échéant.

backend_xmin signifie L'horizon xmin du backend actuel.

Prenons un exemple :

BEGIN;
# INSERT Statement1
# INSERT Statement2
COMMIT;

backend_xid représente l'identifiant de transaction attribué à la transaction complète, tandis que si pg_stat_activity montre la déclaration2 dans sa ligne, alors backend_xmin correspond à la xmin pour la déclaration2.

La compréhension est-elle correcte ?

15voto

Laurenz Albe Points 40920

Ces deux valeurs représentent le instantané de la transaction.

Chaque fois qu'une requête commence (ou, avec REPEATABLE READ niveau d'isolation, lorsque la première requête de la transaction commence), PostgreSQL prend un instantané de la base de données. Cela signifie que la requête (ou la transaction) voit un certain état de la base de données, quelles que soient les modifications de données concurrentes survenues entre-temps.

Un tel instantané est constitué de l'ID de transaction le plus ancien de toute transaction active à ce moment-là ( xmin ), l'ID de la transaction active la plus récente ( xmax ) et une liste des ID de transaction de toutes les transactions actuellement actives. A l'aide de ces numéros, PostgreSQL peut déterminer si un tuple (une version de ligne) est visible ou pas.

backend_xmin est pertinente car (avec d'autres valeurs) la plus ancienne détermine la xmin horizon qui est le point limite pour les tuples morts que l'autovacuum peut supprimer en toute sécurité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X