当前位置:文档之家› 数据库查询优化方法和系统与设计方案

数据库查询优化方法和系统与设计方案

图片简介:本技术介绍了一种数据库查询优化方法,包括:连接顺序选择器和自适应决策网络。

其中连接顺序选择器用于选择查询计划中最优的连接顺序,其中包括一种新的数据库查询计划编码方案,将编码与连接顺序一一对应;一个预测查询计划执行时间的价值网络,由查询计划及其对应真实执行时间进行训练,用于蒙特卡洛树搜索中的奖励反馈;蒙特卡洛树搜索方法,用于模拟生成多种不同的连接顺序,由连接顺序价值网络评价该连接顺序的好坏,在达到预设的探索次数后返回一个推荐的连接顺序。

自适应决策网络用于区分查询语句是否使用该连接顺序选择器,提升优化系统的整体性能。

本技术的方法和系统可以有效避免传统查询优化器的局限性,提高数据库查询效率。

技术要求1.一种数据库查询优化方法,其特征在于,包括以下步骤:(1)获取查询语句,根据该查询语句中各个表之间的连接关系构建连接矩阵,并根据查询语句中所存在的表属性的过滤或选择关系式构建谓词向量;(2)根据步骤(1)构建的连接矩阵和谓词向量构建蒙特卡洛树,并从该蒙特卡洛树中选择该查询语句对应的连接顺序;(3)输出步骤(2)中选择的连接顺序,并将该连接顺序输入数据库执行。

2.根据权利要求1所述的数据库查询优化方法,其特征在于,步骤(2)中构建蒙特卡洛树这一过程包括如下子步骤:(2-1)构造根节点,将构造的根节点设置为当前节点;(2-2)根据当前节点的选择空间矩阵将该当前节点所有可能选择的子连接顺序加入到该当前节点的子节点列表中;(2-3)根据当前节点的子节点列表对当前节点进行多次模拟,以构造蒙特卡洛树,其中模拟次数由以下公式确定:SetpSearchTimes=NumberOfChildren×searchFactor;其中SetpSearchTimes代表即树的每层上对当前节点进行模拟的次数,NumberOfChildren表示蒙特卡洛树的第i层子节点的数量,searchFactor表示搜索参数searchFactor,其由实验确定;(2-4)在步骤(2-3)构造的蒙特卡洛树上通过UCT算法选择当前节点的一个子节点,将这个选出的子节点设置为新的当前节点。

(2-5)针对步骤(2-4)设置的新的当前节点,不断重复上述步骤(2-3)与步骤(2-4),直至蒙特卡洛树搜索进行到最后一层为止,此时将最后一次迭代过程选择出的节点的连接矩阵进行解析,解析得到的连接顺序即为最终的连接顺序。

3.根据权利要求2所述的数据库查询优化方法,其特征在于,步骤(2-3)包括如下子步骤:(2-3-1)从当前节点的子节点列表中选择一个子节点;(2-3-2)根据步骤(2-3-1)选出的子节点创建一个新节点,并将其构造在蒙特卡洛树上;(2-3-3)在步骤(2-3-2)创建的新节点上进行模拟,即通过快速随机选择将该新节点的连接顺序补全,从而构成一个完整连接顺序;(2-3-4)将步骤(2-3-3)得到的完整连接顺序输入事先训练好的连接顺序价值网络,以获得预测的执行时间;(2-3-5)根据步骤(2-3-4)中预测的执行时间计算该完整连接顺序的奖励;(2-3-6)根据步骤(2-3-5)计算得到的奖励对从步骤(2-3-2)创建的新节点到根节点路径上的所有节点进行反馈;(2-3-7)重复上述步骤(2-3-1)至(2-3-6),直到模拟次数到达步骤(2-3)中的模拟次数SetpSearchTimes为止,从而完成构建蒙特卡洛树。

