近日,鹅厂数据库工程师参加了国际顶级数据库会议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等存储技术)、自动调优、多数据源支持、查找算法等方面产生成果,对云数据库来说,新硬件(包括存储技术)应该是一个可以探索的领域。其他通用的数据库技术,例如查找算法或者索引技术也是可以技术落地的。另外,也注意到自动调优、自治数据库这些在实现上还是有很大难度的。

往期推荐

《了解数据库分片(Database Sharding)》

《图数据库项目DGraph的前世今生》

《MySQL性能基准测试对比:5.7 VS 8.0》

《前沿观察 | 如何选择合适的数据库代理》

免费试用

包括云数据库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 版的赞赏功能被关闭,可通过二维码转账支持公众号。

阅读原文

阅读

分享 在看

已同步到看一看

[取消](javascript:😉 [发送](javascript:😉

[我知道了](javascript:😉

朋友会在“发现-看一看”看到你“在看”的内容

确定

已同步到看一看[写下你的想法](javascript:😉

最多200字,当前共字 发送

已发送

朋友将在看一看看到

确定

写下你的想法...

取消

发布到看一看

确定

最多200字,当前共字

发送中

[图片]

微信扫一扫
关注该公众号

[图片]

微信扫一扫
使用小程序

即将打开""小程序

[取消](javascript:void(0%29;) [打开](javascript:void(0%29;)

文章来源于腾讯云开发者社区,点击查看原文