一种交互感知的并行查询优化策略研究.docx

上传人:b****4 文档编号:5733717 上传时间:2023-05-09 格式:DOCX 页数:16 大小:65.66KB
下载 相关 举报
一种交互感知的并行查询优化策略研究.docx_第1页
第1页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第2页
第2页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第3页
第3页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第4页
第4页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第5页
第5页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第6页
第6页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第7页
第7页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第8页
第8页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第9页
第9页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第10页
第10页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第11页
第11页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第12页
第12页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第13页
第13页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第14页
第14页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第15页
第15页 / 共16页
一种交互感知的并行查询优化策略研究.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

一种交互感知的并行查询优化策略研究.docx

《一种交互感知的并行查询优化策略研究.docx》由会员分享,可在线阅读,更多相关《一种交互感知的并行查询优化策略研究.docx(16页珍藏版)》请在冰点文库上搜索。

一种交互感知的并行查询优化策略研究.docx

一种交互感知的并行查询优化策略研究

ISSN1673-9418CODENJKYTA8E-mail:

fcst@

JournalofFrontiersofComputerScienceandTechnologyhttp:

//www.ceaj.org

1673-9418/2012/06(00)-0000-00Tel:

+86-10-51616056

DOI:

10.3778/j.issn.1673-9418.2012.00.000

一种交互感知的并行查询优化策略*

AnInteraction-AwareOptimizingStrategyofParallelQuery

Abstract:

Whileoptimizingdatabaseperformance,parallelquerytechnologycansignificantlyimprovethethroughputandresourceutilizationofthedatabaseserver.Interactionsamongdifferentqueriesthatrunconcurrentlycanhaveagreatimpactonsystemperformance.However,currentoptimizingstrategiesofparallelqueryoftenonlyfocusonindividualqueriesratherthantheirinteractions.Inordertocapturetheimpactofparallelqueryinteractionsandreducethenegativeinteractions,weproposeaninteraction-awareoptimizingstrategyofparallelquery.Comparedwithothermethods,theexperimentalresultsdemonstratethatouroptimizingstrategycaneffectivelyimprovethedatabaseperformance.Finally,somefuturetrendsinthisareaareprospectedanddiscussed.

Keywords:

Parallelquery;Queryinteractions;Performanceoptimization;Performancemodeling

摘要:

在数据库性能优化时,通过并行查询技术可以显著提高数据库服务器的吞吐率和资源利用率。

不同的查询任务并行执行时会产生复杂的交互作用,这些交互作用会对系统性能产生非常巨大的影响。

然而,目前的并行查询性能优化策略往往只关注单个查询任务的优化而忽略了彼此交互作用的影响。

为了捕获并行查询之间的交互作用,减小交互作用带来的消极影响,提出了一种交互感知的并行查询优化策略。

通过实验与其它进行了比较,证明交互感知的优化策略可以较好地提升数据库性能,最后对未来的研究工作进行了展望和讨论。

关键词:

并行查询;查询交互;性能优化;性能建模

文献标识码:

A中图分类号:

****

1引言

在数据库系统应用中,查询任务往往占绝大多数,因此查询优化是数据库性能优化的一项最为重要的技术手段。

随着数据库变得越来越大,大量业务数据被收集和存储以便用于更加智能的分析和决策,为了提高数据库服务器的资源利用率和吞吐率,并行计算技术被引入到了数据库系统中,通过并行查询技术,使用更少的时间来完成相同数量的查询任务。

因为查询任务并行时共享内存、CPU和磁盘等底层硬件资源,因此并行查询的优化策略比传统数据库的查询优化要复杂的多,在优化时必须考虑底层资源冲突等问题。

在本文中我们主要研究并行查询的优化策略,具体来说我们要解决的问题可以描述如下:

“给定一组查询任务Q1,Q2,Q3…Qn,随机并发执行访问同一个数据库服务器,假定数据库允许并行执行的查询数即并发级别(MultiProgrammingLevel,MPL)是固定不变的,选择合适的并行查询优化策略,使完成所有查询任务的总时间最小。

针对以上问题,本文提出了一种交互感知的并行查询优化策略。

在我们的方法中,和传统查询优化方法的主要区别是我们考虑了并行查询之间的交互作用。

实验发现当大量查询任务并发执行共享计算资源和数据的时候会出现非常复杂的交互作用,这些复杂的交互作用将对系统性能产生非常大的影响,并且这些影响可能是积极的,也可能是消极的。

因此我们认为在进行并行查询优化时,考虑并行查询之间的交互作用是非常重要的。

本文的主要工作有以下几个方面:

1、提出了一个影响并行查询任务性能的度量指标:

交互成本率(InteractionCostRate,ICR)。

2、提出了一种新的交互感知的并行查询优化策略——交互成本最小优先(ICRMF:

ICRMinimumFirst)策略。

3、通过对MySQL/TPC-H研究的实验结果证明了ICRMF优化策略的有效性。

通过利用ICRMF优化策略,查询任务整体执行时间比SJF算法和FIFO算法减少了很多。

本文的主要内容组织如下:

第二节介绍了并发查询优化的相关研究工作;第三节通过实验说明了交互作用对查询性能的影响;第四节介绍了交互感知的并行查询优化策略;第五节对并行查询优化策略进行试验评估;最后是对本论文的研究工作进行总结和展望。

2相关研究工作2.1查询优化

所谓查询优化,就是在查询执行引擎生成一个执行策略的过程中,尽量使查询的总开销和总时间达到最小。

一般来说,查询优化可以归纳为四个步骤:

(1)将查询转换成某种内部表示,通常是语法树。

(2)根据一定的等价变换规则把语法树换成优化(标准)形式。

(3)选择底层的操作算法。

对于语法树中的每一个操作需要根据存取路径、数据的存储分布、存储数据的聚簇等信息来选择具体的执行算法。

(4)生成查询计划。

查询计划是由一系列内部操作组成的,这些内部操作按照一定的次序构成查询的一个执行方案,通常这样的执行方案有很多个,需要对每个执行计划计算代价,从中选择代价最小的一个。

目前关于查询优化的研究主要集中在两个方面:

SQL查询重写和查询优化算法。

查询重写是查询优化器的重要组成部分,它将一个查询表示根据一定的规则,转换为另一个效率更高或更易于优化的查询表达式。

如何发现更多而有效的重写规则,也是当前查询优化研究的主要研究内容。

对于查询优化算法的研究仍然是查询优化研究的一个难点和热点。

在数据库中,最难处理和优化的多连接查询,由于多个关系连接时可以有很多不同的次序,因此对应的查讯执行计划的数目会随着该查询包含的关系个数呈指数级增长,当关系个数很多时,将导致搜索空间极度膨胀,这将使得传统的搜索算法无能为力。

现在越来越多成熟的优化算法被引入到多连接查询优化中来,如爬山算法、模拟退火算法、遗传算法,都在一定程度上提高了查询优化的性能。

2.2并行查询优化

目前并行查询优化的研究主要是基于两阶段的并行查询优化策略。

两阶段优化方法是最有影响的缩减并行查询优化空间的方法。

其基本思想是把查询优化划分为两个阶段,第一阶段采用传统的查询优化方法产生一个高效的顺序查询执行计划;第二阶段称为并行化阶段,对第一阶段产生的顺序查询执行计划进行并行化,产生一个优化的并行查询执行计划。

两阶段优化能够明显地缩减搜索空间,并且可以直接利用传统的、成熟的顺序优化技术,系统设计人员只需将精力集中于并行化阶段。

但两阶段优化技术有一个重要的假设:

对最优顺序计划的并行化可以得到最优的并行计划。

但我们认为并行查询操作具有不同的处理特性,对资源的竞争使用模式也不同,并行查询之间的交互作用将使得最优顺序计划并行后不再最优。

由于并行查询系统的性能因素繁多,因此目前关于并行查询的性能分析和评估大多是通过实验的方法进行。

并行查询的性能模型大致可分为:

白盒模型和黑盒模型。

白盒模型通常需要找出应用程序负载特征(输入)和性能(输出)之间的定量函数关系。

数据库系统常见的负载特征包括缓冲池请求、I/O数、查询队列长度、查询到达顺序等等。

常见性能指标包括吞吐率、延迟、资源利用率等。

然而,由于负载特征和性能输出之间的关系非常复杂,是很难给出明确的函数表达的。

黑盒模型把整个系统看成一个黑盒子,不考虑系统的内在逻辑,避开去寻找负载特征和性能输出之间的定量关系,而是通过概率统计、机器学习等方法去预测性能输出。

目前,由于黑盒模型自身的特点,越来越受到人们的关注,已广泛应用于一些复杂的数据库系统性能分析和建模中。

黑盒模型主要有以下几类:

分析模型、基于机器学习的模型、线性回归、回归树、局部加权线性回归、高斯处理等。

本文中基于黑盒模型方法对并行查询之间的交互影响进行量化分析,从而避开了对复杂的底层物理系统进行建模。

这个模型是从单独运行和两两并发执行查询的样本中推导出来的。

2.3查询交互

目前,在数据库研究领域对查询优化的研究非常多,但令人意外的是,关于普通意义上的查询交互的研究目前还非常少。

在国外一些研究机构,已经有一些学者开始针对查询交互进行一些探索,主要基于查询交互进行延迟预测和性能评估。

而在国内,据我们所知,还没有发现有学者进行这方面的研究,我们的工作是国内第一次在并行查询优化研究中引入了查询交互的分析。

目前一些具体的研究工作例如多查询的优化、事务组合优化等,都没有考虑这些并行查询以及并发执行中的一些交互影响。

这些不考虑交互作用的性能模型通常被用来进行性能预测、容量规划和异常检测等。

在本文中,我们将证明被这些研究工作忽略的交互作用会对性能产生非常巨大的影响。

3查询交互对系统性能的影响分析

为了描述并发查询的交互作用会对数据库系统性能产生巨大的影响,我们用TPC-H测试基准中的查询语句在大小为10G的数据库上进行了一系列实验研究。

我们的数据库系统用的是MySQL5.1,我们的实验运行在双核3.4GHz的IntelXeonCPUs和12G内存,WindowsServer2003的机器。

数据库的缓冲池大小设置为2.4G。

我们假设相关的数据库配置参数都已经进行了很好的优化。

我们用Q1,Q2,…,Q22来表示TPC-H的22个查询类型。

查询组合就是包含了不同数量的不同的TPC-H查询类型实例,这些实例中TPC-H规范定义了需要的不同的参数值(这些查询实例可以用TPC-H的QGEN程序生成)。

因为TPC-H使用均匀分布的数据和查询参数,因此对一个特定的查询类型来说,不同参数的查询实例的执行时间会有一些微小的差异。

因为我们选择了10G的数据库规模,因此为了实验方便我们从TPC-H查询类型中选择10个较小量级的查询类别为研究对象,这10个查询类的执行时间在所有22个查询类中也都是相对较短的。

首先,我们用QGEN程序为这个10个查询类分别生成10个实例,然后在10G数据库上单独运行这100个查询语句,记录每个查询的执行时间,从而可以得到每个查询类单独运行时的平均运行时间。

表1显示了这些查询类在10G数据库上运行时的平均花费时间。

Tj代表了特定的查询类型的10个实例的平均运行时间。

Tj将作为我们以后研究交互作用的基准时间。

表1:

TPC-H查询单独运行时的平均完成时间

查询类型

平均运行时间Tj(秒)

Q3

210.76

Q4

163.43

Q6

174.92

Q7

349.77

Q8

167.90

Q10

290.45

Q12

27.25

Q16

50.49

Q17

14.88

Q19

158.73

在下一节中,我们将分别通过实验来描述不同类型的查询交互,以及不同并发级别产生的交互作用对查询性能的影响。

3.1两两查询之间的交互分析

为了更好地描绘查询之间是如何交互的,我们首先来研究两个查询之间的交互作用。

我们选择TPC-H中运行时间较短的10个查询类,执行所有查询类之间的唯一的两两组合,共有n*(n+1)/2=55个查询组合。

分别执行55个查询组合,并记录相应的查询执行时间的变化。

用Ti表示Qi单独运行时的执行时间,Ti/j表示Qi与Qj并发时的执行时间,则可以ΔTi/j来表示Qi与Qj并发时的变化。

ΔTi/j=Ti/j−Ti

如果ΔTi/j是正的,说明速度变慢了,如果是负值,说明速度变快了。

需要注意的是两两查询之间的交互不是对称的(ΔTi/j≠ΔTj/i)。

为了定量的分析并行交互成本,我们定义了一个新的度量指标:

并行交互成本率ICR(InteractionCostRate):

通过实验,我们可以得到10个查询类两两查询之间的并行交互成本率。

表2列出了几对两两查询交互的并行交互成本率:

表2:

两两交互的并行交互成本率

序号

Qi

Qj

Ti/j

Tj/i

ICR(i/j)

ICR(j/i)

1

Q3

Q7

2

Q4

Q8

3

Q6

Q14

4

Q7

Q19

5

Q10

Q16

实验分析:

①当Q3和Q7一起并行时,Q3获得了10秒的加速,而Q7的执行时间却增加了30秒。

②当Q6和Q14一起运行时,他们都会获得平均10秒的加速。

这是因为它们的查询执行计划都主要是进行事实表的顺序扫描。

③当Q19和Q7并发运行时,他们的运行时间分别增加了大约50秒和30秒。

由此可见,并行查询之间的交互作用会对查询性能产生非常显著的影响,有时这些影响会是积极的,但有时也会是消极的。

而交互作用的产生又是非常复杂的,其原因也是多种多种多样的。

例如,一个查询Q1会把数据加载到缓冲池中,然后一个并行查询Q2会用到这个数据,那就会产生积极的交互作用。

而相对应的,在硬件资源使用上的冲突会使Q1和Q2会互相竞争,例如对CPU、内存或者数据库系统内部资源例如存取锁的使用上产生的冲突,都会产生消极的交互作用。

3.2高并行级别的查询交互分析

在分析了两两并行查询之间的交互影响之后,我们将对更高级别(并行级别大于2)的查询交互进行研究和分析。

我们用MPL(multiprogramminglevel)来表示数据库系统的并行级别,MPL是指在任何时候在系统中并发执行的查询语句的数量。

那么我们将系统中并行执行的一组查询定义为一个查询组合Mi,我们假设有t个查询类型,那么查询组合Mi可以被表示为一个矢量,这儿Nij是查询组合Mi中查询类型Qj的实例数量,我们把组合Mi中的查询类型Qj的平均运行时间表示为Aij。

从以上定义我们可以知道:

Ni1+Ni2+Ni3+…+Nit=M

我们通过不同的实验来分析高并行级别情况下查询交互对查询组合中每个查询任务的的完成时间的影响。

首先,我们对M=5的两个查询类型的不同组合的交互作用进行分析,如表3所示。

在表3中我们依次减少Q19的实例数量,同时增加Q6的实例数量,从而观察Q6和Q19的执行时间的变化情况。

表3:

两个查询类型的不同组合的交互作用分析

Mix

Q6(Nij)

Q19(Nij)

Q6(Aij)

Q19(Aij)

M1

0

5

0

M2

1

4

M3

2

3

M4

3

2

M5

4

1

M6

5

0

0

从以上数据可以看出,即使只有两个查询类型时,仅仅用一个查询类型的实例来替换另一个查询类型的实例也会显著地改变查询执行时间,这也进一步证明了查询交互的重要性。

接下来,我们将分析多种查询类型的组合中交互作用。

在表4中我们对不同查询组合中其它实例的变化对同一查询执行时间的影响。

表4:

不同查询组合对同一查询的不同影响

Mix

Q4(Nij)

Q7(Nij)

Q16(Nij)

Q16(Aij)

M7

0

4

1

172.49

M8

1

3

1

140.24

M9

2

2

1

129.62

M10

3

1

1

M11

4

0

1

在表4中,首先Q16的完成时间因为一个Q4的实例的加入而减少,然后当我们继续增加Q4的实例数量和减少Q7的实例数量时,Q16完成时间出现不规则的变化,有降低也有增加。

这也说明,并行查询的交互作用是相当复杂的,在查询组合中的一个小的改变有时会对性能有巨大的影响,但这些可能是非常难预测的。

下面,我们将对多种查询类型的组合进行试验,如表5所示。

我们选择4个查询类型的实例进行变化组合,保持组合的实例数量M=5不变,即保持并行级别不变。

表5:

不同查询组合的实例数量和平均运行时间

Mix

Q3

Q7

Q10

Q16

Nij

Aij

Nij

Aij

Nij

Aij

Nij

Aij

M12

1

386.85

1

560.90

3

425.18

0

386.85

M13

1

352.11

1

501.96

2

380.41

1

352.11

M14

1

332.05

1

469.64

0

0

3

332.05

M15

在表5中我们可以得到以下几个方面的结论:

①一个包含了多种查询类的组合并行运行时可能既包含积极的交互,也包含消极的交互。

②一些查询类,在并行环境下他们的查询执行时间表现出更多的不确定性,他们对一起并行的其他查询的影响更加的敏感。

相反,其它一些查询类就更加的稳定,这个查询可能就是一个简单的查询任务,例如仅仅包含一个数据表的扫描和一个轻量级的合计。

以上这些实验也说明了除非我们能够对查询组合中的并行交互影响进行建模,否则我们不可能得到最优化的查询性能,如果只关注单独的查询类型而忽略并行交互作用,我们将不能够得出关于性能的准确的结论。

因此,我们认为开发基于查询组合的交互作用的性能模型对我们更好地进行性能优化是非常重要的。

4交互感知的并行查询优化策略

通过第三节的分析,我们知道了并行查询的交互对性能有着非常大的影响。

因此,为了实现最优化的并行查询性能,我们下一步将基于查询交互进行性能分析,并提出一个交互感知的性能优化策略,使并行任务能够按照一定的顺序执行,从而达到任务完成总时间最小的目标。

查询任务完成的总时间可以定义为从第一个查询开始启动到所有查询都完成时总共消耗的时间。

4.1交互成本最低优先算法

我们已知并行负载W由N个查询任务Q1,Q2,Q3…Qn构成,每个查询所属的TPC-H查询类型是已知的,数据库的并发级别为M。

通过分析我们可以知道在并行过程中,同时只有M个查询在执行,这M个查询就构成了一个查询组合mi,由所有的mi构成了一个查询组合集X={m1,m2,…,mi}。

此外,我们做了以下两个假设:

1、所有特定类型的查询都有着相同的性能;2、数据库可以以任意的顺序执行队列中的查询任务。

查询之间的优先级限制可以在系统外进行强行控制。

基于以上分析和假设,我们的性能优化算法的主要目标就是优先执行交互成本低的查询组合,避免执行交互成本高的查询组合,从而使整个并行任务的交互成本最低,也就是任务总执行时间最少。

优化策略的执行步骤可以描述如下:

1)从N个查询任务中选择M个查询组成一个并行交互成本最小的查询组合Mmin启动并行任务;

2)在任意一个查询Qmin最先结束时,得到Mmin中的其他(M-1)个查询任务;

3)对每一个等待队列中的查询,计算其与正在执行的(M-1)个查询组成的查询组合的并行交互成本;

4)获得新的并行交互成本最小的查询Qnext;

5)重新从2)开始循环执行;

6)以此类推,直到完成所有的查询任务。

以上算法用形式化语言可以表示如下:

输入:

并行负载W,由N个查询组成;

输出:

并行交互成本最小优先的查询执行顺序。

AlgorithmICRMF(W)

Begin

selectMminFromW(W);

runMmin();

while(Qminisend)do

runQM=getRunQueryMix(M-1);

foreachQiinarrivalqueuedo

ICR(i)=EstimateICR(Qi,runQM);

endfor

sortArrivalQuery(ICRwithrunQM);

getTheMinICRQueryToAdd();

endWhile

End

要实现以上的性能优化算法,我们要选择交互成本最小的查询组合就必须选择一个适合的性能模型,对查询组合的交互成本进行建模分析。

对不同的并发级别需要进行分别建模,当并发级别为2时,我们可以直接用实验数据进行分析;当并发级别大于2时,我们需要建立更复杂的性能模型,从而能够更好地估计并行查询组合的交互成本。

而对于高级别的并发查询交互的性能模型,可以从单独(非并发)运行和两两并发执行的样本中推导出来。

4.2并行查询交互的性能模型

在本节中,我们将探讨如何对高并行级别的查询交互建立性能模型。

因为查询交互作用的产生因素是非常复杂的,为了避免建立如此复杂的模型而需要的监控需求,我们采用了实验驱动的黑盒模型。

实验驱动的模型使我们能够粗略地估计并行状态下查询之间是如何进行交互的。

当一个新的查询Qj加入到一个查询组合Mi中时,由于Qj的加入而产生的并行交互成本率可以计算如下:

ICR

=Ni1×

+Ni2×

+Ni3×

+…+Nit×

=

其中,Tj是Qj在单独执行时的运行时间,而Aij是Qj在Mi中执行时的平均运行时间,Nij是组合Mi中Qj的实例数量。

有很多著名的模型结构,例如线性回归、回归树、局部加权线性回归、高斯处理等等,都可以用来描述并行查询之间的交互作用。

此外,利用机器学习技术可以对查询交互进行性能建模。

在我们的研究中,我们发现多元线性回归模型和机器学习是一个非常适合对查询组合的性能进行描述的模型结构,因此下一步我们将利用多元线性回归模型和机器学习技术进行相关方面的深入研究。

5实验评估与分析

本章将交互感知的优化(InteractionCostMinimumFirst,ICMF)算法和传统数据库的最短时间优先(ShortestJobFirst,SJF)算法和先到先服务(FirstComeFirstServed,SCSF)算法进行对比实验。

首先介绍了实验环境,然后给出实验结果,并进行了结果的评估和分析。

5.1实验环境

实验使用的硬件配置是:

IntelCore2Pentium4DuoCPU2.83GHz,12GB内存。

操作系统为Windows2008,数据库采用的是开源的MySQL5.0,使用的存储引擎是MyISAM,有10G大小的数据。

我们用C++语言实现了我们的优化算法,作为一个独立的组件来进行查询任务的优化调度,调度组件在查询任务启动之前工作,和数据库服务器在逻辑上是独立的。

5.2实验分析

我们从TPC-H中选择了6个运行时间较短的查询类型,每个查询类型生成了30个查询语句实例,总共180个查询语句。

假设180个查询语句按照每个类型依次加载n个实例的顺序到达,优化器提前可以知道即将到来的30个查询任务。

实验一:

将数据库的并发级别MPL分别设置为10

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2