关于PostgreSQL的事务快照的延迟
PostgreSQL提供了几个事务快照函数,实测发现,通过这些函数取到的事务快照可能要比自己预想的要有一个延迟。1. 功能说明
几个事务快照函数的功能说明参考PostgreSQL手册。
http://58.58.27.50:8079/doc/html/9.3.1_zh/functions-info.html
----------------------------------------------------------------------------------------------------------- Table 9-56显示的函数在一个输出形式中提供服务器事务信息。 这些函数的主要用途是为了确定在两个快照之间有哪个事务提交。
Table 9-56. 事务ID和快照
名字返回类型描述txid_current() bigint 获取当前事务 IDtxid_current_snapshot() txid_snapshot 获取当前快照txid_snapshot_xip(txid_snapshot) setof bigint 获取在快照中进行中的事务IDtxid_snapshot_xmax(txid_snapshot) bigint 获取快照的 xmax txid_snapshot_xmin(txid_snapshot) bigint 获取快照的xmin txid_visible_in_snapshot(bigint, txid_snapshot) boolean 在快照中事务ID是否可见?(不使用子事务ID)内部事务 ID 类型(xid)是32位,每40亿事务循环。然而这些函数导出一个64位格式, 是使用一个"epoch"计数器扩展,所以在安装过程中不会循环。 这些函数使用的数据类型txid_snapshot,存储在某时刻事物ID可见性的信息。 其组件描述在Table 9-57。
Table 9-57. 快照组件
名字描述xmin 最早的事务ID(txid)仍然活动。所有较早事务将是可见提交了,或者要么死掉回滚了。xmax 首先作为尚未分配的txid。所有大于或等于此的txids作为这时的快照都是尚未开始的,因此不可见。xip_list 在当前快照活动的txids。这个列表只包含在xmin和xmax 之间的活动txids;有可能活动的txids高于xmax。 一个xmin
页:
[1]