关于PostgreSQL 版本识别 的详解
程序员文章站
2022-03-17 08:07:56
...
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 版本识别 ,更多相关内容请关注。
相关推荐:
以上就是关于PostgreSQL 版本识别 的详解的详细内容,更多请关注其它相关文章!
上一篇: js浮点数精准计算
下一篇: 初级前端怎么才能写出高质量的代码
推荐阅读
-
关于python中的包,模块导入的问题详解(二)
-
UI设计师必知:关于线框图和设计的问题详解
-
CentOS下与Apache连接的PHP多版本共存方案实现详解,_PHP教程
-
MySQL5.7版本的only_full_group_by及关于sql_mode报错详细解决方案
-
CentOS下与Apache连接的PHP多版本共存方案实现详解
-
php中关于魔法函数以及魔法常量的使用详解
-
关于MySQL5.7.18的下载以及安装过程的图文详解
-
关于单台MongoDB实例开启Oplog的过程详解
-
html中关于表单标签form的使用详解
-
详解DedeCMS不支持PHP5.3、5.4及以上版本后台500错误白屏的解决方法