4.根据权利要求3所述的数据库查询优化方法,其特征在于,步骤(2-3-1)包括如下子步骤:(2-3-1-1)判断当前节点的模拟次数是否达到模拟次数的阈值,是则直接进入步骤(2-4),否则进入步骤(2-3-1-2);(2-3-1-2)判断当前节点的子节点列表中是否存在节点没有被构建在蒙特卡洛树中,如果是则从这些节点中随机选择一个子节点,然后进入步骤(2-3-2),否则进入步骤(2-3-1-3);(2-3-1-3)通过上限置信区间算法从当前节点的子节点列表中选择一个子节点,然后进入步骤(2-3-1-4);(2-3-1-4)判断步骤(2-3-1-3)选出的节点的子节点列表中是否存在节点没有被构建在蒙特卡洛树中,如果是则从这些节点中随机选择一个子节点作为当前节点,然后进入步骤(2-3-2),否则返回步骤(2-3-1-3)。

5.根据权利要求4所述的数据库查询优化方法,其特征在于,UCT算法是计算树中某个节点的每个子节点的价值,并选择其中价值最高的;UCT算法要求在树中选择节点时应使如下表达式具有最大值:其中vk表示当前节点的第k个子节点且有k∈[1,P],P表示当前节点中子节点的总数,v表示当前节点。

Q(vk)代表第k个子节点获得的总奖励值,N(vk)代表第k个子节点进行模拟的次数,N(v)代表在当前节点v上进行模拟的次数,C为探索参。

6.根据权利要求5所述的数据库查询优化方法,其特征在于,连接顺序价值网络的是通过以下步骤训练得到的:(2-3-4-1)随机生成多个不同的连接顺序,并将其输入到数据库中,并获取每个连接顺序对应的执行时间;(2-3-4-2)将所有连接顺序按照其对应执行时间的大小进行排序,并将所有连接顺序按照其对应执行时间所在的时间区间分为n类,对应从0到n-1,0代表执行时间最短;其中n的取值应根据实际系统进行选择,优选在4到15之间。

(2-3-4-3)将步骤(2-3-4-2)得到的n类连接顺序进行编码,以得到编码后的n类连接顺序;(2-3-4-4)构建连接顺序价值网络,其为四层全连接的神经网络,每层均设计为线性层,其中第一层到第三层作为隐藏层选择ReLU作为激活函数,最后一层作为输出层选用Softmax函数作为激活函数,选用CrossEntropyLoss作为损失函数;(2-3-4-5)将编码后的连接顺序及对应的执行时间标签并将其按7:3的比例划分为训练集和测试集,将训练集输入连接顺序价值网络进行训练;(2-3-4-6)使用反向传播算法对连接顺序价值网络中每层的权重参数和偏置参数进行更新和优化,以得到更新后的神经网络;对更新后的神经网络进行迭代训练,直到该神经网络的损失函数达到最小为止;(2-3-4-7)使用步骤(2-3-4-4)得到的数据集中的测试集对迭代训练后的连接顺序价值网络进行迭代验证,直到得到的分类精度达到最优为止,从而得到训练好的连接顺序价值网络。

7.根据权利要求1所述的数据库查询优化方法,其特征在于,进一步包括在步骤(1)之后、步骤(2)之前,将查询语句的连接矩阵和谓词向量输入自适应决策网络,并根据输出结果判断是否使用现有的数据库查询优化器处理该查询语句,如果是则过程结束,否则进入步骤(2)。

8.根据权利要求7所述的数据库查询优化方法,其特征在于,该自适应决策网络是采用以下过程进行训练的:(S1)将多个查询语句通过连接顺序优化器以及原始的数据库查询优化器进行优化,并对比其执行效果,将原始数据库查询优化器表现更好的查询语句打上标签“0”,将连接顺序优化器表现更好的查询语句打上标签“1”;(S2)将自适应决策网络设计为四层全连接的神经网络,每层均设计为线性层,其中中间三层隐藏层选择ReLU作为激活函数,最后一层输出层选用Sigmod函数作为激活函数,选用CrossEntropyLoss作为损失函数;(S3)将步骤(1)中的查询语句编码以及步骤(S1)中的标签按照7:3的比例划分为训练集和测试集,将训练集输入自适应决策网络进行训练;(S4)使用反向传播算法对神经网络中每层的权重参数和偏置参数进行更新和优化,以得到更新后的神经网络;(S5)对步骤(S4)更新后的神经网络进行迭代训练,直到该神经网络的损失函数达到最小为止;(S6)使用步骤(S3)得到的数据集中的测试集对迭代训练后的神经网络进行迭代验证,直到得到的分类精度达到最优为止,从而得到训练好的自适应决策网络。

9.一种数据库查询优化系统,其特征在于,包括:第一模块,用于获取查询语句,根据该查询语句中各个表之间的连接关系构建连接矩阵,并根据查询语句中所存在的表属性的过滤或选择关系式构建谓词向量;第二模块,用于根据第一模块构建的连接矩阵和谓词向量构建蒙特卡洛树,并从该蒙特卡洛树中选择该查询语句对应的连接顺序;第三模块,用于输出第二模块中选择的连接顺序,并将该连接顺序输入数据库执行。

技术说明书一种数据库查询优化方法和系统技术领域本技术属于数据库技术领域,更具体地,涉及一种数据库查询优化方法和系统。

背景技术随着互联网技术的飞速发展,数据库作为支撑数据存储与查询的传统手段发挥着越来越重要的作用。

面对数据量庞大的数据库,数据检索的效率成为研究人员关心的重要问题之一。

通常关系型数据库通过查询优化器对输入的查询语句进行相应的优化,查询优化器是数据库系统获得良好性能的关键组件。

数据库所执行的SQL语句是声明式语言,只声明用户想得到什么样的结果,并不关心数据库的物理执行引擎如何获取并返回数据。

查询优化器的主要工作是将输入的声明式查询语句优化为一个步骤详细且高效可执行的物理查询计划,其中连接顺序的优化几乎是所有数据库查询优化器的核心,同一条SQL语句采用连接顺序不同的查询计划甚至会导致响应时间相差多个数量级。

当前大多数数据库查询优化器使用代价模型结合启发式方法生成查询计划,其存在一些不可忽略的缺陷:一是由于数据库系统的复杂性以及数据之间的倾斜和相关性,并且由于代价模型基于大量假设,不能准确反映该查询计划执行后的响应时间,因此导致查询优化器根据统计数据及代价模型对查询计划执行代价估计后得到的结果不太准确;二是现有查询优化器主要基于动态规划、贪心算法等确定性算法或模拟退火、遗传算法等随机算法进行枚举,但由于查询计划的解空间非常大,这些算法不能有效解决枚举问题,因此查询优化器会使用大量的启发式策略削减枚举空间,这虽然能够提高优化效率,但也经常会错过执行时间更短的查询计划,从而导致查询效率偏低。

技术内容针对现有技术的以上缺陷或改进需求,本技术提供了一种数据库查询优化方法和系统。

其目的在于,解决现有数据库查询优化器由于数据库系统的复杂性、数据之间的倾斜和相关性、以及代价模型是基于大量假设导致代价估计结果不准确的技术问题,以及由于使用大量的启发式策略削减枚举空间导致错过执行时间更短的查询计划、查询效率偏低的技术问题。

为实现上述目的,按照本技术的一个方面,提供了一种数据库查询优化方法,包括以下步骤:(1)获取查询语句,根据该查询语句中各个表之间的连接关系构建连接矩阵,并根据查询语句中所存在的表属性的过滤或选择关系式构建谓词向量;(2)根据步骤(1)构建的连接矩阵和谓词向量构建蒙特卡洛树,并从该蒙特卡洛树中选择该查询语句对应的连接顺序;(3)输出步骤(2)中选择的连接顺序,并将该连接顺序输入数据库执行。

相关主题