Identyfikatory transakcji wirtualnych mają format „n/nnnn”. Rzeczywiste identyfikatory XID to tylko liczby całkowite. Pierwsza część wirtualnego xid to identyfikator zaplecza, który jest unikalny dla każdego połączenia; druga część to tymczasowy identyfikator transakcji przypisywany przez zaplecze tego połączenia dla jego transakcji.
Zobacz definicję VirtualTransactionId
w src/include/storage/lock.h
po szczegóły.
Te kolumny wydają się odpowiadać virtualxid
i/lub transactionid
i virtualtransaction
kolumny w pg_locks
. Zobacz dokumentację
.
Jeśli mam rację, to:
- "TX" to wirtualny identyfikator transakcji trzymającej lub oczekującej na blokadę.
- "XID" jest wirtualnym identyfikatorem transakcji, do której skierowana jest oczekująca transakcja, jeśli celem jest wirtualny xid. W PgAdmin może również pokazywać xid celu, jeśli jest to normalny xid.
Wirtualne identyfikatory transakcji to tymczasowe, przejściowe identyfikatory transakcji, które PostgreSQL przydziela każdej transakcji na początku transakcji. Nie są zapisywane na dysku. Rzeczywisty xid jest przydzielany tylko wtedy, gdy transakcja wykonuje coś, co wymaga transakcyjnego zapisu na dysku.
Zgodnie z połączonym podręcznikiem: