Perfopticon: Visual Query Analysis for Distributed Databases (Perfopticon: 针对分布式数据库的可视检索分析工具)

随着数据量的日益增大,分布式数据库逐渐被广泛采用。数据库开发人员和用户在进行数据库检索时,会不时碰到检索速度慢等问题,需要有力的工具来帮助人们分析检索的瓶颈。而在分布式数据库中,执行情况的分析变得更加复杂。这篇论文提供了Perfopticon工具,来帮助人们追踪、分析分布式数据库检索的执行过程,从而高效地定位问题所在。

为了有效分析数据库检索的执行效率并定位问题,工具需要支持以下四个任务:
T1: 了解检索语句转换后的查询计划。通常,人们输入的是易于理解的检索语句(如SQL),数据库查询时需要将它翻译成具体供机器理解的查询计划。为了能够了解检索的内部机制,人们需要知道转换后的查询计划。
T2: 了解检索过程中各个步骤的时间分布,从而定位出查询计划中的瓶颈。
T3: 了解分布式系统中的信息传递情况,以诊断由网络引起的瓶颈。
T4: 跟踪单个节点上的执行情况。

image000

图1 Profopticon界面示意图

Perfopticon紧紧围绕这4个任务进行了可视化界面设计。界面包括4个部分:查询计划视图(Query plan view),工作分布视图(Work distribution view),通讯视图(Communication view),本地执行视图(Local execution)。

查询计划视图展示了由检索语句翻译后的查询计划情况,如图所示,查询计划由若干Fragment组成,以树的方式组织,每个Fragment由若干operator组成。用户可以查看每个节点的具体信息。

image001

图2 查询计划视图

 

工作分布视图(Work distribution view)展示了每个Fragment的执行情况。每个Fragment用一个时间轴来表示,横轴为时间,纵轴表示了元组的数量。同时,为了有更详细的了解,用户还可以展开Fragment的时间轴来观察每个operator的执行情况。

image003

图3 工作分布视图

 

通讯视图(Communication view)可视化了不同的节点之间的通信量情况,用矩阵来表示。每一行表示一个源节点,每一列表示一个目标节点,矩阵中点的颜色表示了两个节点之间的通信量。

image013

图4 通信视图

 

本地执行视图(Local execution)用来展示单个节点上的运行情况。首先,条形图(如图5)描述了每个operator占总运行时间的比例。此外,另一个条形图(如图6)展示的是节点上operator的调用情况和operator的执行状况。

image005

图5 本地执行视图

 

image007

图6 本地执行视图

 
在使用实例中,作者展示了如何使用Perfopticon来诊断检索瓶颈。例如,某用户发现执行一个检索所花的时间比平常多,他通过该工具发现有一个Fragment有长尾的现象发生,即大部分的节点都已运行完毕的情况下有一小部分节点有很长的运行时间。经过进一步探索发现,这些节点之间的并没有很严重的数据分布不均的情况,而且出问题的节点都运行在同一台物理机器上。最终判断是集群中某一机器上运行着耗资源的进程。
另外,作者也举例发现了数据分布不均带来的性能问题。如图7的通信视图发现,编号为56的节点向其他节点传输了大量数据,在上一流程中,该节点就被分配到较多的数据(如图8)。这是由于数据分布的偏差,数据中某个键值对应了大量的数据,导致其所在的节点负担较大,拖慢了整体的检索速度。

image009

图7 通信视图,其中节点56想外发送到大量数据

 

image011

图8 通信视图,其中节点56接收到大量数据

 

总体而言,这个工作通过简单易于理解的视图构建出完整有效的工具,提供了一种有效的分析分布式数据库运行情况、定位性能瓶颈的方法.

 

[1] Dominik Moritz, Daniel Halperin, Bill Howe, and Jeffrey Heer. Perfopticon: Visual Query Analysis for Distributed Databases. Eurographics Conference on Visualization (EuroVis), pp.71-80, 2015.

 

评论关闭。