在postgres pgadmin工具中TX和XID分数代表什么

时间:2015-11-10 01:47:47

标签: database postgresql pgadmin

XID和TX列中的分数代表什么。这是postgres的pgadmin工具的截图。

我理解TX和XID分别表示事务和事务ID,但我不明白分数符号的含义。

enter image description here

1 个答案:

答案 0 :(得分:2)

虚拟交易ID具有" n / nnnn"格式。真正的XID只是整数。虚拟xid的第一部分是每个连接唯一的后端标识符;第二部分是该连接的后端为其交易分配的临时交易ID。

有关详细信息,请参阅VirtualTransactionIdsrc/include/storage/lock.h的定义。

这些列似乎与virtualxid中的transactionid和/或virtualtransactionpg_locks列相对应。请参阅the docs

如果我在那,那么:

  • " TX"是持有或等待锁定的交易的虚拟交易ID。
  • " XID"如果目标是虚拟xid,则是等待事务所针对的事务的虚拟事务ID。在PgAdmin中,如果它是正常的xid,它也可能显示目标的xid。

虚拟事务ID是PostgreSQL在事务开始时分配给每个事务的临时临时事务ID。它们没有记录在磁盘上。只有当事务执行需要事务写入磁盘的操作时才会分配真正的xid。

根据链接手册:

  

每个事务在其整个持续时间内对其虚拟事务ID保持独占锁定。如果为事务分配了永久ID(通常仅在事务更改了数据库的状态时才会发生),它还会对其永久事务ID进行独占锁定,直到它结束。当一个事务发现有必要专门等待另一个事务时,它会通过尝试获取另一个事务ID(虚拟或永久ID,具体取决于具体情况)来实现共享锁定。只有当另一个事务终止并释放其锁时,这才会成功。