PostgreSQL HOT技术内幕解读

我们知道在数据库行数据更新时,索引也需要进行维护,如果是高并发的情况下,索引维护的代价很大,可能造成索引分裂。Pg为了避免这个问题,采用了HOT(堆内元组技术)解决这个问题,下面我们就这个技术详细探讨一下。

我们先看看postgresql中page的结构:
在这里插入图片描述
Pd_lsn:本页面最后一次变更所写入的xlog记录对于的lsn。
Pd_checksum:页面校验和。
Pd_lower:指向行指针的末尾(空闲空间开始位置)。
Pd_upper:指向最新堆元组的起始位置(空闲空间结束位置)。
Pd_special:用在索引页中,在索引页中它指向特殊空间的起始位置,在堆表页面中它指向页尾。
Pd_pagesize_version:页面大小以及页面布局的版本号。
Pd_prune_xid:本页面可以修剪的最老元组的xid。

从上面的结构我们可以看到,pd_lower和pd_upper分别指向空闲空间的起始和终止位置,而图中的1和2是行指针,分别指向真实的元组位置。

了解了page的结构后我们再来看看元组的结构:
在这里插入图片描述
T_mix:插入此元组的事务txid。
T_max:删除或更新此元组的事务txid&#

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值