postgreSQL中的virtualxid, transactionid, virtualtransaction

    在postgreSQL中,描述事务ID的字段有三个:virtualxid, transactionid, virtualtransaction。它们的含义分别如下:

名称含义
virtualxid虚拟事务ID。如果对象虚拟事务,则此值为null。
transactionid事务ID。如果对象不是事务,则此值为mull。
virtualtransaction持有或等待这把锁的虚拟事务的ID。

    “transactionid”表示事务ID,“virtualxid”表示虚拟事务ID。每产生一个事务ID,都会在commit log文件中占用2bit。但有些事务没有产生任何实质的变更,比如只读事务或空事务,给它们也分配一个事务ID就很浪费。因此,对这类没有实质变更的事务,只分配虚拟事务ID,不分配事务ID,不占用2bit的空间。

    “virtualxid”和“virtualtransaction”从字面上看都是虚拟事务ID的意思。它们的区别是:位于pg_locks视图的不同部分,“virtualxid” 位于描述锁对象的部分, “virtualtransaction”位于描述持有锁或等待锁的部分。因此,“virtualxid” 表示这个锁对象是一个虚拟事务,而“virtualtransaction”表示持有锁或等待锁的虚拟事务ID。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值