在postgres pgadmin工具中,TX和XID的分数代表什么?[英] What do TX and XID fractions stand for in the postgres pgadmin tool

问题描述

XID和TX列中的分数代表什么?这是Postgres的Pgadmin工具的屏幕截图.

我理解TX和XID分别是指交易和交易ID,但是我不明白分数符号的含义.

在此处输入图像说明

推荐答案

虚拟事务ID具有" N/NNNN"格式.真正的XID只是整数.虚拟XID的第一部分是每个连接所独有的后端标识符.第二部分是该连接的后端为交易分配的临时事务ID.

有关详细信息,请参见src/include/storage/lock.h中的VirtualTransactionId的定义.


这些列似乎对应于pg_locks中的virtualxid和/或transactionid和virtualtransaction列.参见 docs .

如果我正确地说:

  • " tx"是交易保存或等待锁的虚拟交易ID.
  • " XID"是等待事务针对的事务的虚拟事务ID,如果目标是虚拟XID.在pgadmin中,如果是正常的XID,它也可能显示目标的XID.

虚拟事务ID是临时的瞬态事务ID,后GresQL将交易开始时分配给每个事务.它们没有记录在磁盘上.仅当交易执行需要交易写入磁盘的事情时,才会分配真正的XID.

根据链接手册:

每笔交易在整个持续时间内都有其虚拟交易ID的独家锁定.如果将永久ID分配给事务(通常仅在交易更改数据库状态时发生),则它还在其永久交易ID上保留一个独家锁定,直到其结束为止.当一项交易发现有必要专门等待另一笔交易时,它可以通过尝试在其他交易ID上获得共享锁(根据情况,虚拟或永久ID).只有当其他交易终止并发布其锁时,这才能成功.

本文地址:https://www.itbaoku.cn/post/1739742.html