近日,鹅厂数据库工程师参加了国际顶级数据库会议2019 ICDE,特为没去到现场的小伙伴带来本次大会最新前沿资讯。在2019的ICDE会议上有很多热门分享,包括工业界成果,学术界最新的研究前沿等,我们萃取了ICDE精华以飨读者,分享技术,一起共同成长。下面请跟随鹅厂高级工程师孙旭的脚步,带你走进本次盛典。
数据库与新硬件
这次会议部分Topic是和新硬件相关。我主要听取了在GPU里面实现Hash Join算法,以及在FPGA中实现压缩算法。对应的相关论文:《Revisiting Hash Join on Graphics Processors: A Decade Later》以及《Hardware-conscious Hash-Joins on GPUs》。《Column-oriented Database Acceleration using FPGAs》是用FPGA加速列存数据库。
着重说一下参加《Revisiting Hash Join on Graphics Processors: A Decade Later》的workshop的一些想法。首先回顾了近几年的在HashJoin算法实现以及他们是如何是利用GPU特性的;接下来做了一些实验对比,说明GPU的特性对Hash Join的性能影响,最后论文提出了一个对data skew的优化。
这里有几个GPU技术的新技术:
1. 线程间通信:引入了原子操作,减少了线程的冲突。
2. GPU资源利用:动态启动并行线程,以及可以让线程的执行与DMA(数据访问)同时进行(CUDA Streams)。
3. 更高效的数据移动,无须数据copy。
GPU的Hash Join分如下几种:
1. NOP:对表没有进行分区,可能导致内存放不下。
2. PTH,WSH,BSH:在GPU的共享内存生成直方图,根据直方图生成适合内存大小的分区,且在创建分区的时候,kernel执行(kernel:在GPU上运行的程序)和PCI读数据可以同时进行。
3. PRBC:不需要生成直方图来对表进行分区、并且kernel执行和PCI读取数据也能同时进行,但是相对于PTH,PRBC的执行和取数据的重叠部分更多(性能也会比较好)。
4. UMJ以及UMJ-PF:之前的算法都需要显式地移动数据到GPU内存中。而UMJ和UMJ-PF把这个工作交给了GPU来做,在UMJ实现里如果发现数据没有在GPU内存中,会产生缺页中断,并更新页表,之后就可以利用GPU的“统一内存”特性来访问数据;而UMJ-PF使用了数据预读特性(使用了cudaMemPrefetchAsync指令)。
接下来,作者提出了一个优化:当处理的数据倾斜(skew)的时候,BSH算法会动态地启动线程来处理,而PRBC会将分区打散成小分区,再round-robin到其他线程中。作者认为这些代价太高,他们提出了“根据分区大小,重新分配线程”,具体做法是扫描直方图或Hash桶的头信息,来生成线程和分区桶的对应关系,避免启动线程或者重新分区的代价。
通过对比了这几种算法的性能,发现在BSH、WSH以及PTH之间,WSH在小数据量上表现很好,BSH在数据量大的时候表现较好。其次,PRBC比基于直方图的算法(BSH、WSH、PTH)要好。第三,使用“统一内存”特性的UMJ算法性能比UMJ-PF要差。
PRBC的性能好是因为它可以更好的利用CUDA streams,让计算和取数据重叠地更多,所以性能比BSH要好。另外,BSH与WSH实现上比PTH也可以更好的利用硬件(BSH实现可以启动更多的线程干活),相对地其性能也比PTH要好。
GPU的“统一内存”特性可以将多次的page table更新合并一次来做,但是对于UMJ实现来说,一次256M的数据操作产生了大于6K的page table更新操作,这些操作导致性能比较糟糕。然而,UMJ-PF依靠数据预读屏蔽了page table的更新操作,相对来说,性能也比UMJ好。
通过这个研讨会,了解到了多种GPU的Hash Join算法实现概况,以及GPU的一些硬件特性对算法的影响。后续在数据库架构和设计中,如果有需要在GPU实现Hash Join,这些会有指导意义。
GPU的CUDA stream、原子操作对Hash Join的性能提升有很大帮助;并且了解到PCIe总线传输数据性能相对于GPU的发展基本没有什么提升,然而目前的最新的NVLink技术CPU又不支持,估计NVLink技术会是将来的一个热点。
国内厂商
在关注新硬件的之余,也关注了国内厂商的报告。
1、 阿里workshop
首先阿里介绍了数据库产品架构图,从OLAP,OLTP,以及NOSQL方面展开。PolarDB/PolarDB-X/ADB,与之前的阿里的技术沙龙相比没有新的内容,也没有深入技术细节,仅简单地介绍产品概况,例如计算存储分离、高可用架构等。没有新的技术在会上提到。
后面就是启动了一个圆桌会议,这个是应该是workshop的比较重要的部分,让几个国外专家发表一下云时代数据的趋势和挑战,例如无服务化、多租户、自动扩容等。
总的来看,阿里的这个workshop在前半部分的产品介绍没有新内容,主要是在后面与各位国外的探讨,看起来比较热烈。
二、华为
华为的2012实验室和高斯部门也在做数据库研发,华为在这次大会上也做了一个很长时间的一个报告。
讲到了GTM优化,在事务只访问一个SN的情况下会比较好,要是访问多个SN,这个优化就不灵了。也提到自动调优,记得早在几年前(大概是15-16年)就开始在做这个了,当时就说在优化器里应用机器学习,实现自动调优,从今天来看,貌似也就用了KNN算法,看来难度不小。另外针对Join的估算是如何“学习”的,没有提到,后续再看看他们的论文。
结束语
经过这次ICDE会议,接触了很多先进的研究成果,以及工业界落地实例,例如:大部分有序字典(算法),Cuckoo hash的优化,百度采用SSD、Append Only File以及SkipList等手段优化索引系统等等,接触了业界最新的研究前沿。
很多的研究在数据库与新硬件结合(FPGA、GPU等计算技术,以及SSD等存储技术)、自动调优、多数据源支持、查找算法等方面产生成果,对云数据库来说,新硬件(包括存储技术)应该是一个可以探索的领域。其他通用的数据库技术,例如查找算法或者索引技术也是可以技术落地的。另外,也注意到自动调优、自治数据库这些在实现上还是有很大难度的。
往期推荐
免费试用
包括云数据库MySQL在内的40+款热门云产品,实名认证的企业用户可免费试用!1000M内存50G数据盘的MySQL可免费体验30天,点击左下角“阅读原文”立即领取~
↓↓点“阅读原文”免费试用
好文和朋友一起看!
var first_sceen__time = (+new Date());if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); } (function(){ if (navigator.userAgent.indexOf("WindowsWechat") != -1){ var link = document.createElement('link'); var head = document.getElementsByTagName('head')[0]; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/winwx45ba31.css"; head.appendChild(link); } })();
孙旭
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
分享 在看
已同步到看一看
确定
已同步到看一看写下你的想法
最多200字,当前共字 发送
已发送
确定
写下你的想法...
取消
确定
最多200字,当前共字
发送中
微信扫一扫 关注该公众号
微信扫一扫 使用小程序
即将打开""小程序