Virtuella transaktions-ID:n har formatet "n/nnnn". Verkliga XID är bara heltal. Den första delen av den virtuella xid är en backend-identifierare som är unik för varje anslutning; den andra delen är ett temporärt transaktions-id som tilldelas av den anslutningens backend för dess transaktioner.
Se definitionen av VirtualTransactionId
i src/include/storage/lock.h
för detaljer.
Dessa kolumner verkar motsvara virtualxid
och/eller transactionid
och virtualtransaction
kolumner i pg_locks
. Se dokumenten
.
Om jag har rätt i det då:
- "TX" är det virtuella transaktions-ID för transaktionen som håller eller väntar på låset.
- "XID" är det virtuella transaktions-ID för transaktionen som den väntande transaktionen riktar mot, om målet är en virtuell xid. I PgAdmin kan det också visa xid för målet om det är en normal xid.
Virtuella transaktions-ID:n är tillfälliga, övergående transaktions-ID:n som PostgreSQL allokerar till varje transaktion vid transaktionsstart. De är inte inspelade på disk. En riktig xid tilldelas endast när transaktionen gör något som kräver en transaktionsskrivning till disk.
Enligt den länkade manualen: