select txid_current和select txid_current_snapshot之间的区别

时间:2015-09-16 15:44:51

标签: postgresql transactions

有以下

  Select txid_current();
Result:txid 004
Begin;
Insert into tab values(2,45);
Insert into tab values(3,56);
Commit;

现在我做的时候

Select txid_current();
It txid shows :006
txid_current_snapshot();

显示txid:05

两者之间有什么区别

1 个答案:

答案 0 :(得分:2)

好问题。

txid_current_snapshot 是文本表示形式xmin:xmax:xip_list。例如10:20:10,14,15表示xmin = 10,xmax = 20,xip_list = 10,14,15。

  

xmin仍处于活动状态的最早交易ID(txid)。都早点   事务将被提交和可见,或者回滚   死。

     

xmax第一个尚未分配的txid。比这个更晚的所有txids都是   截至快照时尚未开始,因而无形。

     

xip_list快照时的活动txids。所有这些都是   在xmin和xmax之间。 txid是xmin< = txid< xmax而不是   此列表已在快照时完成,因此   根据其提交状态显示或死亡。

当您在终端中玩游戏时,您看不到区别,但是当您有大量并行交易时,您可以。