CN108370324B - 分布式数据库作业数据倾斜检测 - Google Patents

分布式数据库作业数据倾斜检测 Download PDF

Info

Publication number
CN108370324B
CN108370324B CN201580084527.XA CN201580084527A CN108370324B CN 108370324 B CN108370324 B CN 108370324B CN 201580084527 A CN201580084527 A CN 201580084527A CN 108370324 B CN108370324 B CN 108370324B
Authority
CN
China
Prior art keywords
query
phase
duration
metric
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580084527.XA
Other languages
English (en)
Other versions
CN108370324A (zh
Inventor
陈坦
陈昊
张勇
孙立斌
李鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
eBay Inc
Original Assignee
eBay Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by eBay Inc filed Critical eBay Inc
Publication of CN108370324A publication Critical patent/CN108370324A/zh
Application granted granted Critical
Publication of CN108370324B publication Critical patent/CN108370324B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3346Query execution using probabilistic model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种用于识别数据倾斜是否导致了分布式数据库的查询的映射阶段和/或化简阶段中的延迟的***和方法。该***和方法识别与数据库查询有关的各种度量的值。这些度量包括映射阶段和化简阶段持续时间和各种有关的度量。该***和方法收集多个查询的统计数据以确定度量和映射阶段和化简阶段持续时间之间的相关性水平。基于统计数据,该***和方法确定查询/响应的映射和化简阶段中的一个或两个是否耗费比期望的时间更长的时间。如果持续时间比期望的更长,则***将标识延迟是由数据倾斜导致的,并且通知查询的发起者。

Description

分布式数据库作业数据倾斜检测
技术领域
本公开的实施例总体涉及数据处理,并且更具体地但并非限制性地涉及在数据库查询期间延迟来源的确定。
背景技术
包括某些SQL数据库、Hadoop数据库(例如
Figure BDA0001657745620000011
Figure BDA0001657745620000012
数据库)等跨众多计算机分布的数据库接收查询,对于某些此类数据库,针对分布在不同的服务器上的数据集的不同部分并行执行这些查询,然后向查询的发起者和/或一个或多个其他指定的位置返回响应。当被查询的数据均匀地分布在多个服务器中时,对查询的响应通常返回得最快。在所有其他情况相同的情况下,当被查询的数据集完全集中或大部分集中于少数的服务器(或一个服务器)上时,某些分布式数据库耗费较长的时间来响应查询。因此,这种数据的集中(有时称为“数据倾斜”)可能会导致长时间延迟。然而,所有其他的情况并不总是相同。可能存在各种其他的原因导致对查询的响应被长时间延迟,诸如资源拥塞。即,分布式数据库可能同时接收大量的查询。在这种情况下,即使是对分布良好的数据的查询也将耗费很长时间。
发生这种情况是因为各种查询是由各种用户和用户组设计和发送到数据库服务器的。在用户中通常很少甚至没有协调来保证***接收稳定的查询供应,而不是在一些时间段期间(例如,工作日从上午9点到下午5点)接收很多查询,而在其他时间(例如,周末凌晨2点)少有查询。
尽管某些数据库***基于进入的查询重新分配数据,但在某些情况下,这并非必要,即使当用于特定查询的数据是严重倾斜的。例如,某些查询可能相当简单和/或在很少的数据上执行,使得即使当该数据大比例集中在一个服务器上时,只要数据库(或针对该查询的数据所集中的特定服务器)不拥塞,响应就会在可接受的时间量内来到。也就是说,即使在存在严重的数据倾斜和长延迟的情况下,也可能不是严重的数据倾斜导致了长延迟。
在本文中,数据库服务器的查询的执行和响应的返回可以被称为“作业”,并且在提交查询和接收响应之间的延迟可以被称为“作业延迟”。目前,很难知道作业延迟是由数据倾斜问题导致的还是由拥塞问题导致的。这对分布式数据库的用户来说是一个问题,因为数据倾斜问题将导致他们的作业运行极其缓慢,这不仅会影响数据库的使用的业务合同,还会由于资源争夺而对整个数据库的性能造成冲击。因此,需要一种用户友好的工具来确定长时间作业延迟的原因。
附图说明
各种所附附图仅示出了本公开的示例实施例,并且不可以被认为限制其范围。
图1是示出根据一些示例实施例的联网***的框图。
图2是数据库查询执行***的模块图。
图3概念性地示出了根据一些实施例的用于收集在识别分布式数据库中的作业延迟的原因中使用的度量值的方法。
图4概念性地示出了根据一些实施例的用于确定作业的特定阶段中的数据倾斜的方法。
图5是示出根据一些示例实施例的可以安装在机器上的软件架构的示例的框图。
图6示出了根据示例实施例的具有计算机***的形式的机器的示图表示,在所述计算机***中,可以执行一组指令以使所述机器执行本文讨论的方法中的任意一个或多个方法。
本文提供的标题仅为方便起见,而不一定影响所使用的术语的范围或含义。
具体实施方式
以下描述包括体现本公开的示意性实施例的***、方法、技术、指令序列和计算机器程序产品。在以下描述中,为了解释的目的,阐述了很多细节以提供对本发明主题的各种实施例的理解。然而,本领域技术人员将显而易见的是,本发明主题的实施例可以在没有这些具体细节的情况下实施。一般地,不必详细示出众所周知的指令实例、协议、结构和技术。
一些实施例提供了一种延迟识别***和方法,其通过通知用户在分布式数据库的查询和响应期间的延迟(“作业延迟”)的原因来提高数据库检索的效率。基于对与一个或多个作业有关的多个度量中的每个度量的多个统计特征进行分析来确定延迟的原因。一些实施例的测量的度量包括与作业的映射阶段、作业的混洗阶段(shuffle phase)和作业的化简阶段(reduction phase)有关的测量。
映射阶段将要查询的数据过滤并分类到多个队列中。例如,映射阶段可以按照公司名称将销售订单(对各公司)分类为一个名字一个队列,每个队列包含相对应的公司的订单。
混洗阶段(有时称为“混洗和排序”阶段)对来自于映射阶段的数据进行准备,并将数据移动到将执行化简阶段的操作的节点处。当映射阶段完成时,按照在多个数据库服务器当中划分的键值对映射阶段所识别的数据进行排序,然后将数据写入到指定的数据库服务器。在上面的示例中,可以按照订单号对每个队列中的数据进行排序,然后将每个队列的数据(此处,为每个公司的名称)和每个队列发送到它自己的服务器以用于化简阶段。在某些情况下,这是发生数据倾斜的一个契机,因为根据公司盲目划分的查询可能会在少量的公司产生大部分销售订单的情况下造成数据倾斜。
化简阶段对作业进行总结。继续上面的示例,化简阶段可以对每个队列中的订单的数量进行计数,识别每个公司做了多少订单。
根据一些实施例的***测量以下度量中的一些或全部,有时称为“计数器”,(在下面做进一步解释):1)映射阶段持续时间;2)化简阶段持续时间;3)映射阶段所读取的记录的计数;4)化简阶段所读取的记录的计数;5)合并器所读取的记录的计数;6)“溢出的”映射记录的计数;7)化简器所读取的混洗记录的计数,8)在映射阶段读取到本地文件***的字节数的计数;9)在化简阶段读取到本地文件***的字节数的计数;10)在映射阶段读取到分布式文件***(例如,
Figure BDA0001657745620000041
分布式文件***(HDFS))的字节数的计数;和11)在化简阶段读取到分布式文件***(例如,HDFS)的字节数的计数。
根据一些实施例的***基于对在特定时间段(关于时间段的更多详情,参见下文)中执行的多个作业的测量度量,来(针对每个度量)确定以下统计数据中的一些或全部:1)度量的平均值(例如,均值),2)度量的最大值,3)度量的最小值,和4)特定的百分点值(例如,第50个百分点的值、第95个百分点的值等);5)度量的值的分布;6)度量的最大z分数;7)作业的每个度量的前N个(其中N是所选整数)值;和8)度量与作业的映射持续时间/化简持续时间之间的相关性。
这些统计数据可以在与被分析作业的时间段有关的选定时间段中收集。一些实施例允许在被分析作业的时间和正常统计数据之间的一个或多个选定的关系。在一些实施例中,这些关系可以包括:1)在对作业进行统计数据的分析期间中的某个时间开始的时间段;2)以将要分析的作业的开始作为结束的时间段;3)包括被分析的作业之前和之后两者的时间的时间段;4)可比较的时间(例如,对于在星期一的上午9点到上午10点之间运行的作业,可以是对于不同星期的一个或多个星期一的该时段期间运行的作业的汇总统计数据);和5)由用户选定的时间。例如,如果在选定的时间段内,在集群上运行了一百个作业,其映射阶段持续时间平滑地从1秒变化到100秒(即,1、2、3、……98、99、100),则汇总统计数据将具有:1)平均映射阶段持续时间为50.5秒;2)最小映射阶段持续时间为1秒;3)最大映射阶段持续时间为100秒;和4)映射阶段持续时间的第95个百分点的值为95秒。
上面所提及的度量的值的分布是度量值在数据库服务器集群上运行的作业上的分布。特定度量的相关性是特定度量和相应的阶段的持续时间之间的相关性。例如,如果增加映射阶段中所读取的记录的数量总是导致映射阶段持续时间成比例地增加,那么这两个度量之间的相关性就是1。类似地,如果在化简阶段被读取到本地文件***中的字节数的增加导致化简阶段持续时间接近但不完全是成比例的量的增加,那么相关性小于1但接近1。在一些实施例中,对合并器输入记录度量统计数据和/或化简混洗记录统计数据进行检查,以确定度量与化简阶段持续时间是否有关。在其他实施例中,对这些组统计数据中的一个或两个都进行检查以确定度量与映射阶段持续时间是否有关。
当确定的度量与它所对应的持续时间之间的相关性高于设定的阈值水平(例如0.9)时,***可以使用该确定作为用于确定作业延迟是否是由数据倾斜所导致的多个标准之一。***可以将该确定与查询的最大z分数(对于持续时间,给定该度量的特定值)是否大于阈值的确定相结合。本领域普通技术人员将理解的是,由于映射阶段持续时间度量总是与其自身100%有关,因此映射阶段持续时间度量不被用于识别数据倾斜是否会导致映射阶段持续时间的增加。出于类似的原因,化简阶段持续时间度量不被用于确定数据倾斜是否会导致化简阶段持续时间的增加。
一些查询本质上比其他查询耗费更多时间。例如,检索一百万条记录的查询很可能比检索一千条记录的查询耗费更多时间。因此,如果特定度量与持续时间是强有关的,则***对该度量的值进行考虑。***然后判断特定查询的特定阶段是否比所期望的度量的给定值耗费更长时间。例如,一百万条记录的查询的映射阶段持续时间为一百秒可能位于期望的范围内,但是一千条记录的查询的映射阶段持续时间为一百秒将远远比期望的时间长。
***可以基于度量值的范围来计算期望的持续时间的值(例如,1001至2000条记录的查询的一个平均持续时间和标准偏差,2001至3000条记录的查询的第二平均持续时间和标准偏差)。一旦计算出这些平均值和标准偏差,就可以使用特定查询的度量的值来确定具有该度量值的查询的持续时间的统计分布。
针对特定持续时间值的分布,可以基于与分布的期望(平均)值不同的特定值的量除以分布的标准偏差的比值来计算z分数。例如,比平均值高2个标准偏差的值将具有的z分数为2。根据强相关的度量中的每个值,每个作业都会具有一个持续时间的期望值。具有给定的特定度量的值的持续时间的z分数可通过如下方式确定:1)该特定度量的值,2)该特定度量的值的对应持续时间的平均值是多少,3)对应持续时间的实际值离对应持续时间的平均值多远a)在具有该度量的值的所有作业中,b)在集群上,c)在选定时间内,4)除以根据具有相同的特定度量值的查询的持续时间计算的持续时间的标准偏差。
对于每个高度相关的度量,***可以确定该度量的值的多个范围中的每个范围内的作业的对应持续时间的最大z分数。当查询落入特定度量的值的特定范围内时,将对应的持续时间的z分数与最大z分数进行比较。当z分数大于最大z分数的阈值比例时,查询被标识为具有由于数据倾斜所导致的延迟。
虽然在上面的示例中,仅使用相关性统计数据和最大z分数统计数据来识别数据倾斜,但在其他实施例中,11个度量和8个统计数据的88种组合(除映射/化简持续时间和它们自己之间的相关性以外)中的一些或全部均可以用于识别数据倾斜是否导致了作业延迟。
参考图1,示出了高级的基于客户端-服务器的网络架构100的示例实施例。具有基于网络的市场或支付***的示例形式的联网***102经由网络104(例如互联网或广域网(WAN))向一个或多个客户端设备110提供服务器侧功能。图1示出了例如运行在客户端设备110上的数据库查询接口112、数据库调试助手114和编程客户端116。
客户端设备110可以包括但不限于:移动电话、台式计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、笔记本计算机、多处理器***、基于微处理器或可编程的消费电子产品、游戏机、机顶盒或用户可以用来访问联网***102的任何其他通信设备。在一些实施例中,客户端设备110可以包括显示模块(未示出)以显示信息(例如,以用户接口的形式)。在另一些实施例中,客户端设备110可以包括触摸屏、加速度计、陀螺仪、相机、麦克风、全球定位***(GPS)设备等中的一个或多个。客户端设备110可以是用于执行涉及联网***102内的数字物品的交易的用户设备。在一个实施例中,联网***102是基于网络的市场,其响应于对产品列表的请求,发布包括在基于网络的市场上可用的产品的物品列表的公告,并且管理这些市场交易的支付。一个或多个用户106可以是人、机器或与客户端设备110交互的其它装置。在实施例中,用户106不是网络架构100的一部分,但可以经由客户端设备110或另一装置与网络架构100进行交互。例如,网络104的一个或多个部分可以是自组织(ad hoc)网络、内联网、外联网、虚拟专用网(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网的一部分、公共电话交换网(PSTN)的一部分、蜂窝电话网、无线网络、WiFi网络、WiMax网络、另一类型的网络或两个或更多个这样的网络的组合。
每一个客户端设备110可以包括一个或多个应用(也称作“app”),例如但不限于数据库查询接口、消息传送应用、电子邮件(email)应用、电子商务网站应用(也称作市场应用)等。在一些实施例中,如果电子商务网站应用被包括在给定的客户端设备110中的一个中,则该应用被配置为本地提供用户接口以及如下情况下的至少一些功能,所述情况为:所述应用被配置为根据需要与联网***102通信,以获得本地不可获得的数据和/或处理能力(例如,访问可供销售的物品的数据库、认证用户、验证支付方法等)。相反,如果电子商务网站应用未被包括在客户端设备110中,则客户端设备110仍然可以使用其数据库查询接口112来访问服务器140上容纳的数据库(或其变型)。
一个或多个用户106可以是人、机器或与客户端设备110交互的其他装置。在示例实施例中,用户106不是网络架构100的一部分,但可以经由客户端设备110或其它装置与网络架构100进行交互。例如,用户向客户端设备110提供输入(例如,触摸屏输入或字母数字输入),并且经由网络104将该输入传送给服务器140。在这种情况下,联网***102响应于从用户接收输入,经由网络104将信息传达到客户端设备110以呈现给用户。以这种方式,用户可以使用客户端设备110与服务器140交互。
应用程序接口(API)服务器120和网络服务器122耦合至一个或多个服务器140,并分别向一个或多个服务器140提供编程接口和网络接口。服务器140可以容纳一个或多个数据库查询执行***,每个数据库查询执行***可以包括一个或多个模块或应用,并且每个模块或应用可以具体体现为硬件、软件、固件或它们的任意组合。相应地,服务器140被示为耦合到一个或多个数据库服务器124,所述数据库服务器有助于对一个或多个信息存储库或数据库126的访问。在示例实施例中,数据库126是存储要发布(例如,发布或列清单)到公告***的信息和经由数据库查询接口112提供数据库查询访问的存储设备。根据示例实施例,数据库126还可以存储数字物品信息。
数据库查询执行***150可以使用数据库接口112的用户所提供的查询,来提供可操作以将数据库查询的操作命令划分为多个并行操作的功能,该多个并行操作由一个或多个数据库服务器124来执行。在一些实施例中,数据库查询执行***在数据库服务器顶部运行(例如,SQL服务器、Oracle、MySQL、Hadoop或其他数据库服务器)。在其他实施例中,数据库查询执行***是数据库服务器的执行引擎/查询计划引擎的一部分。在任一此类实施例中,数据库查询执行***150可以访问来自数据库126和其他资源的检索数据。
此外,虽然图1示出的基于客户端-服务器的网络架构100采用了客户端-服务器架构,但是本发明主题当然不限于此种架构,并且可以同样良好地应用于例如分布式或对等架构***。数据库查询执行***150还可被实现为独立的软件程序,该独立的软件程序不一定具有联网能力。
数据库查询接口112可以经由web服务器122所支持的web接口访问数据库。数据库调试助手114可以接收关于一组经由账户(例如,使用一个或多个客户端设备上的数据库查询接口112)所产生的一个或多个查询的推荐和统计。
模块、组件和逻辑
某些实施例在本文中被描述为包括逻辑或多个组件、模块或机构。模块可以构成软件模块(例如,机器可读介质上体现的代码)或硬件模块。“硬件模块”是能够执行某些操作的有形单元,并且可以按照某种物理方式配置或布置。在各种示例实施例中,一个或多个计算机***(例如独立的计算机***、客户端计算机***或服务器计算机***)或者计算机***的一个或多个硬件模块(例如处理器或处理器组)可由软件(例如应用或应用部分)配置为操作以执行本文描述的特定操作的硬件模块。
在一些实施例中,硬件模块可以按照机械方式、电子方式或其任意适当组合来实现。例如,硬件模块可以包括永久地被配置为执行特定操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可以包括由软件临时配置为执行特定操作的可编程逻辑或电路。例如,硬件模块可以包括由通用处理器或其他可编程处理器执行的软件。一旦由这样的软件配置,硬件模块就变成特定的机器(或机器的特定组件),其被专门定制用于执行所配置的功能,而不再是通用处理器。应理解:以机械方式、以专用和永久配置的电路或以临时配置的电路(例如由软件配置)实现硬件模块的决定可出于成本和时间的考虑。
因此,短语“硬件模块”应理解为涵盖有形实体,是在物理上构造、永久配置(例如硬线连接)或临时配置(例如编程)为以特定方式操作或执行本文描述的特定操作的实体。如本文所使用的,“硬件实现的模块”指硬件模块。考虑临时配置(例如编程)硬件模块的实施例,无需在任一时刻配置或实例化硬件模块中的每一个。例如,在硬件模块包括被软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间被配置为分别不同的专用处理器(例如包括不同的硬件模块)。因此,软件将特定的一个或多个处理器例如配置为在一个时刻构成特定硬件模块并在另一时刻构成不同的硬件模块。
硬件模块可以向其他硬件模块提供信息并从其他硬件模块接收信息。因此,所描述的硬件模块可以被看作通信地耦合。如果同时存在多个硬件模块,则可以通过两个或更多个硬件模块之间的信号传输(例如通过适当的电路和总线)实现通信。在多个硬件模块在不同时间配置或实例化的实施例中,可以例如通过存储并获取多个硬件模块可访问的存储器结构中的信息来实现这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作并在与其通信耦合的存储器设备中存储该操作的输出。另一硬件模块接着可以稍后访问存储器设备,以取回并处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且能够对资源(例如信息的集合)进行操作。
此处描述的示例方法的各种操作可以至少部分地由临时配置(例如通过软件)或永久配置为执行有关操作的一个或多个处理器执行。无论是临时还是永久配置,这样的处理器可以构成操作以执行本文描述的一个或多个操作或功能的处理器实现的模块。如本文所使用的,“处理器实现的模块”指使用一个或更多个处理器实现的硬件模块。
类似地,本文描述的方法可以至少部分地由处理器实现,其中特定处理器或多个处理器是硬件的示例。例如,所述方法的至少一些操作可由一个或多个处理器或处理器实现的模块执行。此外,一个或多个处理器还可操作以支持在“云计算”环境中或作为“软件即服务”(SaaS)执行有关操作。例如,操作中的至少一些可由计算机(作为包括处理器的机器的示例)组执行,这些操作可经由网络(例如互联网)并经由一个或多个适当接口(例如应用程序接口(API))来访问。
某些操作的执行可以分布在处理器中,并不只驻留在单个机器内,而是部署在多个机器中。在一些示例实施例中,处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境、办公环境或服务器群中)。在其他示例实施例中,处理器或处理器实现的模块可以分布在多个地理位置中。
图2示出了数据库查询执行***150。***150包括对接收的数据库查询进行解析的解析模块200、更新模块210、***模块220、删除模块230、根据选择创建表格模块240、连接模块250和执行计划模块260。解析模块200可以基于接收的数据库查询来确定数据库执行***150的哪些其他模块要激活以及将什么参数发送到其他模块。更新模块210用新的值替换现有数据库单元的值。***模块220将新的结构(例如,表格中的新列或新行)添加到数据库。删除模块230从数据库中移除值。根据选择创建表格模块240通过从现有表格中选择数据来在数据库中创建表格。连接模块250将来自多于一个表格的数据进行组合。当被组合的数据的数据类型不相同时,必须将一个或多个现有数据集转变为不同形式的数据,以便于连接数据。执行计划模块260响应于数据库查询,确定用于检索数据的计划。在某些***中(例如,在Oracle数据库***中),通过诸如“解释计划”命令的命令来访问执行计划,以向用户和/或向另一个模块显示。
本领域普通技术人员将理解的是,该模块列表并非穷举,***150可以包括附加模块和/或以单个模块执行多于一个所列模块的操作。模块210至260中的每个模块命令图1中的数据库服务器126来执行相对应的查询操作。
图3概念性地示出了根据一些实施例的用于收集在识别分布式数据库中的作业延迟原因中使用的度量的值的方法300。尽管以下描述适用于按照以逐项查询为基础所做的分析,但本领域普通技术人员将理解的是,分析可以在同一查询的多个运行上或在多个查询上执行,以捕获有关的统计数据。尽管示出了收集数据的特定顺序,但其他实施例以其他的顺序收集数据。
方法300对在映射阶段从本地文件***(例如,做出查询的文件***)中读取的字节进行计数(在305处)。通常,从本地***中读取的字节越多,映射阶段的持续时间越长。
方法300对在映射阶段从分布式文件***中读取的字节进行计数(在310处)。通常,在映射阶段从分布式文件***中读取的字节越多,映射阶段的持续时间越长。然而,如果严重的数据倾斜的情况导致特定查询在映射阶段的延迟,则映射阶段的持续时间将相对于期望的值增加,并且***将把数据倾斜标识为原因。
该方法对在映射阶段期间输入的记录的数量进行计数(在315处)。同样地,在映射阶段输入的记录越多倾向于致使映射阶段越长,但异常的持续时间的增加指示了数据倾斜。
该方法测量映射阶段持续时间(在320处)。对于特定查询,如果该持续时间比从映射阶段有关度量的值预测的更长,则该持续时间指示了数据倾斜。
该方法对映射阶段溢出的记录的数量进行计数(在325处)。在这种情况下,如果一个记录必须在作业期间被写入到磁盘中(而不是保存在更快的存储器中,例如RAM),则该记录被视为“溢出”。在映射阶段溢出的记录越多倾向于致使映射阶段越长,因为写入到磁盘和从磁盘中读取通常比将记录保存在RAM中慢。同样地,异常长的查询持续时间指示了数据倾斜。
该方法对合并器输入的记录的数量进行计数(在330处)。在映射阶段和化简阶段之间使用合并器以减少在映射阶段和化简阶段之间传送的数据量。大量的合并器输入的记录是增加映射阶段的持续时间还是增加化简阶段的持续时间取决于***如何表征合并器时间。
该方法对化简混洗记录的数量进行计数(在335处)。混洗阶段(有时称为“混洗和排序”阶段)对来自于映射阶段的数据进行准备,并将数据移动到将执行化简阶段的操作的节点处。大量的混洗记录是增加映射阶段的持续时间还是增加化简阶段的持续时间取决于***如何表征混洗和排序时间。
方法300对在化简阶段从本地文件***(例如,做出查询的文件***)中读取的字节进行计数(在340处)。通常,从本地***中读取的字节越多,化简阶段的持续时间越长。
方法300对在化简阶段从分布式文件***中读取的字节进行计数(在345处)。通常,在化简阶段从分布式文件***中读取的字节越多,化简阶段的持续时间越长。然而,如果严重的数据倾斜的情况导致特定查询在化简阶段的延迟,则化简阶段的持续时间将相对于期望的值增加,并且***将把数据倾斜标识为原因。
该方法对在化简阶段期间输入的记录的数量进行计数(在350处)。同样地,在化简阶段输入的记录越多倾向于致使化简阶段越长,但异常的持续时间的增加指示了数据倾斜。
该方法测量化简阶段持续时间(在355处)。对于特定查询,如果该持续时间比从化简阶段有关度量的值预测的更长,则该持续时间指示了数据倾斜。
该方法然后对数据进行分析(在360处)。***对特定查询的数据进行分析以确定对应的作业是否由于数据倾斜而延迟,如果是,则确定数据倾斜是处于映射阶段还是化简阶段,或是处于两个阶段。
图4概念性地示出了根据一些实施例的用于确定作业的特定阶段中的数据倾斜的方法400。方法400确定(基于众多作业的统计分析)特定度量和作业的对应持续时间之间的相关性(例如,对于映射阶段有关的度量,对应持续时间是映射阶段持续时间,对于化简阶段有关的度量,对应持续时间是化简阶段持续时间)(在410处)。该方法确定该相关性是否大于阈值(例如,90%、95%等)(在420处)。如果度量的相关性不大于阈值,则方法移动到操作450。该方法确定是否有另一个要分析的度量(在450处),如果是,则方法返回操作410判断另一个相关性。如果否,则方法400结束。
如果(在420处)该相关性高于阈值,则该方法确定相关持续时间的z分数是否高于阈值(例如,最大z分数的某个分数,诸如最大z分数的90%)(在430处)。如果z分数高于阈值,则该方法将数据倾斜标识为查询的对应作业阶段的延迟的原因。如果z分数低于阈值,则该方法不确定该度量指示了数据倾斜是作业延迟的原因。然而,该方法可以基于对其他度量的分析来发现数据倾斜是原因。该方法然后返回操作450,并循环通过每个度量直到全部度量被分析,然后方法结束。
结合图1至图4描述的模块、方法、应用等在一组机器和有关联的软件架构的背景下的一些实施例中实现。以下部分描述了适用于与所公开的实施例一起使用的代表性软件架构和机器(例如,硬件)架构。
软件架构与硬件架构一起使用,以创建针对特定用途定制的设备和机器。例如,与特定软件架构耦合的特定硬件架构将创建移动设备,诸如移动电话、平板设备等。稍微不同的硬件和软件架构可以产生用于“物联网”的智能设备。而另一组合产生了在云计算架构中使用的服务器计算机。本文并没有介绍这样的软件和硬件架构的所有组合,因为本领域技术人员可以容易地理解在不同于本文所包含的公开的背景下如何实现本发明。
图5是示出代表性软件架构502的框图500,该代表性软件架构502可以结合本文所描述的各种硬件架构一起使用。图5仅是软件架构的非限制性示例,并且将理解的是,可以实现许多其他架构以促进本文描述的功能。软件架构502可以在诸如图6的机器600的硬件上执行,所述机器600中除其他之外还包括处理器610、存储器630和I/O组件650。代表性的硬件层504被示出,并且可以表示例如图6的机器600。代表性的硬件层504包括具有关联的可执行指令508的一个或多个处理单元506。可执行指令508表示软件架构502的可执行指令,包括图1至图4的方法、模块等的实现。例如,解析模块200可以被实现为处理单元。硬件层504还包括存储器和/或存储模块510,所述存储器和/或存储模块510也具有可执行指令508。硬件层504还可以包括由512所示的其它硬件,其表示硬件层504的任何其他硬件,例如作为机器600的一部分示出的其他硬件。
在图5的示例架构中,软件502可以被概念化为层的堆栈,其中每个层提供特定的功能。例如,软件502可以包括诸如操作***514、库516、框架/中间件518、应用520和表示层522等层。在操作上,应用520和/或层内的其它组件可以通过软件堆栈来调用应用编程接口(API)调用524,并且响应于API调用524接收被示出消息526的响应、返回值等等。所示出的层在本质上具有代表性,并不是所有的软件架构都具有所有层。例如,一些移动或专用操作***可能不提供框架/中间件层518,而其他***可以提供此类层。其它软件架构可以包括附加层或不同层。
操作***514可以管理硬件资源并提供公共服务。操作***514可以包括例如内核528、服务530和驱动532。内核528可以用作硬件和其他软件层之间的抽象层。例如,内核528可以负责存储器管理、处理器管理(例如调度)、组件管理、联网、安全设置等。服务530可以为其它软件层提供其它公共服务。驱动532可以负责控制底层硬件或与底层硬件接口连接。例如,取决于硬件配置,驱动532可以包括显示器驱动、相机驱动、
Figure BDA0001657745620000141
驱动、闪存驱动、串行通信驱动(例如通用串行总线(USB)驱动),
Figure BDA0001657745620000142
驱动、音频驱动、电源管理驱动等等。
库516可以提供可由应用520和/或其它组件和/或层利用的公共基础设施。库516通常提供允许其它软件模块以与底层操作***514功能(例如,内核528、服务530和/或驱动532)直接接口连接相比更容易的方式来执行任务的功能。库516可以包括可提供诸如存储器分配功能、串操纵功能、数学功能等功能的***534库(例如,C标准库)。另外,库516可以包括API库536,例如媒体库(例如,用于支持各种媒体格式(诸如MPREG4、H.264、MP3、AAC、AMR、JPG、PNG)的呈现和操纵的库)、图形库(例如,可以用于在显示器上渲染图形内容中的2D和3D的OpenGL框架)、数据库(例如,可以提供各种关系数据库功能的SQLite)、web库(例如,可以提供网络浏览功能的WebKit)等。库516还可以包括各种各样的其它库538,以提供到应用520和其它软件组件/模块的许多其他API。
框架518(有时也称为中间件)可以提供可由应用520和/或其它软件组件/模块利用的更高级别的公共基础设施。例如,框架518可以提供各种图形用户界面(GUI)功能、高级资源管理、高级位置服务等。框架518可以提供可由应用520和/或其它软件组件/模块利用的广泛范围的其它API,其中一些可以特定于特定操作***或平台。
应用520包括内置应用540和/或第三方应用542。代表性的内置应用540的示例可以包括但不限于联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用程序542可以包括任何内置应用以及各种其他应用。在一个具体的示例中,第三方应用可以包括数据库查询接口和/或数据库调试助手。在另一个具体的示例中,第三方应用542(例如,由与特定平台的供应商不同的实体使用AndroidTM或iOSTM软件开发工具包(SDK)而开发的应用)可以是在移动操作***(诸如iOSTM、AndroidTM
Figure BDA0001657745620000151
Phone或其他移动操作***)上运行的移动软件。在该示例中,第三方应用542可以调用由诸如操作***514之类的移动操作***提供的API调用524,以促进本文描述的功能。
应用520可以利用内置操作***功能(例如,内核528、服务530和/或驱动器532)、库(例如,***534、API 536和其他库538)、框架/中间件518来创建用户接口以与***的用户交互。备选地或附加地,在一些***中,与用户的交互可以通过表示层(诸如表示层544)发生。在这些***中,应用/模块“逻辑”可以与和用户交互的应用/模块的各方面分离。
一些软件架构利用虚拟机。在图5的示例中,这由虚拟机548示出。虚拟机创建软件环境,在该软件环境中应用/模块可以像在硬件机器(例如,诸如图6的机器)上执行一样执行。虚拟机由主操作***(图6中的操作***514)容纳,并且通常(尽管并不总是)具有管理虚拟机的操作以及与主操作***(即,操作***514)连接的接口的虚拟机监控器546。软件架构在虚拟机(例如操作***550、库552、框架/中间件554、应用556和/或呈现层558)内执行。在虚拟机548内执行的这些软件架构的层可以与先前描述的对应层相同,或者可以不同。
示例机器架构和机器可读介质
图6是示出了根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介质)中读取指令并执行本文所讨论的方法中的任何一个或多个的机器600的组件的框图。具体地,图6示出了计算机***的示例形式的机器600的示意图,其中可以执行指令616(例如,软件、程序、应用、小应用、app或其他可执行代码)以使机器600执行本文讨论的任何一种或多种方法。例如,指令可以使机器执行图3至图4的流程图。另外,或可选地,指令可以实现图2中的解析模块200、更新模块210、***模块220、删除模块230、根据选择创建表格模块240、连接模块250和/或执行计划模块260等。指令将通用的未编程的机器转换成被编程为以所描述的方式执行所描述和示出的功能的特定机器。在备选实施例中,机器600作为独立设备操作或可以耦合(例如,联网)到其他机器。在联网部署中,机器600可以在服务器-客户端网络环境中以服务器机器或客户端机器的容量操作,或者作为对等(或分布式)网络环境中的对等机器操作。机器600可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体***、蜂窝电话、智能电话、移动设备、可穿戴设备(例如智能手表)、智能家居设备(例如智能家电)、其它智能设备、web设备、网络路由器、网络交换机、网桥、或能够顺序地或以其它方式执行指定机器600要采取的动作的指令616的任意机器。根据图1至图4所描述的评分***可以在一个或多个服务器上实现,仅结果的显示在客户端设备上实现。可选地,评分***可以使用服务器收集数据,但在客户端设备上分析该数据并在客户端设备上显示结果。此外,尽管仅示出了单个机器600,但是术语“机器”也将被认为包括机器600的集合,其单独地或联合地执行指令616以执行本文讨论的方法中的任何一个或多个。
机器600可以包括可被配置为诸如经由总线602彼此通信的处理器610、存储器630和I/O组件650。在示例实施例中,处理器610(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、其他处理器或其任何适当组合)可以包括例如可以执行指令616的处理器612和处理器614。术语“处理器”旨在包括可包括可同时执行指令的两个或更多个独立处理器(有时称为“核”)的多核处理器。尽管图6示出了多个处理器,但是机器600可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理)、具有单个核的多个处理器、具有多个核的多个处理器或其任意组合。
存储器/存储设备630可以包括存储器632(比如,主存储器或其它存储存储设备)、以及存储单元636,存储器632和存储单元636两者都可例如由处理器610经由总线602访问。存储单元636和存储器632存储体现本文所述的任何一种或多种方法或功能的指令616。在机器600执行指令616期间,指令616还可以完全地或部分地驻留在存储器632内、存储单元636内、处理器610中的至少一个内(例如,处理器的高速缓存存储器内)、或其任何合适的组合内。因此,存储器632、存储单元636和处理器610的存储器是机器可读介质的示例。
如本文所使用,“机器可读介质”是指能够暂时或永久地存储指令和数据的设备,并且可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪速存储器、光学介质、磁介质、高速缓冲存储器、其它类型的存储器(例如,可擦除可编程只读存储器(EEPROM))和/或其任何合适的组合。术语“机器可读介质”应被视为包括能够存储指令616的单个介质或多个介质(例如集中式或分布式数据库、或有关联的高速缓存和服务器)。术语“机器可读介质”还将被视为包括能够存储由机器(例如,机器600)执行的指令(例如,指令616)的任何介质或多个介质的组合,使得指令在由机器600的一个或多个处理器(例如,处理器610)执行时,使机器600执行本文所描述的方法中的任何一个或多个。因此,“机器可读介质”指单个存储装置或设备、以及包括多个存储装置或设备的“基于云”的存储***或存储网络。术语“机器可读介质”不包括信号本身。
I/O组件650可以包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕捉测量等的各种各样的组件。包括在特定机器中的特定I/O组件650将取决于机器的类型。例如,诸如移动电话的便携式机器将可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器将可能不包括这样的触摸输入设备。应当理解,I/O组件650可以包括图6中未示出的许多其他组件。I/O组件650根据功能被分组,仅仅是为了简化以下讨论,并且分组不以任何方式进行限制。在各种示例实施例中,I/O组件650可以包括输出组件652和输入组件654。输出组件652可以包括视觉组件(例如,显示器,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT))、声学组件(例如扬声器)、触觉组件(例如振动马达、电阻机构)、其他信号发生器等。输入组件654可以包括字母数字输入组件(例如,键盘、配置为接收字母数字输入的触摸屏、光学键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入组件)、音频输入组件(例如,麦克风)等。
在另一些示例实施例中,I/O组件650可以包括生物测定组件656、运动组件658、环境组件660或位置组件662、以及许多其他组件。例如,生物测定组件656可包括用于检测表达(例如,手表达、面部表情、语音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、汗水或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的组件。运动组件658可包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋转传感器组件(例如,陀螺仪)等。环境组件660可以包括例如照明传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或测量大气中污染物的气体检测传感器)或可以提供与周围物理环境相对应的指示、测量或信号的其他组件。定位组件662可以包括位置传感器组件(例如,全球定位***(GPS)接收机组件)、高度传感器组件(例如,高度计或检测气压的气压计(根据气压可以导出高度))、方位传感器组件(例如,磁力计)等。
可以使用各种各样的技术来实现通信。I/O组件650可以包括通信组件664,通信组件664可操作以分别经由耦接682和耦接672来将机器600耦接到网络680或设备670。例如,通信组件664可以包括网络接口组件或与网络680接口连接的其他合适设备。在另一些示例中,通信组件664可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(NFC)组件、
Figure BDA0001657745620000191
组件(例如
Figure BDA0001657745620000192
低能耗)、
Figure BDA0001657745620000193
组件、以及经由其他模态提供通信的其他通信组件。设备670可以是另一机器或各种***设备中的任一种(例如,经由通用串行总线(USB)耦合的***设备)。
此外,通信组件664可以检测标识符或包括可操作以检测标识符的组件。例如,通信组件664可以包括射频识别(RFID)标签读取器组件、NFC智能标签检测组件、光学读取器组件(例如,用于检测以下各项的光学传感器:一维条形码(例如通用产品代码(UPC)条形码)、多维条形码(例如快速响应(QR)码)、阿兹台克码、数据矩阵、Dataglyph、MaxiCode、PDF417、超码、UCC RSS-2D条形码和其他光学码)、或声学检测组件(例如,用于识别标记的音频信号的麦克风)。此外,可以经由通信组件664来导出各种信息,例如经由互联网协议(IP)地理位置的位置、经由
Figure BDA0001657745620000201
信号三角测量的位置、经由检测可以指示特定位置的NFC信标信号的位置等等。
在各种示例实施例中,网络680的一个或多个部分可以是自组织网络、内联网、外联网、虚拟专用网(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网,互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、
Figure BDA0001657745620000202
网络、另一类型的网络、或两个或更多个这样的网络的组合。例如,网络680或网络680的一部分可以包括无线或蜂窝网络,并且耦接682可以是码分多址(CDMA)连接、全球移动通信***(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接682可以实现各种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、GSM演进增强数据速率(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、***无线(4G)网络、通用移动电信***(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他标准、其他远程协议或其他数据传输技术。
指令616可以经由网络接口设备(例如,包括在通信组件664中的网络接口组件)使用传输介质并且利用多个公知的传输协议中的任一种(例如,超文本传输协议(HTTP))通过网络680发送或接收。类似地,可以使用传输介质经由耦接672(例如,对等耦合)向设备670发送或从其接收指令616。术语“传输介质”应被认为包括能够存储、编码或承载用于被机器600执行的指令616的任意无形介质,并且包括用于促进该软件的通信的数字或模拟通信信号或其他无形介质。
在整个说明书中,复数实例可以实现如单个实例所描述的部件、操作或结构。虽然一个或多个方法的各个操作被示意和描述为分离的操作,但是各个操作中的一个或多个可以同时执行,并且无需按所示顺序执行操作。在示例配置中被示为分离组件的结构和功能可以被实现为组合结构或组件。类似地,被示为单个组件的结构和功能可以被实现为分离的组件。这些和其他变型、修改、添加和改进落入本文中主题的范围内。
尽管已经参考具体示例实施例描述了本发明主题的概述,但是在不脱离本公开的实施例的更宽范围的情况下,可以对这些实施例进行各种修改和改变。本发明主题的这些实施例在本文中可以单独地或共同地由术语“发明”提及,以仅仅为了方便,并且不旨在自动地将本申请的范围限制为任何单个公开或发明构思(如果事实上公开了一个以上)。
充分详细地描述了本文示出的实施例以使本领域技术人员能够实现所公开的教导。可以利用其他实施例并根据这些实施例导出其他实施例,从而可以在不脱离本公开的范围的情况下做出结构和逻辑上的替换和改变。因此,该“具体实施方式”不应当看做是限制意义,并且各种实施例的范围仅通过所附权利要求以及权利要求的等同物的全部范围来限定。
如本文所使用的,术语“或”可以被解释为包括性或排他性的意义。此外,可以针对本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在具体说明性配置的上下文中示出了特定操作。设想了功能的其他分配,并且这些分配可以落入本公开的各种实施例的范围内。一般来说,在示例配置中作为分离资源呈现的结构和功能可以被实现为组合的结构或资源。类似地,作为单个资源呈现的结构和功能可以被实现为分离的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应当被看做说明性的而不是限制意义的。

Claims (20)

1.一种方法,包括:
针对所选择的对分布式数据库的多个查询中的每个查询:
确定查询的阶段的持续时间;
确定与所述阶段的持续时间相关的度量的值;以及
确定所述阶段的持续时间与所述多个查询中的每个查询的对应阶段的平均持续时间之间的相对差值;
基于所确定的持续时间和所确定的值,计算所述度量和所述阶段的持续时间之间的相关性水平以及所述平均持续时间和所述阶段的持续时间之间的最大相对差值;
针对特定查询,当所述相关性水平超出阈值且所述相对差值超出所述最大相对差值的阈值比例时,将所述特定查询标识为具有由于数据倾斜所导致的延迟;以及
显示将所述特定查询标识为具有由于数据倾斜所导致的延迟的消息。
2.根据权利要求1所述的方法,其中,所述阶段为映射阶段。
3.根据权利要求2所述的方法,其中,所述查询的度量的值为在所述查询的映射阶段读取了多少条记录的计数。
4.根据权利要求1所述的方法,其中,所述阶段为化简阶段。
5.根据权利要求4所述的方法,其中,所述查询的度量的值为在所述查询的化简阶段读取了多少字节的计数。
6.根据权利要求1所述的方法,其中,确定阶段的相对差值包括:确定所述多个查询中的每个查询的对应阶段的标准偏差,并且用所述阶段的持续时间和所述多个查询中的每个查询的对应阶段的平均持续时间之间的绝对差值除以所述标准偏差。
7.根据权利要求1所述的方法,其中,所选择的每个查询是基于所具有的所述度量的值位于所定义的值的范围内而选择的。
8.一种***,包括一组处理单元和非暂时性机器可读介质,所述非暂时性机器可读介质存储有指令集,当所述指令集被至少一个所述处理单元执行时:
针对所选择的对分布式数据库的多个查询中的每个查询:
确定查询的阶段的持续时间;
确定与所述阶段的持续时间相关的度量的值;以及
确定所述阶段的持续时间与所述多个查询中的每个查询的对应阶段的平均持续时间之间的相对差值;
基于所确定的持续时间和所确定的值,计算所述度量和所述阶段的持续时间之间的相关性水平以及所述平均持续时间和所述阶段的持续时间之间的最大相对差值;
针对特定查询,当所述相关性水平超出阈值且所述相对差值超出所述最大相对差值的阈值比例时,将所述特定查询标识为具有由于数据倾斜所导致的延迟;以及
显示将所述特定查询标识为具有由于数据倾斜所导致的延迟的消息。
9.根据权利要求8所述的***,其中,所述阶段为映射阶段。
10.根据权利要求9所述的***,其中,所述查询的度量的值为在所述查询的映射阶段读取了多少条记录的计数。
11.根据权利要求8所述的***,其中,所述阶段为化简阶段。
12.根据权利要求11所述的***,其中,所述查询的度量的值为在所述查询的化简阶段读取了多少字节的计数。
13.根据权利要求8所述的***,其中,确定阶段的相对差值包括:确定所述多个查询中的每个查询的对应阶段的标准偏差,并且用所述阶段的持续时间和所述多个查询中的每个查询的对应阶段的平均持续时间之间的绝对差值除以所述标准偏差。
14.根据权利要求8所述的***,其中,所选择的每个查询是基于所具有的所述度量的值位于所定义的值的范围内而选择的。
15.一种非暂时性机器可读介质,存储有指令集,当所述指令集被至少一个处理单元执行时:
针对所选择的对分布式数据库的多个查询中的每个查询:
确定所述查询的阶段的持续时间;
确定与所述阶段的持续时间相关的度量的值;以及
确定所述阶段的持续时间与所述多个查询中的每个查询的对应阶段的平均持续时间之间的相对差值;
基于所确定的持续时间和所确定的值,计算所述度量和所述阶段的持续时间之间的相关性水平以及所述平均持续时间和所述阶段的持续时间之间的最大相对差值;
针对特定查询,当所述相关性水平超出阈值且所述相对差值超出所述最大相对差值的阈值比例时,将所述特定查询标识为具有由于数据倾斜所导致的延迟;以及
显示将所述特定查询标识为具有由于数据倾斜所导致的延迟的消息。
16.根据权利要求15所述的非暂时性机器可读介质,其中所述阶段为映射阶段。
17.根据权利要求16所述的非暂时性机器可读介质,其中,所述查询的度量的值为在所述查询的映射阶段读取了多少条记录的计数。
18.根据权利要求15所述的非暂时性机器可读介质,其中所述阶段为化简阶段。
19.根据权利要求18所述的非暂时性机器可读介质,其中,所述查询的度量的值为在所述查询的化简阶段读取了多少字节的计数。
20.根据权利要求15所述的非暂时性机器可读介质,其中,所选择的每个查询是基于所具有的所述度量的值位于所定义的值的范围内而选择的。
CN201580084527.XA 2015-11-13 2015-11-13 分布式数据库作业数据倾斜检测 Active CN108370324B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/094588 WO2017079978A1 (en) 2015-11-13 2015-11-13 Distributed database job data skew detection

Publications (2)

Publication Number Publication Date
CN108370324A CN108370324A (zh) 2018-08-03
CN108370324B true CN108370324B (zh) 2021-09-03

Family

ID=58694626

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580084527.XA Active CN108370324B (zh) 2015-11-13 2015-11-13 分布式数据库作业数据倾斜检测

Country Status (5)

Country Link
US (1) US10713250B2 (zh)
EP (1) EP3375140A4 (zh)
KR (1) KR20180081585A (zh)
CN (1) CN108370324B (zh)
WO (1) WO2017079978A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713250B2 (en) 2015-11-13 2020-07-14 Ebay Inc. Distributed database job data skew detection
US10756990B1 (en) * 2017-09-22 2020-08-25 Equinix, Inc. Monitoring and performance improvement of enterprise applications using correlated data associated with a plurality of service layers
CN111737281B (zh) * 2020-06-23 2023-09-01 北京奇艺世纪科技有限公司 数据库查询方法、装置、电子设备以及可读存储介质
CN111984685A (zh) * 2020-09-02 2020-11-24 深圳壹账通智能科技有限公司 数据倾斜检测方法、装置、计算机设备及可读存储介质
CN112905359A (zh) * 2021-03-05 2021-06-04 上海中通吉网络技术有限公司 基于延迟时间的分布式消息处理方法、装置和***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615201B1 (en) * 2000-04-25 2003-09-02 Lucent Technologies Computer network management
US8762367B2 (en) * 2008-12-08 2014-06-24 Teradata Us, Inc. Accurate and timely enforcement of system resource allocation rules

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301317A (en) * 1992-04-27 1994-04-05 International Business Machines Corporation System for adapting query optimization effort to expected execution time
JP3537356B2 (ja) 1998-12-09 2004-06-14 株式会社日立製作所 ジョブシステムにおける遅延要因解析方法
US20030172046A1 (en) * 2002-03-07 2003-09-11 Zachariah Scott Method and system for managing systems as databases
KR100992008B1 (ko) 2002-09-30 2010-11-04 코닌클리케 필립스 일렉트로닉스 엔.브이. 네트워크상의 노드 확인 방법
US8799916B2 (en) * 2011-02-02 2014-08-05 Hewlett-Packard Development Company, L. P. Determining an allocation of resources for a job
IN2013MU02853A (zh) 2013-09-02 2015-07-03 Tata Consultancy Services Ltd
US10713250B2 (en) 2015-11-13 2020-07-14 Ebay Inc. Distributed database job data skew detection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615201B1 (en) * 2000-04-25 2003-09-02 Lucent Technologies Computer network management
US8762367B2 (en) * 2008-12-08 2014-06-24 Teradata Us, Inc. Accurate and timely enforcement of system resource allocation rules

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Hadoop Performance Models;Herodotos Herodotou;《http://www2.cs.duke.edu/starfish/files/hadoop-model.pdf》;20110630;1-19 *
Profiling, What-if Analysis, and Cost-based Optimization of MapReduce programs;Herodotos Herodotou 等;《Proceedings of the VLDB Endowment》;20110831;1-12 *

Also Published As

Publication number Publication date
EP3375140A1 (en) 2018-09-19
KR20180081585A (ko) 2018-07-16
EP3375140A4 (en) 2019-04-10
WO2017079978A1 (en) 2017-05-18
US20180349441A1 (en) 2018-12-06
CN108370324A (zh) 2018-08-03
US10713250B2 (en) 2020-07-14

Similar Documents

Publication Publication Date Title
US10372761B2 (en) Auto-discovery of data lineage in large computer systems
US10230806B2 (en) Tracking of user interactions
US20220007296A1 (en) Battery Charge Aware Communications
US10795918B2 (en) Simplified frontend processing and visualization of large datasets
CN108370324B (zh) 分布式数据库作业数据倾斜检测
US11640633B2 (en) Enhanced shopping actions on a mobile device
US11126628B2 (en) System, method and computer-readable medium for enhancing search queries using user implicit data
EP3336720A1 (en) Optimizing data access based on data aging
US11586481B2 (en) Optimization of parallel processing using waterfall representations
US20170141953A1 (en) Error and special case handling using cloud account
US10353980B2 (en) Client-side paging for hierarchy data structures in restful web services
US11165704B2 (en) Adaptive encoding network
US10769695B2 (en) Generating titles for a structured browse page
US11663617B2 (en) Dynamic file generation system
WO2017015792A1 (en) Sql performance recommendations and scoring
US20240231968A9 (en) Data loading and management
US20240134859A1 (en) Data extraction and management
US20240176671A1 (en) Data processing and management

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant