Virtuele transactie-ID's hebben de indeling "n/nnnn". Echte XID's zijn gewoon gehele getallen. Het eerste deel van de virtuele xid is een backend-ID die uniek is voor elke verbinding; het tweede deel is een tijdelijke transactie-ID toegewezen door de backend van die verbinding voor zijn transacties.
Zie de definitie van VirtualTransactionId
in src/include/storage/lock.h
voor details.
Die kolommen lijken overeen te komen met de virtualxid
en/of transactionid
en virtualtransaction
kolommen in pg_locks
. Zie de documenten
.
Als ik daarin gelijk heb, dan:
- "TX" is de virtuele transactie-ID van de transactie die vasthoudt of wacht op de vergrendeling.
- "XID" is de virtuele transactie-ID van de transactie waarop de wachtende transactie zich richt, als het doel een virtuele xid is. In PgAdmin kan het ook de xid van het doel tonen als het een normale xid is.
Virtuele transactie-ID's zijn tijdelijke, tijdelijke transactie-ID's die PostgreSQL aan elke transactie toewijst bij het starten van de transactie. Ze worden niet op schijf opgenomen. Een echte xid wordt alleen toegewezen wanneer de transactie iets doet waarvoor een transactie naar schijf moet worden geschreven.
Volgens de gekoppelde handleiding: