基于深度强化学习的多属性索引选择的制作方法

文档序号:31439960发布日期:2022-09-07 09:14阅读:114来源:国知局
基于深度强化学习的多属性索引选择的制作方法

1.本发明涉及基于深度强化学习的多属性索引选择,属于数据库与强化学习领域。


背景技术:

2.自动化物理数据库设计一直是数据库研究的一个长期热点,因为优化结构可以带来实质性的性能提升。尽管取得了显著的进展,但当今的大多数商业解决方案都是高度手动的,需要数据库管理员(dba)进行脱机调用。然而仅仅依靠dba来进行手动调节所带来的成本是高昂和低效的。
3.随着数据库应用程序及其宿主平台(例如,多租户云环境)的复杂性和可变性的增加,自动物理设计调优,特别是自动索引选择,再次成为数据库管理系统面临的挑战。大多数数据库供应商在他们的产品套件中提供了用于物理设计调优的自动化工具。这些工具构成了全面自动化数据库管理系统努力的组成部分,其目标是:a)降低数据库管理成本,从而降低总体拥有成本;b)帮助非专家使用数据库系统;c)便于在动态环境中托管数据库,如基于云的服务。
4.配置数据库以实现高效查询是一项复杂的任务,通常由数据库管理员执行。要解决构建真正优化数据库访问的索引的问题,需要大量的数据库和领域知识,缺乏这些知识往往会导致不相关索引的空间和内存浪费,可能会危及数据库查询性能,当然也会降低更新性能。
5.尽管有许多工具可用于管理和从非常大的数据集中获取信息,但索引存储此类数据的数据库仍然是一个挑战,有多种改进机会。
6.在数据库中检索信息的速度慢,不仅会浪费企业的时间,而且还会带来很高的计算成本。应该建立索引但没有建立索引或不必要的索引列会直接影响数据库的查询性能。然而,实现数据库的最佳索引配置并不是一项简单的任务。为此,我们必须了解正在运行的查询,考虑它们的性能、系统资源和存储预算,以便找到最佳的候选索引。
7.近年来,由于强化学习的兴起,强化学习被应用于人工智能的各个领域。以往采用的基于传统的方法推荐出来的索引配置往往是次优配置而不是最佳配置,而采用强化学习寻找最优索引配置不仅可以加快训练速度而且可以找到真正意义上的最优索引配置。但是以往的采用强化学习方法是仅仅只采用q-learning算法进行最优索引配置选择,而且是在单属性索引上进行推荐,无法得到真正意义上的最优索引配置。
8.以上的相关研究或工具进行索引推荐时,往往考虑的不够充分:
9.一,要么是推荐出单个提高最大的索引,从而忽略了索引之间的交互性,无法提高整体效能;要么是考虑了索引的交互,但是是从单属性索引或者固定属性个数来进行组合的组合索引的角度来考虑,而忽略了从工作负载中提取索引候选项,导致模型长时间无法收敛从而无法找到最优索引配置或创建过多的索引导致消耗的存储成本太大。
10.二,根据数据库中属性进行组合,往往得到的索引候选过多,导致长时间无法收敛;而仅仅只根据启发式规则从工作负载中提取索引候选项也会导致有许多无用索引加入
到候选项中,导致长时间无法收敛从而无法得到最佳索引配置。


技术实现要素:

11.本发明结合了深度强化学习(drl)来解决多属性索引选择问题(multiple attribute index selection)。首先根据对应的谓词从工作负载提取出组合的多属性索引候选项,然后根据选择度规则从数据库中找到选择度低的字段,筛除掉由工作负载提取出来的选择度低的索引候选项,并将其筛选完后的索引候选项作为动作空间;然后将工作负载以及索引配置当作输入放入到drlmais模型中进行训练;将工作负载输入到以训练好的drlmais模型中,输出把最终奖励最大或者工作负载执行成本最小的索引配置,这就是最优索引配置。
12.本发明采用的技术方案是:使用深度强化学习实现多属性索引推荐,包括以下步骤:
13.(1)根据启发式规则从工作负载中提取多属性索引候选项,然后基于字段的选择度规则对索引候选项进行筛选与提取;
14.step1.1从工作负载中出现在五种谓词之后的属性以及在查询中出现的属性进行属性提取,并进行属性组合,得到多属性索引候选项。为了防止索引大小过大,规定单个索引中不超过三个属性。五种谓词分别是:join、equal、range、group by、order by。
15.step1.2将step1.1中得到的多属性索引候选项通过基于字段的选择性规则进行有效的筛选,可以减少无用的索引候选项并降低动作空间的维度,加快模型训练速度(规定选择性小于20%的字段为选择度低的字段,该字段不推荐建立索引,即从索引候选中删除)。
16.(2)将步骤(1)中提取出的索引候选项与工作负载输入到drlmais模型中进行训练;
17.step2.1首先需要搭建drlmais模型,采用pytorch库中的函数式api进行搭建;
18.step2.2drlmais模型设计主要分为两部分,一部分为采用double dqn的方法,该ddqn分为q网络和目标q网络,q网络用于估算q(s
t
,a),即当前状态下选择动作a(即创建的索引)的q-value,而目标q网络则是固定的,用于计算目标q(s
t+1
,a),即下一状态下选择动作a的q-value,取二者中q值小的,而且q网络每轮都会更新参数的权重,而目标q网络则是q网络进行n次更新以后,将q网络的参数权重赋值给目标q网络,最终模型的参数权重是取决于目标q网络。两个网络采用三层全连接层,采用adam作为模型优化器。另外一部分为采用经验回放(experience replay)来打破数据之间的关联性与非平稳性,并且通过规定经验池的大小来防止数据过拟合。
19.step2.3将工作负载和索引配置输入到已经搭建好的ddqn中,即drlmais模型中,采用ε-greedy策略来进行探索,是选择q值最大的动作还是随机选择动作,选择动作以后根据数据库解析工作负载的执行成本得到相应的奖励与索引配置,并返回给drlmais模型,每轮减小探索值并重复以上步骤n轮,得到最终的drlmais模型。
20.3)将查询语句或工作负载放入已经训练好的drlmais模型中,得到最佳索引配置,并进行评估。
21.step3.1将工作负载放入已经训练好的drlmais模型中,得到对应的索引配置;
22.step3.2基于baseline(baseline是未建立索引前的初始状态)、random policy(随机策略)、drlmais模型方法对同一工作负载下的一些评价指标进行比较。在相同工作负载下推荐出相同的个数索引的情况下,计算工作负载的执行成本(tc)、索引大小(indexsize)、工作负载执行成本提升比(tci),将每种方法的这3个评价指标进行对比分析。tc、tci的计算公式如下:
[0023][0024][0025]
上述公式中n表示工作负载的个数;w表示工作负载;c表示对应的索引配置;no_index_cost表示未创建索引前工作负载的执行成本,indexed_cost表示创建索引后工作负载的执行成本。
[0026]
本发明的有益效果是:
[0027]
1、本发明提出了基于字段的选择度规则来进行多属性索引选择,设计了drlmais模型,该模型采用启发式规则来提取索引候选并利用字段的选择度规则进行筛选,目的是降低动作空间空间维度,可以在缩短模型训练时间的同时推荐出最佳索引配置;采用强化学习(rl)中的ddqn来设计模型,两个神经网络可以训练出更好的模型,得到最佳的索引配置。
[0028]
2、提出的drlmais模型用于自动推荐索引,一方面可以让非专业人士来对数据库中的查询建立合适的索引,能够加快sql语句的查询速度和减少sql语句的执行成本;另一方面drlmais的自动化推荐索引节省了大量的资源。
[0029]
3、提出的drlmais模型无需重复训练,因为采用的是对工作负载进行训练而不是对数据库中的数据进行训练的模式,离线的模型依旧可以根据输入的工作负载推荐出对应的索引配置,哪怕数据库数据发生变化依旧能够推荐出较好的索引配置。
[0030]
4、本发明在tpc-h公开数据集上进行实验,设计的基于字段的选择性规则能够对索引候选进行有效筛选并降低动作空间维度,并且加快模型的训练速度并为这组工作负载推荐出最优的索引配置,减少工作负载的执行成本。
附图说明
[0031]
图1是本发明采用drl方法实现多属性索引推荐的总体流程图;
[0032]
图2是drlmais模型的架构图;
[0033]
图3是drlmais模型随着索引个数的增加初始执行成本除以建立索引以后的执行成本的提升倍数;
[0034]
图4是drlmais模型的执行成本随索引个数的变化图。
具体实施方式
[0035]
下面结合附图和具体实施例来对本发明进行进一步的详细说明。
[0036]
实施例:
[0037]
如图1-2所示,采用drl方法实现多属性索引推荐,包括如下步骤:
[0038]
1)根据启发式规则从工作负载中提取多属性索引候选项,并基于字段的选择性规则来对初步提取的索引候选项进一步筛选和提取,得到最终输入到模型中的动作空间;
[0039]
2)将索引配置与工作负载输入到drlmais模型中进行训练;
[0040]
3)将工作负载放入已经训练好的drlmais模型中,得到最佳索引配置,并进行评估。
[0041]
具体步骤如下:
[0042]
step1.1从工作负载中出现在五种谓词之后的属性以及在查询中出现的属性进行属性提取,并进行属性组合,得到多属性索引候选项。为了防止索引大小过大,规定单个索引中不超过三个属性。五种谓词分别是:join、equal、range、groupby、orderby。
[0043]
step1.2将step1.1中得到的索引候选项采用选择度方法进行筛选,筛选掉选择度低的字段,目的是为了进一步减少无用的索引候选项以降低动作空间的维度,加快模型的训练速度和提高模型效果。
[0044]
step2.1首先需要搭建drlmais模型,采用pytorch库中的函数式api进行搭建;
[0045]
step2.2drlmais模型设计主要分为两部分,一部分为采用doubledqn的方法,该ddqn分为q网络和目标q网络,q网络用于估算q(s
t
,a),即当前状态下选择动作a(即创建的索引)的q-value,而目标q网络则是固定的,用于计算目标q(s
t+1
,a),即下一状态下选择动作a的q-value,取二者中q值小的,而且q网络每轮都会更新参数的权重,而目标q网络则是q网络进行n次更新以后,将q网络的参数权重赋值给目标q网络,最终模型的参数权重是取决于目标q网络。两个网络采用三层全连接层,采用adam作为模型优化器。另外一部分为采用经验回放(experience replay)来打破数据之间的关联性与非平稳性,并且通过规定经验池的大小来防止数据过拟合。
[0046]
step2.3将工作负载和索引配置输入到已经搭建好的ddqn中,即drlmais模型中,采用ε-greedy策略来进行探索,是选择q值最大的动作还是随机选择动作,选择动作以后根据数据库解析工作负载的执行成本得到相应的奖励与索引配置,并返回给drlmais模型,每轮减小探索值并重复以上步骤n轮,得到最终的drlmais模型。step3.1将工作负载放入已经训练好的drlmais模型中,得到对应的索引配置;
[0047]
step3.2基于baseline、random policy、drlmais模型方法对同一工作负载下的3种评价指标进行比较。在相同工作负载下推荐出相同的个数索引的情况下,计算工作负载的执行成本(tc)、索引大小(index size)、工作负载执行成本提升比(tci),将每种方法的这3个评价指标进行对比分析。tc、tci的计算公式如下:
[0048][0049][0050]
上述公式中n表示工作负载的个数,这里默认采用一组工作负载;w表示工作负载;c表示对应的索引配置;no_index_cost表示未创建索引前工作负载的执行成本,indexed_cost表示创建索引后工作负载的执行成本。
[0051]
图4中drlmais模型在给出对应的索引配置以后相对于未建立索引的工作负载状态下执行成本的对比图。从图中看出来,给出推荐的索引能够很大程度上减少工作负载的
执行成本。如图3所示2为工作负载执行成本提升比,可见建立了索引能够带来性能提升,而且随着索引个数的增加而逐渐变化,基本处于一直递增。
[0052]
表1中列出了该方法与基准在3种不同的评价指标下的情况,这里以推荐的最小执行成本作为参考进行比较。
[0053]
表1方法评价指标
[0054][0055]
baseline:是未建立索引前的初始状态
[0056]
random policy:随机策略
[0057]
drlmais:结合深度强化学习的多属性索引选择
[0058]
从表1中各个评价指标对比可以看出,本发明中基于字段选择度的规则是有效的,并且能够成功的为工作负载推荐索引。这是因为相对于baseline与random policy,drlmais采用了ddqn方法和经验回放来加快模型的训练速度;考虑了索引之间的交互性以及多属性索引,不再是单一属性索引,而且采用的是深度强化学习(drl)减少了模型的训练成本,加快了奖励函数的收敛。
[0059]
以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1