如何找出当前Postgres交易的数字ID?

ams*_*ams 2 postgresql

在psql上我可以输入以下内容:

BEGIN;
Run Code Online (Sandbox Code Playgroud)

我输入什么来获取新创建的事务的当前id?

我试图整理一个演示,解释真空和MVVC如何在postgres中工作.例如select xmin, xmax, * from test;,从当前事务的角度显示每行的xmin和xmax.

我理解它的基本理论,但想要组合一个交互式练习,这样我就可以打开两个psql控制台,然后有一套显示mvcc和真空工作的分步说明.

我如何获得当前的postgres交易ID?

Den*_*rdy 8

您可以从以下位置获取交易ID:

txid_current()
Run Code Online (Sandbox Code Playgroud)

您还可以在其中看到的快照中获取正在进行的事务:

txid_snapshot_xip(txid_current_snapshot())
Run Code Online (Sandbox Code Playgroud)

手册中详细介绍了一些功能:

http://www.postgresql.org/docs/current/static/functions-info.html#FUNCTIONS-TXID-SNAPSHOT

  • 请注意,如果会话尚未拥有,则调用`txid_current()`将分配事务ID.只读会话只有一个虚拟事务ID. (6认同)

dpm*_*ott 5

txid_current_if_assigned()Postgres在版本 10中添加了.