一种基于bert的数据库查询连接顺序调整方法-9游会

文档序号:36741445发布日期:2024-01-17 14:56阅读:56171来源:国知局

本发明涉及数据库查询优化,尤其涉及一种基于bert的数据库查询连接顺序调整方法。


背景技术:

1、同一条查询语句改变不同的表连接顺序会产生不同的执行时间,甚至会存在数量级的差距。为了提高数据库查询性能,dbms(数据库管理系统)会在执行计划搜索空间中选择执行时间较短的连接顺序来提升性能以及减少资源消耗。

2、目前研究基本采用基于强化学习的查询方法,通过基于树长短期记忆的方法构建连接树,然后通过与环境交互获得反馈信息对连接树进行调整获得优化后的连接计划。xiang yu等人在文献"reinforcement learning with tree-lstm for join orderselection,"icde,1297-1308,2020;提出了一种连接顺序优化模型rtos,采用临近策略优化算法指导连接顺序的选择,rtos中优化器agent,通过与环境(dbms)的试错交互从反馈中学习,通过构建tree-lstm将所有表进行连接,最终发送给dbms执行。

3、综上所述,目前基于强化学习进行连接顺序调整还存在如下问题:强化学习模型会通过与数据库交互对查询语句进行优化,对数据库的反复读写造成较多的资源消耗;经过训练后的强化学习模型会根据经验对当前需求进行修改,很容易陷入局部最优解而难以跳出;强化学习总是需要一个奖励函数,但是奖励函数很难被定义,若设定了一个不是最完美的奖励函数,那么agent可能会学出完全不是想要的行为,这些问题都会导致查询执行性能较差。


技术实现思路

1、有鉴于此,本发明提供一种基于bert的数据库查询连接顺序调整方法,用于优化查询语句中的表连接顺序,提升查询执行性能。

2、本发明实施例解决其技术问题所采用的技术方案是:

3、一种基于bert的数据库查询连接顺序调整方法,包括:

4、步骤s1,基于数据库中的表,利用sql生成器生成sql集合a={α},其中,a中包含|a|条sql语句α;

5、步骤s2,基于所述sql集合a生成训练集ma、验证集mb和测试集mc,即a=ma∪mb∪mc,利用学习式连接顺序调整模型对所述训练集ma进行调整,调整后得到的查询集ma′;

6、步骤s3,将所述查询集ma′中各元素编码为文本向量;

7、步骤s4,将所述文本向量编辑成为输入向量,将|ma′|个所述输入向量输入bert模型进行预训练,通过调整权重矩阵提高所述bert模型的预测准确度;

8、步骤s5,利用所述验证集mb、结合对比调优模型验证所述bert模型,验证过程中出现调优效果不优于所述对比调优模型的情况时,对所述权重矩阵执行fine-tuning操作;

9、步骤s6,利用所述测试集mc、结合所述对比调优模型测试步骤s5处理后的bert模型,测试完成后调优效果全部优于所述对比调优模型时,训练结束;

10、步骤s7,利用所述步骤s6训练好的bert模型执行新查询的查询连接顺序优化调整。

11、较优地,所述步骤s3包括:

12、步骤s31,定义数据模型m,所述数据模型m包括两种数据存储形式:§={λ,γ,σ,μ}、ψ={ζ,η},其中,λ指sql语句中查询的具体属性,γ指查询条件中限制的结果范围,σ指sql语句中涉及的所有列的列名,μ为单表的数据量大小,ζ指sql语句中涉及到的所有表的表名,η指两表之间的所有连接方式;

13、步骤s32,对所述查询集ma′中的sql语句进行分词,得到所述sql语句中的λ、γ、σ、ζ、η,访问数据库查询出ζ所对应的各个μ值,将λ、γ、σ、ζ、η、μ作为所述sql语句的特征token,将提取到的各个所述特征token映射到所述数据模型m中并存储;

14、步骤s33,学习§和ψ之间的语义联系,根据§中的条件调整ψ中的表顺序以及表连接方式;

15、步骤s34,通过词向量表征方式将§和ψ编码为所述sql语句的文本向量δ。

16、较优地,所述步骤s4包括:

17、步骤s41,将|ma′|个所述文本向量δ输入所述bert模型,在所述bert模型中为各所述文本向量δ添加片段向量ε和位置向量ρ,得到|ma′|个输入向量¢,其中,¢=δ ε ρ;

