System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于动态查询编译缓存优化的数据库查询执行方法和装置制造方法及图纸_技高网
当前位置: 首页 > 专利查询>浙江大学专利>正文

基于动态查询编译缓存优化的数据库查询执行方法和装置制造方法及图纸

技术编号:45043489 阅读:4 留言:0更新日期:2025-04-22 17:31
本发明专利技术公开了一种基于动态查询编译缓存优化的数据库查询执行方法和装置,属于数据库管理系统领域。接收用户输入的查询语句并构建抽象语法树;根据抽象语法树生成对应的标识符,查找匹配的机器代码,加载并执行能被复用的匹配的机器代码得到执行结果;对没有查找到匹配的机器代码的用户输入的查询语句或匹配的机器代码不能被复用的用户输入的查询语句生成对应的可执行计划树,通过动态编译生成机器代码并优化,得到优化后的机器代码并加载和执行得到执行结果;随后将执行结果发送给用户,并定期清理缓存中的机器代码。本发明专利技术精准决定是否复用缓存中的机器代码,从而减少不必要的编译开销,提高查询执行效率。

【技术实现步骤摘要】

本专利技术属于数据库管理系统领域,尤其涉及一种基于动态查询编译缓存优化的数据库查询执行方法和装置


技术介绍

1、传统的数据库管理系统(dbms)在处理查询时,首先需要进行查询解析、优化和生成查询执行计划。随着查询频次的增加,尤其是对于同类查询的重复执行,现有的查询计划生成和优化过程会显著增加系统的开销,从而影响查询响应时间和系统吞吐量。

2、当前,许多现代rdbms,如postgresql、mysql、oracle等,采用缓存机制来加速查询执行过程。特别是预编译查询计划和机器代码缓存,能够减少多次查询的编译开销。然而,现有的查询缓存机制往往依赖于查询类型或数据量等固定规则,无法智能判断查询之间的相似性,容易导致不必要的缓存失效或过度编译,影响性能。

3、在此背景下,本专利技术提出了一种基于动态查询编译与缓存优化的查询执行方法,旨在通过智能的查询缓存复用和动态缓存更新机制,优化数据库查询的执行效率,减少无谓的编译开销,并确保查询性能的持续提升。


技术实现思路

1、本专利技术的目的在于针对现有技术的不足,提供了一种基于动态查询编译缓存优化的数据库查询执行方法和装置。

2、本专利技术的目的是通过以下技术方案来实现的:一种基于动态查询编译缓存优化的数据库查询执行方法,包括以下步骤:

3、(1)接收用户输入的查询语句并进行输入合法性校验和语法分析,随后由通过输入合法性校验和语法分析的用户输入的查询语句构建相对应的抽象语法树;

4、(2)根据抽象语法树生成对应的标识符,利用标识符查找匹配的机器代码并判断能否被复用,随后加载并执行能被复用的与用户输入的查询语句匹配的机器代码得到执行结果;

5、(3)对没有查找到匹配的机器代码、匹配的机器代码不能被复用或匹配的机器代码为失效状态的用户输入的查询语句生成对应的有效的可执行计划树;

6、(4)将有效的可执行计划树中的具体执行算子通过动态编译生成对应的机器代码并进行优化,得到优化后的机器代码并缓存至内存中,随后建立用户输入的查询语句与缓存在内存中的优化后的机器代码的映射关系;最后加载并执行优化后的机器代码得到执行结果;

7、(5)随后将执行结果发送给用户,并定期清理缓存中的机器代码。

8、进一步地,所述步骤(1)具体包括以下子步骤:

9、(1.1)数据库系统接收通过客户端发送来的用户输入的查询语句并进行输入合法性校验:若用户输入的查询语句中包含非法字符或语法结构,则说明用户输入的查询语句未通过输入合法性校验,数据库系统随后拒绝执行该查询语句,并返回第一错误信息给客户端,所述第一错误信息包括非法字符在用户输入的查询语句中的具体位置或非法语法结构的类型;反之则说明用户输入的查询语句通过输入合法性校验;

10、(1.2)数据库系统随后将通过输入合法性校验的用户输入的查询语句拆分为多个词法单元组成的词法单元序列,并记录每个词法单元在该查询语句中的位置信息,所述词法单元为sql关键字、标识符、运算符或常量值;所述标识符为表名、列名或数据类型;

11、(1.3)数据库系统随后对用户输入的查询语句进行语义分析:检查该查询语句对应的词法单元序列中是否存在表名或列名以及数据类型是否与常量值匹配,若存在表名或列名并且数据类型与常量值匹配则说明用户输入的查询语句通过语义分析;反之则说明用户输入的查询语句未通过语义分析,数据库系统随后拒绝执行该查询语句,并返回第二错误信息给客户端,所述第二错误信息包括用户输入的查询语句中缺失的表名或列名以及不匹配的数据类型;

12、(1.4)数据库系统随后对通过输入合法性校验和语法分析的用户输入的查询语句采用自上向下的递归下降分析法构建相对应的抽象语法树;所述抽象语法树的节点用于表示查询语句的各个组成部分,所述查询语句的各个组成部分包括select子句、from子句或where子句。

13、进一步地,所述步骤(2)具体包括以下子步骤:

14、(2.1)根据用户输入的查询语句对应的抽象语法树的结构和参数配置,生成用户输入的查询语句对应的标识符;根据生成的标识符在缓存中查找与标识符一致的机器代码作为用户输入的查询语句匹配的机器代码;

15、(2.2)随后判断缓存中查找到与用户输入的查询语句匹配的机器代码能否被复用:首先检查与用户输入的查询语句匹配的机器代码为失效状态或有效状态,若为失效状态则说明与用户输入的查询语句匹配的机器代码不能被复用,随后对该查询语句执行步骤(3);若为有效状态则继续对与用户输入的查询语句匹配的机器代码进行兼容性分析:当用户输入的查询语句的参数范围和匹配的机器代码的参数范围的偏差超过10%、用户输入的查询语句的数据分布和匹配的机器代码的数据分布的相似度未达到90%、匹配的机器代码的资源需求与数据库系统的可用资源不匹配或匹配的机器代码的资源需求与数据库系统的可用资源相匹配并且匹配的机器代码的资源需求偏差超过20%,则说明与用户输入的查询语句匹配的机器代码未通过兼容性分析,即说明与用户输入的查询语句匹配的机器代码不能被复用;反之则说明与用户输入的查询语句匹配的机器代码通过兼容性分析,即说明与用户输入的查询语句匹配的机器代码能被复用;

16、(2.3)加载并执行能被复用的与用户输入的查询语句匹配的机器代码,在执行过程中,实时监控与用户输入的查询语句匹配的机器代码:当该匹配的机器代码的执行时间超过15秒或资源需求相对于超过数据库系统可用资源的资源占用率超过80%,则标记该匹配的机器代码为失效状态;反之则继续执行直到该匹配的机器代码执行完成并得到用户输入的查询语句对应的执行结果。

17、进一步地,所述步骤(3)具体包括以下子步骤:

18、(3.1)数据库系统通过关系代数等价变换规则,实施选择下推、投影合并及谓词重排序操作对没有查找到匹配的机器代码、匹配的机器代码不能被复用或匹配的机器代码为失效状态的用户输入的查询语句对应的抽象语法树中表示过滤条件的选择节点移动到靠近抽象语法树中叶节点的位置,合并抽象语法树中多余的投影节点,调整抽象语法树中谓词节点的顺序使选择性更高的谓词节点优先执行,从而由抽象语法树生成用户输入的查询语句对应的范化逻辑查询计划;

19、(3.2)随后为规范化逻辑查询计划中的每个关系运算符分别匹配12种物理实现算法组合;每种物理实现算法组合包含1个表扫描策略和1个join算法,所述表扫描策略为表顺序扫描、表索引扫描或表位图扫描策略,所述join算法为嵌套循环连接、哈希连接、排序合并连接或索引连接算法;随后采用多目标优化遗传算法,综合考虑数据库系统的i/o开销、cpu利用率及内存消耗因素来评价每个关系运算符对应的各种物理实现算法组合的代价,选出代价最低的物理实现算法组合作为相对应的关系运算符的最优物理执行计划;随后将每个关系运算符对应的最优物理执行计划组合得到最优物理执行总计划构;

20、(3.3)根据最优物理执行总计本文档来自技高网...

【技术保护点】

1.一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(1)具体包括以下子步骤:

3.根据权利要求2所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(2)具体包括以下子步骤:

4.根据权利要求3所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(3)具体包括以下子步骤:

5.根据权利要求4所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(4)具体包括以下子步骤:

6.根据权利要求5所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(5)具体包括以下子步骤:

7.一种基于动态查询编译缓存优化的数据库查询执行装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-6任一项所述的一种基于动态查询编译缓存优化的数据库查询执行方法。

8.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-6任一项所述的一种基于动态查询编译缓存优化的数据库查询执行方法。

...

【技术特征摘要】

1.一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(1)具体包括以下子步骤:

3.根据权利要求2所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(2)具体包括以下子步骤:

4.根据权利要求3所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(3)具体包括以下子步骤:

5.根据权利要求4所述的一种基于动态查询编译缓存优化的数据库查询执行方法,其特征在于,所述步骤(4...

【专利技术属性】
技术研发人员:杜晨路朱阅岸袁巩生伍赛杨智慧唐秀汪睿姚畅陈刚
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1