pg电子官方网站|波肖门尾图|从DTCC2013到2024——11年数据库之旅:
source: PG电子官方网站 Time: 2025-07-06
两年后ღ◈ღ,DTCC2020ღ◈ღ,在21世纪20年代第一个年份ღ◈ღ,我也终于把我一直做的事pg娱乐电子游戏官网ღ◈ღ,明确的讲了出来ღ◈ღ:
只是在被四川电子科技大学ღ◈ღ、四川省政协委员周涛老师批评后ღ◈ღ,我不再刻意的突出“Oracle逆向“ღ◈ღ。
其实这一年我的技术路线已经全面转向PGღ◈ღ,但MySQL也搞了那么多年ღ◈ღ,出于习惯ღ◈ღ,在研究某个特性的时候ღ◈ღ,我会简单看看MySQL中是怎么实现的ღ◈ღ。
下一年的主题ღ◈ღ,标题中将不再有MySQLღ◈ღ,MySQL也会逐渐淡出我的研究范围ღ◈ღ。 DTCC 2021年ღ◈ღ,我的主题是ღ◈ღ:
这两年DTCC中ღ◈ღ,我详细比较了逻辑读ღ◈ღ、事务ID和SCN并发机制ღ◈ღ、Oracle存算分离机制ღ◈ღ、页裂ღ◈ღ。当然少了让大家再看看Oracle的“源码“ღ◈ღ:
这是kcscur3()函数ღ◈ღ,作用是得到SCNღ◈ღ。SCN对于Oracle可太重要了ღ◈ღ,这个函数绝对是极高频函数ღ◈ღ。在高并发系统pg电子官方网站ღ◈ღ,它的竞争将十分激烈ღ◈ღ。
学习Oracle是用怎样的同步机制ღ◈ღ,处理高并发导致的高竞争波肖门尾图ღ◈ღ。再结合PG源码ღ◈ღ,会有不一样的发现波肖门尾图ღ◈ღ。
就像我最近讲NUMA系列的ღ◈ღ:《NUMA的逆行人生ღ◈ღ:一文讲清什么是NUMA》第一ღ◈ღ、三ღ◈ღ、三弹ღ◈ღ,第三弹ღ◈ღ:NUMA的逆行人生ღ◈ღ:一文讲清什么是NUMA(第三弹)ღ◈ღ,就是写个程序上手去测ღ◈ღ。
想搞清楚页裂ღ◈ღ,我强烈建议你找到我的PPTღ◈ღ,用systemtapღ◈ღ,动手模拟页裂ღ◈ღ,看看数据库是啥反应ღ◈ღ。
从2020年始ღ◈ღ,我又开始了一个新的方向ღ◈ღ。最近这几年间ღ◈ღ,我以PG 12内核为目标ღ◈ღ,做了不少尝试ღ◈ღ,增加Commit IDღ◈ღ、修改StartupXLOG()增加块级恢复波肖门尾图ღ◈ღ,等等ღ◈ღ,但我觉得我写的内核代码ღ◈ღ,好像还差点意思ღ◈ღ。
我看有个知乎网友总结的ღ◈ღ:“当算法上无法再突破时ღ◈ღ,你会发现大师们开始注重代码是否对齐ღ◈ღ,是否整洁ღ◈ღ,……”就像有一本书的名字ღ◈ღ:《代码整洁之道》ღ◈ღ。
但对数据库来说ღ◈ღ,算法上并没有那么多革命式的创新了(尤其OLTP方向ღ◈ღ,OLAP方向还有创新)ღ◈ღ,没有新赛道可以让我们弯道超车ღ◈ღ,我想写出更好内核代码ღ◈ღ,难道只能对对齐ღ◈ღ、用空格不用Tab(或用Tab不用空格)pg电子官网ღ◈ღ,ღ◈ღ、写好注释ღ◈ღ、……(《代码整洁之道》ღ◈ღ,这本书我没看过ღ◈ღ,我并不是否定这本书的思想内涵ღ◈ღ,只是借用个名字ღ◈ღ。拍砖还请轻一点)我不是大师ღ◈ღ,大师们只要对对齐就好了ღ◈ღ,我不行ღ◈ღ,我还有前进的可能ღ◈ღ。
程序pg电子官方网站ღ◈ღ,代码pg电子娱乐平台ღ◈ღ,是在什么上面运行的pg电子官方网站ღ◈ღ。CPU吗ღ◈ღ,这谁不知道ღ◈ღ。或许ღ◈ღ,在数据库之外波肖门尾图ღ◈ღ,我还应该向CPUღ◈ღ、处理器方向卷ღ◈ღ。
说实话ღ◈ღ,这Coding水平波肖门尾图ღ◈ღ,连我这个职高毕业生都有点看不下去ღ◈ღ,莫非这是外包到印度后代码?但这样的“垃圾”代码遍布内核各种函数ღ◈ღ,这就绝不可能是外包写的了ღ◈ღ,总不成Oracle把整个数据库的开发ღ◈ღ,都外包到印度了吧ღ◈ღ。
DTCC2020中pg电子官方网站ღ◈ღ,我重点讲述过的SCN获取函数ღ◈ღ,kcscur3()ღ◈ღ,短短几十条指令ღ◈ღ,就有两段这样的代码ღ◈ღ:
这个kcscur3()pg电子官方网站ღ◈ღ,每个SQL在执行前ღ◈ღ,都要调用至少一次ღ◈ღ,获得SCNღ◈ღ,这函数够核心的了吧ღ◈ღ。
Oracle那么巨大的代码量ღ◈ღ,遇到屎山中的一粒屎ღ◈ღ,不也正常吗ღ◈ღ。但ღ◈ღ,这样的“垃圾”代码出现的频率太高ღ◈ღ:
经过多方了解波肖门尾图ღ◈ღ,在stackoverflow一篇讲SUN SPARC处理器的文章中ღ◈ღ,终于找到一些端倪ღ◈ღ。
原来ღ◈ღ,因为SPARC CPU的微架构特性ღ◈ღ,加入这些垃圾代码ღ◈ღ,相当于一种延迟槽ღ◈ღ,可以减少访存预测失败ღ◈ღ、分枝预测失败的影响ღ◈ღ,提高整体效率ღ◈ღ。
说实话ღ◈ღ,我没看懂这几行“垃圾代码”到底是怎么个提高整体效率ღ◈ღ,什么延迟槽ღ◈ღ、预测失败等等ღ◈ღ,超出了我的认知范围ღ◈ღ。
但有一点我看出来了ღ◈ღ,Oracle内核并没有外包给印度去做ღ◈ღ,一定是自己做波肖门尾图ღ◈ღ,而且ღ◈ღ,团队中有能人ღ◈ღ,他们对CPU一定是有相当程度的了解ღ◈ღ,才能写出这样的ღ◈ღ、莫明其妙的“垃圾代码”ღ◈ღ,以提升整体效率ღ◈ღ。
X64 CPU的内部机制和SUN SPARC不一样ღ◈ღ,这样的“垃圾代码”不单毫无意义ღ◈ღ,还会拖慢性能ღ◈ღ。
所在ღ◈ღ,在Solaris上ღ◈ღ,这还真是屎山中的一料屎pg电子官方网站ღ◈ღ。你要对Oracle的屎山感兴趣ღ◈ღ,可以到Solaris下看一眼ღ◈ღ。
虽然Oracle团队中有能人波肖门尾图ღ◈ღ,但是ღ◈ღ,估计能人的数量也不多啊pg电子模拟器ღ◈ღ,ღ◈ღ,才会出现Solaris上的垃圾代码ღ◈ღ。