18、步骤s42,将各所述输入向量¢输入所述bert模型中,对各所述输入向量¢中的ψ数据进行随机mask掩盖,其中所述ψ数据中的mask掩盖部分数据占所述输入向量¢的a%;

19、步骤s43,所述bert模型通过计算§与所述ψ中未被mask掩盖的数据之间的关系对所述mask掩盖部分数据进行预测,得出mask掩盖部分预测数据,并进一步得出包含所述mask掩盖部分预测数据的输出向量¢′;

20、步骤s44,根据所述输出向量¢′与所述输入向量¢之间的误差更新所述bert模型初始随机的权重矩阵w,利用所有所述输入向量¢进行模型训练,并在完全消除误差后结束训练。

21、较优地,所述步骤s44的具体实施包括:

22、步骤s441,计算所述输出向量¢′与所述输入向量¢之间的误差值,所述误差值计算采用余弦相似度计算公式;

23、步骤s442,根据所述误差值,通过反向传播算法更新所述bert模型的所述权重矩阵w;

24、步骤s443,利用通过所述训练集ma′,得到所有所述输入向量¢进行模型训练,直至所述bert模型的预测数据与原始数据无差异,所述bert模型的预训练结束。

25、较优地,所述步骤s5包括:

26、步骤s51,输入所述验证集mb中各元素,将所述验证集mb中各元素编码为文本向量、再按照所述步骤s41-s43执行预测;

27、步骤s52,对所述步骤s51所得的输出向量¢′使用反向word2vec反向编码为sql查询语句;

28、步骤s53,将所述步骤s52所得的sql查询语句输入进数据库管理系统dbms中执行,并记录经bert模型调优的相关测试参数;

29、步骤s54,利用所述对比调优模型对所述验证集mb中各元素进行调优、将调优结果输入进数据库管理系统dbms中执行,并记录经对比调优模型调优的相关测试参数;

30、步骤s55,将所述经bert模型调优的相关测试参数与所述经对比调优模型调优的相关测试参数做比对以测试调优效果,根据比对结果对bert模型中的权重矩阵w′进行fine-tuning操作,使所述bert模型的调优效果始终由于所述对比调优模型,得处最终的bert模型。

31、较优地,相关测试参数的类型包括执行所用时间、资源利用量中一种或两种,其中,执行所用时间更少、资源利用量更少代表调优效果更优。

32、较优地,所述步骤s6包括:

33、步骤s61,分别利用所述步骤s5所得的bert模型和所述对比调优模型对所述测试集mc进行调优;

34、步骤s62,对所述步骤s61所得的两种调优结果做相关测试参数的比对;

35、步骤s63,所述步骤s5所得的bert模型的调优效果全部优于所述对比调优模型时,训练结束。

36、较优地,所述步骤s7包括:

37、步骤s71,输入所述新查询,将所述新查询编码为新查询的文本向量,再按照所述步骤s41-s43执行得到新查询的输出向量;

38、步骤s72,将所述新查询的输出向量反向编码回sql语句,得出调优后的表连接顺序。

39、较优地,所述步骤s2中所述训练集ma、所述验证集mb、所述测试集mc的元素数目比例为8:1:1;所述步骤s42中占比量a%的取值为15%。

40、较优地,所述步骤s32利用basictokenizer分词器执行分词操作;所述步骤s54中所述对比调优模型采用rtos优化模型。

41、由上述技术方案可知,本发明实施例提供的基于bert的数据库查询连接顺序调整方法,利用sql生成器生成sql集合a={α};基于sql集合a生成训练集、验证集和测试集,利用学习式连接顺序调整模型对训练集ma进行调整,调整后得到的查询集ma′;将查询集ma′中各元素编码为文本向量;将文本向量编辑成为输入向量,将|ma′|个输入向量输入bert模型进行预训练,通过调整权重矩阵;利用验证集mb、结合对比调优模型验证bert模型,出现调优效果不优于对比调优模型的情况时,对权重矩阵执行fine-tuning操作;利用测试集mc、结合对比调优模型测试bert模型,测试完成后调优效果全部优于对比调优模型,训练结束;利用训练好的bert模型执行新查询的查询连接顺序优化调整。本发明训练bert模型用作优化sql语句的表连接顺序,以此来提升查询语句的效率,减少访问数据库时产生的资源消耗。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图