后摩尔定律时代的数据库研发 演讲人:吕海波 吕海波PG ACED北京大学PostgreSQL内核课程企业导师 1996年进入IT行业,至今28年软件行业从业经历,20年数据库相关工作经验。 曾在多家国内外巨头型互联网公司(阿里巴巴、京东、ebay、paypal)从事数据库管理与研究工作。 出版技术书籍《Oracle内核技术揭密》,被誉为国内最深度解密Oracle算法原理的技术书籍。 目录CONTENTS 摩尔定律时代 后摩尔定律时代的数据库研发--寻找代码的龙脉 摩尔定律时代 摩尔定律时代 摩尔定律时代 Part 2颗粒优化器启示录 颗粒优化器启示录 颗粒优化器启示录 ØGranulate: 去年年初的报道: 注意几个关键字: •性能提升40%•6.5亿美元 Intel为Granulate的定位:计算基础设施平台 颗粒优化器启示录 颗粒优化器启示录 https://www.intel.cn/content/www/cn/zh/software/software-overview/data-center-optimization-solutions.html?wapkw=granulate •往小上说:降本增效•往大上说:碳中和、能源战略 Part 3后摩尔定律时代的数据库研发---寻找代码的龙脉 后摩尔定律时代的数据库研发:寻找代码的龙脉 后摩尔定律时代的数据库研发:寻找代码的龙脉 [root@localhost ff]# gcc -g -O2 vage.c -ovage1[root@localhost ff]#[root@localhost ff]#[root@localhost ff]# ./vage1Start...TSC: 35271 3130000 626ms : 11.000000 gettimeofday(&tv1, 0);begin = rdtsc();k1 = 0;k2 = 0;for(i = 0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}}end = rdtsc();gettimeofday(&tv2, 0); 后摩尔定律时代的数据库研发:寻找代码的龙脉 后摩尔定律时代的数据库研发:寻找代码的龙脉 #define__nop8()__asm____volatile__("nop (0x1)" :::) __nop8();__nop8();gettimeofday(&tv1, 0);begin = rdtsc();k1 = 0;k2 = 0;for(i = 0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}} 后摩尔定律时代的数据库研发:寻找代码的龙脉 [root@localhost ff]# gcc -g -O2 vage.c -ovage1[root@localhost ff]#[root@localhost ff]#[root@localhost ff]# ./vage1Start...TSC: 35271 3130000 626ms : 11.000000[root@localhost ff]# gcc -g -O2 vage.c -ovage2[root@localhost ff]#[root@localhost ff]# ./vage2Start...TSC: 20353 3130000 626ms : 6.000000 __nop8();__nop8();gettimeofday(&tv1, 0);begin = rdtsc();k1 = 0;k2 = 0;for(i = 0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}} 后摩尔定律时代的数据库研发:寻找代码的龙脉 k1 = 0;k2= 0;for(i=0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}} 后摩尔定律时代的数据库研发:寻找代码的龙脉 k1 = 0;k2= 0;for(i=0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}} 后摩尔定律时代的数据库研发:寻找代码的龙脉 后摩尔定律时代的数据库研发:寻找代码的龙脉 k1 = 0;k2= 0;for(i=0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}}xor%eax,%eaxnopl0x0(%rax,%rax,1)test$0xf,%aljne0x401e49add%eax,%ebxadd$0x1,%ebpadd$0x1,%eaxcmp$0x2711,%eaxjne0x401e400x401e39 <+85>:0x401e3b <+87>:0x401e40 <+92>:0x401e42 <+94>:0x401e44 <+96>:0x401e46 <+98>:0x401e49 <+101>:0x401e4c <+104>:0x401e51 <+109>:i = 0do {if ( i & 0xf == 0 ){k1+=i;k2++;}i++;} while ( i<= 10000 ) 后摩尔定律时代的数据库研发:寻找代码的龙脉 __nop8();__nop8();k1 = 0;k2= 0;for(i=0; i<=10000; i++){if( (i & 0xf) == 0 ){k1+=i;k2++;}} 0x401e53 <+106>:0x401e55 <+108>:0x401e58 <+111>:0x401e5a <+113>:0x401e5c <+115>:0x401e5e <+117>:0x401e61 <+120>:0x401e64 <+123>:0x401e69 <+128>:xor%eax,%eaxnopl(%rax)test$0xf,%aljne0x401e61add%eax,%ebxadd$0x1,%ebpadd$0x1,%eaxcmp$0x2711,%eaxjne0x401e58 这种魔法般的代码优化,和PostgreSQL相结合,为怎样? PostgreSQL源码中有多少循环、多少条件,如果每个循环、条件都能加快接近一倍,这不就是尼奥的超能力吗!!! 这种魔法般的代码优化,和PostgreSQL相结合,为怎样? PostgreSQL源码中有多少循环、多少条件,如果每个循环、条件都能加快接近一倍,这不就是尼奥的超能力吗!!! 本次分享只为抛砖引玉 相信国产数据库会越来越强,最终超载Oracle 更多基础软件开发技术、深度行业分析,请关注公众号: IT知识刺客 谢 谢 观 看