Mysql或Oracle迁移到Postgresql系产品后,经常会发生事务回滚导致的问题,具体问题一般都是类似于:
如果阅读过手册一定听过postgresql cluster的概念,第一次听到这个概念可能都会有一些困惑。cluster在安装数据库时,由initdb工具生成,initdb后产生的pgdata文件夹可以理解为cluster的物理存储结构。数据库启动、停止时pg...
ACID中的C即一致性在PG内部使用MVCC机制来保证。MVCC多版本并发控制为数据加上时间戳,读写需要额外的根据自身时间戳与数据时间戳对比,按照既定的规则可以知道这条数据对当前的SQL是否可见。MVCC避免了传统的锁方法,将锁...
mysql通常使用odirect使数据绕过OS缓冲区落盘,wal还是使用系统缓冲。这样数据的写盘不会造成系统刷脏抖动。在pgsql中数据是与OS缓冲绑定的,自己没有做字节对齐,也不使用odirect的方式直写设备,社区对数据直写的态度也一...
间隔删除数据,使用ctid(页面号,lp号)作为条件,发现数据并没有真正的从页面中删除
checkpoint_segments + wal_keep_segments + 1个文件。
本篇需要一点背景支持:《Postgresql的latch实现中self-pipe trick解决什么问题》
下面分析中涉及的集中lsn表示形式: Postgresql中lsn的三种记录形式与相关代码
《Postgresql源码(30)Postgresql索引基础B-linked-tree》
《Postgresql源码(30)Postgresql索引基础B-linked-tree》