Gli ID transazione virtuali hanno il formato "n/nnnn". Gli XID reali sono solo numeri interi. La prima parte del xid virtuale è un identificatore di back-end univoco per ciascuna connessione; la seconda parte è un ID transazione temporaneo assegnato dal back-end di quella connessione per le sue transazioni.
Vedi la definizione di VirtualTransactionId
in src/include/storage/lock.h
per i dettagli.
Queste colonne sembrano corrispondere al virtualxid
e/o transactionid
e virtualtransaction
colonne in pg_locks
. Vedi i documenti
.
Se ho ragione in questo allora:
- "TX" è l'ID transazione virtuale della transazione in attesa o in attesa del blocco.
- "XID" è l'ID della transazione virtuale della transazione presa di mira dalla transazione in attesa, se la destinazione è un xid virtuale. In PgAdmin potrebbe anche mostrare lo xid del target se è un normale xid.
Gli ID di transazione virtuali sono ID di transazione temporanei e transitori che PostgreSQL assegna a ogni transazione all'inizio della transazione. Non sono registrati su disco. Un xid reale viene allocato solo quando la transazione fa qualcosa che richiede una scrittura transazionale su disco.
Per il manuale collegato: