ID virtuálních transakcí mají formát „n/nnnn“. Skutečná XID jsou jen celá čísla. První část virtuálního xid je backendový identifikátor, který je jedinečný pro každé připojení; druhá část je dočasné ID transakce přiřazené backendem tohoto připojení pro jeho transakce.
Viz definice VirtualTransactionId
v src/include/storage/lock.h
pro podrobnosti.
Zdá se, že tyto sloupce odpovídají virtualxid
a/nebo transactionid
a virtualtransaction
sloupce v pg_locks
. Viz dokumenty
.
Pokud mám pravdu, pak:
- „TX“ je virtuální ID transakce, která drží nebo čeká na uzamčení.
- „XID“ je ID virtuální transakce transakce, na kterou je cílová čekající transakce, pokud je cílem virtuální xid. V PgAdmin může také zobrazovat xid cíle, pokud je to normální xid.
ID virtuálních transakcí jsou dočasná, přechodná ID transakcí, která PostgreSQL přiděluje každé transakci na začátku transakce. Nejsou zaznamenány na disku. Skutečný xid je přidělen pouze tehdy, když transakce provádí něco, co vyžaduje transakční zápis na disk.
Podle propojeného návodu: