1、用最少的代码量 取得最大程度的性能提升-PostgreSQL 内核深度优化吕海波 杭州美创科技 技术研究院数据库内核专家内容介绍PostgreSQL内核优化之一:创建快照的改进Oracle一致性的引发的考量PostgreSQL内核优化之二:LWLockAcquire自璇的潜在问题现代数据库基础概念-快照什么是快照字面上,快照是对数据库拍个照。快照本身,类似一个时间点。快照的作用:主要用于“可见性判断”。t1:DML/Commit t2:Select t3:DML/Commit T快照时间点晚于快照点的操作不可见早于快照点的操作可见现代数据库基础概念-快照:Oracle中的快照Oracle的快照
2、t2时刻开始的Select,可以看到t1 DML的结果,但看不到t3 DML的数据Oracle使用SCN做为”快照“的时间。PG/MySQL使用XID。t1:DML/Commit t2:Select t3:DML/Commit TCursor SCN现代数据库基础概念-快照:PG中的快照(一)PG快照的本质:XID,事务开始序号A事务XID:100 B事务XID:101 C事务XID:102XID101事务先提交100事务后提交现代数据库基础概念-快照:PG中的快照(二)PG快照的本质:XID,事务开始序号T1事务XID:200 T2事务XID:201 T1事务提交现代数据库基础概念-快照:P
3、G中的快照(三)PG快照的本质:XID,事务开始序号T1事务XID:100 T2事务XID:101 T3 XID:202 T4 XID:203 T1事务提交T3事务提交现代数据库基础概念-快照:PG中的快照(四)PG快照的本质:XID,事务开始序号T6开始时,记录下所有的活动事务到一个列表中:301,303,306,称为活动事务列表T1 XID:300 T2 XID:301 T3 XID:302 T4 XID:303 T5 XID:304 T6 XID:305 T7 XID:306现代数据库基础概念-快照:PG中的快照(五)PG快照的本质:XID,事务开始序号T6开始时,记录下所有的活动事务:
4、301,303,306T1 XID:300 T2 XID:301 T3 XID:302 T4 XID:303 T5 XID:304 T6 XID:305 T7 XID:306XMIN现代数据库基础概念-快照:PG中的快照(五)PG快照的本质:XID,事务开始序号T6开始时,记录下所有的活动事务:301,303T1 XID:300 T2 XID:301 T3 XID:302 T4 XID:303 T5 XID:304 T6 XID:305 T7 XID:306现代数据库基础概念-快照:PG中的快照(六)PG快照的本质:XID,事务开始序号左边界xmin:301右边界xmax:304活动事务列表:
5、301,303T1 XID:300 T2 XID:301 T3 XID:302 T4 XID:303 T5 XID:304 T6 XID:305 T7 XID:306xmin:xmax:xip0,xip1,xipxcntPG快照的本质,是记录活动事务的列表。左右边界只是加快性能的手段。现代数据库基础概念-快照:PG中的快照(六)PG快照的本质:XID,事务开始序号左边界xmin:301右边界xmax:304活动事务列表:301,303T1 XID:300 T2 XID:301 T3 XID:302 T4 XID:303 T5 XID:304 T6 XID:305 T7 XID:306xmin:
6、xmax:xip0,xip1,xipxcnt Oracle的快照,相当于一个时间点,因为Oracle所有操作,都可以对应一个精确的时间点 PG中快照,活动事务列表,加左右边界现代数据库基础概念-快照:PG中的快照(总结)PG中的快照:时间点变时间段事务XID在xmin和xmax之间:搜索活动事务列表(减少搜索活动事务列表的次数)t1:DML t2:Select t3:DML Txmin xmax快照之外的XID:XID=xmax ,末提交快照之内的XID:XID=xmin&XID xmax是否提交不确定快照之外的XID:XID xmax)m_low_limit_no:同上m_up_limit_