PG pageinspect使用与块空间清理学习

1.创建有时候会报错

ERROR:  could not open extension control file "/usr/local/pgsql/share/extension/pageinspect.control": No such file or directory

解决方案:

2.使用

PostgreSQL中,对于每一行数据(称为一个tuple),包含有4个隐藏字段,分别是xmin、xmax、cmin、cmax。这四个字段是隐藏的,但可直接访问。

上图:

t_xmin:在创建(insert)记录(tuple)时,记录此值为插入tuple的事务ID;

t_xmax:默认值为0.在删除tuple时,记录此值。

t_cid:当一个tuple保存到硬盘的时候,它的t_ctid被初始化为它的TID(位置信息), 如果tuple被更新过,则t_ctid被改变为最新的tuple 替换版本

t_ctid:表示数据记录的物理行当信息,指的是 一条记录位于哪个数据块的哪个位移上面。 跟oracle中伪列 rowid 的意义一样的;只是形式不一样。

3.举个例子:

在进行DML操作的时候:

insert操作:事务ID为99进行insert  'A'操作,则在这一行,t_xmin=99 userdata='A'.

delete操作:事务ID为111进行delete操作,则t_xmax会记录111,user data被标记为delete,但是不会清除。

update操作:上一篇博客介绍过,PGupdate操作代价比较大,需要先删除再插入。

在下图中第一个update命令让t_cid变化,标明这一行已经被删除了(0,1)->(0,2)->(0,3)。

4.块空间清理

Vacuum专门进行清理工作,由于PG数据进行update会产生大量的垃圾数据,原因是先delete后insert,但delete并没有实际的释放空间,只是被标记为删除状态,这并不是设计缺陷,而是为了MVCC。

Vacuum可以由AutoVacuum来操作,也可以手动操作。

postgresql Tuple之t_ctid-CSDN博客

postgresql之ctid的浅谈 - lottu - 博客园 (cnblogs.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值