Virtuelle transaktions-id'er har formatet "n/nnnn". Ægte XID'er er bare heltal. Den første del af det virtuelle xid er en backend-id, der er unik for hver forbindelse; den anden del er et midlertidigt transaktions-id, der er tildelt af denne forbindelses backend til dens transaktioner.
Se definitionen af VirtualTransactionId
i src/include/storage/lock.h
for detaljer.
Disse kolonner ser ud til at svare til virtualxid
og/eller transactionid
og virtualtransaction
kolonner i pg_locks
. Se dokumenterne
.
Hvis jeg har ret i det, så:
- "TX" er det virtuelle transaktions-id for den transaktion, der holder eller afventer låsen.
- "XID" er det virtuelle transaktions-id for den transaktion, som den ventende transaktion målretter mod, hvis målet er en virtuel xid. I PgAdmin kan det også vise xid'et for målet, hvis det er et normalt xid.
Virtuelle transaktions-id'er er midlertidige, forbigående transaktions-id'er, som PostgreSQL allokerer til hver transaktion ved transaktionens start. De er ikke optaget på disken. Et rigtigt xid tildeles kun, når transaktionen gør noget, der kræver en transaktionsskrivning til disk.
Ifølge den linkede manual: