Insert\delete\update透過ctid#定位,並查看該記錄xmin\xmax的變化。
Xid:資料庫的交易ID;
Xmin:行頭部的xid訊息,xmin表示插入該記錄的事務ID
Xmax :表示刪除或lock該記錄的交易ID
xid_snapshot#:在目前叢集中結束的交易
Clog:交易提交狀態日誌
記錄格式的定義:htup_details.h:POSTGRES heap tuple header definitions.
1)查看所有xid相關的函數有哪些,這裡需要的是txid_current函數
#2)可以看到目前的事務ID
postgres=# select * from txid_current(); txid_current -------------- 1676 (1 row) 3)进行一次insert后,看事务ID已经+1 postgres=# insert into tt values(1); INSERT 0 1 postgres=# select ctid,xmin,xmax,cmin,cmax,id from tt; ctid | xmin | xmax | cmin | cmax | id -------+------+------+------+------+---- (0,1) | 1677 | 0 | 0 | 0 | 1 (1 row)
4)開啟一個事務後,進行update
postgres=# begin; BEGIN postgres=# update tt set id=3; UPDATE 1 postgres=# select ctid,xmin,xmax,cmin,cmax,id from tt; ctid | xmin | xmax | cmin | cmax | id -------+------+------+------+------+---- (0,2) | 1678 | 0 | 0 | 0 | 3 (1 row)
#5)在另一個會話中查看
postgres=# select ctid,xmin,xmax,cmin,cmax,id from tt; ctid | xmin | xmax | cmin | cmax | id -------+------+------+------+------+---- (0,1) | 1677 | 1678 | 0 | 0 | 1 (1 row)
#看目前未結束的事務,或未開啟的事務
#
postgres=# select *from txid_current_snapshot(); txid_current_snapshot ----------------------- 1684:1684: (1 row) postgres=# select * from txid_current(); txid_current -------------- 1684 (1 row)
記錄事務是否提交,在這個檔案裡面,bit:
-rw-------. 1 pg pg 8192 Jun 10 04:19 0000 [pg@localhost pg_clog]$ pwd /home/pg/data/pg_clog
本文介紹了PostgreSQL 版本識別,更多相關內容請關注php中文網。
相關推薦:
以上是關於PostgreSQL 版本識別 的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!