Skew Buster是一种针对MPP数据库运行时数据倾斜引起的性能问题的技术,可以保证在复杂查询的?#25105;?#38454;段,中间数据都可以平均分布,充分利用MPP系统的多节点的并发处理能力。

Skew Buster简介

当今随着信息技术,人工智能,和网络技术的不断发展,企业在生产经营过程中产生的历史数据非常容易就达到上百T,甚至P级别,因此依赖单机的scale up能力已经无法满足。MPP数据库能够线性地横向扩展,因而可?#36816;?#30528;数据量的增加而不断扩容(scale out),相对于单机,SMP或者Share Disk方案,MPP是最适用于大数据时代的数据仓库解决构架。大多数的数据库软件厂商都提供基于MPP构架的数据仓库产品,用于为用户建立企业级数据仓库EDW(Enterprise Data Warehouse)。但在实践中, MPP构架的share nothing设计也存在一些其构架自身所带来的独特挑战。其中之一就是运行时数据倾斜问题。

在用户业务实践中,一般是由数据库管理员DBA为每一张表选择合适的分?#25216;?#23558;数据均匀地分布在集群的各个节点上。然而对于复杂的查询,查询过程需要分为多个阶段,比如在JOIN和GROUPBY的执行过程中,需要产生和使用一些较大的中间结果,或者说中间表,这些运行时产生的中间表很可能会出现数据倾斜,最常见的情形比如两表Join时,所使用的JOIN列不是DBA指定的分?#25216;?#22810;数MPP数据库都无法处理这样的查询,性能表现会急剧下降,无法到达用户满意的SLA。

采用专利的skew buster技术,EsgynDB可以保证在复杂查询的?#25105;?#38454;段,中间数据都可以平均分布,充分利用MPP系统的多节点的并发处理能力。因此EsgynDB可以高效地处理很多在其他MPP数据库中因为运行时数据倾斜而引起的性能问题。

Skew Buster的原理介绍

为了充分发挥MPP的优势,处理单个查询时必须并行地使用集群中的每一个节点和每一块磁盘。超大的数据集被平均分区到各个节点和磁盘,大型复杂查询因此可以被分割为成百上千的小查询,每一个小查询负责处理一小部分数据,这些小查询并发执行,从而提供极高的整体执行效率。

业界所有的MPP数据库都可以将表数据哈希平均分布到各个磁盘上。一般情况下,用于哈希分区的数据表列是由DBA精心选择的,以保证数据的平均分布。如果查询非常简单,比如简单的scan,或者按照分区键进行Join时,这种做法已经足够。但对于复杂查询,这并无法避免运行时的数据倾斜。

数据倾斜的原因很多,最常见的是“最常用数据”倾斜,当在某个列中,某一个或者几个值的重复次数特别多时,就会出现这类倾斜。在做表间的Join时,如果Join列不是用于平均分布数据的分区列,则执行计划需要使用join列对数据进行重新哈希分布,此时就产生了运行时倾斜。某些重复性特别高的值都被哈希至同一个节点/磁盘,这些节点成为执行的热点,从而极大地降低了整体查询执行的效率。

下图演示了一个倾斜的实例:

假设参加Join的两张表采用128分区,分区函数采用以下公式表达:

Hash(v) = v mode 128

除了v=2以外的所有其他值均平均分布。节点2则成为热点。

EsgynDB优化器可以利用直方图发现v=2的倾斜情况,并采用如下策略生成一个合适的执行计划:

对于参与JOIN的外表,那些?#25381;?#20542;斜的数据行会被普通的哈希分区函数重新分布数据到所有节点;对于有倾斜的数据行(比如v=2),优化器将采用不同的分区函数来将它们平均分布到集群的所有节点,而不再使用哈希分布,有多种不同的平均分区方法,比如利用random,或者round robin的分区方式来分布这类倾斜的值。

对于内表,根据JOIN列,将那些在外表中存在倾斜的、相应的数据行广播到所有节点;内表的其他数据行则采用普通的哈希分布。这样,上例中的v=2将平均分布于所有的计算节点,消除了运行时倾斜。每个节点执?#26012;?#22320;的Hash Join,最?#25112;?#32467;果汇总,因为每个节点处理的数据量非常平均,从而得到了最佳的执行效率。

采用Skew Buster技术,在用户的真实案例中,一个原本需要运行80?#31181;?#30340;查询减少到只需运行2?#31181;印?/p>

小结

Skew Buster技术需要一个易于扩展的优化器/执行器,以及精确的直方图作为基础和辅助。这正是EsgynDB SQL内核的特长。

数据库最初发端于1970年代,?#28304;?#29702;在线交易为主要目的,其技术特点与后来发展的数据仓库技术?#34892;?#22810;不同。EsgynDB拥有超过20年的研发历史,和其他主流数据库一样,都经过了多年的不断探索和发展,在原本最初OLTP技术的基础上不断添加OLAP需要的技术特性,比如本文所描述的Skew Buster技术。这一切都需要长期的技术和经验的积淀,而非简单的将不同产品进行叠加和组合。

此外EsgynDB同最新的Hadoop生态紧密结合,因此EsgynDB是目前业界最先进的、真正能够提供大数据HTAP解决方案的数据库产品。

作者:刘明