数据库语句执行计划的生成方法、存储介质及设备技术

技术编号:39400853 阅读:8 留言:0更新日期:2023-11-19 15:53
本发明专利技术提供了一种数据库语句执行计划的生成方法、存储介质及设备。数据库语句执行计划的生成方法包括:获取查询语句;根据查询语句的语句内容获取预先缓存的执行计划;判断执行计划是否是针对分区表的执行计划;若执行计划是针对分区表的执行计划,根据查询语句含有的常量值确定查询语句实际需要执行的扫描操作,针对分区表的执行计划包括对分区表的多个子表顺序扫描的多个扫描操作;根据实际需要执行的扫描操作生成使用的实际执行计划。进而在能够直接读取缓存执行计划来提高系统性能的基础上,使得生成的实际执行计划只需对必要的子表进行扫描操作,有助于进一步地提高系统性能。能。能。

【技术实现步骤摘要】
数据库语句执行计划的生成方法、存储介质及设备


[0001]本专利技术涉及数据库
,特别是涉及一种数据库语句执行计划的生成方法、存储介质及设备。

技术介绍

[0002]在数据库的使用过程中,数据库执行一个SQL(Structured Query Language,简称SQL,结构化查询语言)语句的过程通常包括词法解析,语法解析,语义分析,查询重写,生成执行计划,实际执行这几个阶段。其中,词法解析,语法解析,语义分析,查询重写这些过程的最终目的是为了生成执行计划。实际上,对格式基本类似的一些SQL语句来说,这些语句从词法解析到生成执行计划阶段的执行过程以及中间产物完全相同。因此,在数据库的使用过程中,可以把相似SQL语句的执行计划缓存起来,再次处理格式相似的SQL语句时,只需直接读取缓存的执行计划,从而提高系统的性能。
[0003]分区表是数据库中的一种特殊数据表,分区表按照一定规则分成多个子表。对于针对分区表的查询语句来说,只能缓存一个通用的执行计划,也就是必须对所有子表进行扫描的执行计划,以致于在利用读取缓存执行计划生成执行计划的方式中,生成的执行计划必须是对所有子表进行扫描的执行计划,没有有效利用分区表的优势,目前还存在进一步优化的空间。

技术实现思路

[0004]本专利技术的一个目的是要提供一种能够解决上述任一问题的数据库语句执行计划的生成方法、存储介质及设备。
[0005]特别地,本专利技术提供了一种数据库语句执行计划的生成方法,包括:
[0006]获取查询语句;<br/>[0007]根据所述查询语句的语句内容获取预先缓存的执行计划;
[0008]判断所述执行计划是否是针对分区表的执行计划;
[0009]若所述执行计划是针对分区表的执行计划,根据所述查询语句含有的常量值确定所述查询语句实际需要执行的扫描操作,所述针对分区表的执行计划包括对所述分区表的多个子表顺序扫描的多个所述扫描操作;
[0010]根据所述实际需要执行的扫描操作生成使用的实际执行计划。
[0011]可选地,判断所述执行计划是否是针对分区表的执行计划的步骤包括:
[0012]将所述查询语句的表名和变量名与预先缓存的分区标记数组进行匹配,所述分区标记数组为分区表的表名和分区条件构成的数组;
[0013]若匹配到对应的分区标记数组,则判定所述执行计划是针对分区表的执行计划。
[0014]可选地,根据所述查询语句含有的常量值确定所述查询语句实际需要执行的扫描操作的步骤包括:
[0015]将所述常量值和所述分区表的子表的分区范围进行对比,确定需要扫描的子表;
[0016]将对应所述需要扫描的子表的扫描操作确定为所述实际需要执行的扫描操作。
[0017]可选地,根据所述实际需要执行的扫描操作生成使用的实际执行计划的步骤包括:
[0018]拷贝所述执行计划,得到基础执行计划;
[0019]删除所述基础执行计划中除所述实际需要执行的扫描操作之外的其他扫描操作,得到所述实际执行计划。
[0020]可选地,根据所述查询语句的语句内容获取预先缓存的执行计划的步骤包括:
[0021]将所述查询语句转化为去除常量值的参数化语句;
[0022]根据预置算法计算所述参数化语句的标识;
[0023]从缓存的执行计划中获取与所述标识匹配的执行计划。
[0024]可选地,根据预置算法计算所述参数化语句的标识的步骤包括:
[0025]将所述参数化语句计算为一个整数值;
[0026]利用所述整数值、所述参数化语句的字符长度、数据库名和用户身份标识计算哈希值,将所述哈希值作为所述标识。
[0027]可选地,根据预置算法计算所述参数化语句的标识的步骤包括:
[0028]采用信息摘要算法计算所述参数化语句的MD5值,将所述MD5值作为所述标识。
[0029]可选地,从缓存的执行计划中获取与所述标识匹配的执行计划的步骤包括:
[0030]从预先配置的计划缓存表中查找与所述标识匹配的执行计划,所述计划缓存表存储有一一对应的标识与执行计划。
[0031]根据本专利技术的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据上述任一项所述的数据库语句执行计划的生成方法。
[0032]根据本专利技术的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据上述任一项所述的数据库语句执行计划的生成方法。
[0033]本专利技术的数据库语句执行计划的生成方法通过在获取到预先缓存的执行计划后判断执行计划是否是针对分区表的执行计划,在执行计划是针对分区表的执行计划的情况下,根据查询语句含有的常量值确定实际需要执行的子表扫描操作,继而根据实际需要执行的子表扫描操作生成所要使用的实际执行计划。因此,本方案不仅能够直接读取缓存的执行计划,在查找到缓存的针对分区表的执行计划后,还能够对针对分区表的缓存执行计划进行进一步处理,从而使得最终生成的执行计划只需执行对分区表的必要子表的扫描操作,进而在能够直接读取缓存执行计划来提高系统性能的基础上,使得生成的实际执行计划只需对必要的子表进行扫描操作,有助于进一步地提高系统性能。
[0034]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0035]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些
附图未必是按比例绘制的。附图中:
[0036]图1是根据本专利技术一个实施例的数据库语句执行计划的生成方法的示意性流程图;
[0037]图2是根据本专利技术一个实施例的数据库语句执行计划的生成方法中根据查询语句的语句内容获取预先缓存的执行计划步骤的示意性流程图;
[0038]图3是根据本专利技术一个实施例的数据库语句执行计划的生成方法中判断执行计划是否是针对分区表的执行计划步骤的示意性流程图;
[0039]图4是根据本专利技术一个实施例的数据库语句执行计划的生成方法中确定查询语句实际需要执行的扫描操作步骤的示意性流程图;
[0040]图5是根据本专利技术一个实施例的数据库语句执行计划的生成方法中根据实际需要执行的扫描操作生成使用的实际执行计划步骤的示意性流程图;
[0041]图6是根据本专利技术一个实施例的机器可读存储介质的示意图;
[0042]图7是根据本专利技术一个实施例的计算机设备的示意图。
具体实施方式
[0043]本领域技术人员应当理解的是,下文所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,该一部分实施例旨在用于解释本专利技术的技术原理,并非用于限制本专利技术的保本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库语句执行计划的生成方法,包括:获取查询语句;根据所述查询语句的语句内容获取预先缓存的执行计划;判断所述执行计划是否是针对分区表的执行计划;若所述执行计划是针对分区表的执行计划,根据所述查询语句含有的常量值确定所述查询语句实际需要执行的扫描操作,所述针对分区表的执行计划包括对所述分区表的多个子表顺序扫描的多个所述扫描操作;根据所述实际需要执行的扫描操作生成使用的实际执行计划。2.根据权利要求1所述的数据库语句执行计划的生成方法,其中,所述判断所述执行计划是否是针对分区表的执行计划的步骤包括:将所述查询语句的表名和变量名与预先缓存的分区标记数组进行匹配,所述分区标记数组为分区表的表名和分区条件构成的数组;若匹配到对应的分区标记数组,则判定所述执行计划是针对分区表的执行计划。3.根据权利要求1所述的数据库语句执行计划的生成方法,其中,所述根据所述查询语句含有的常量值确定所述查询语句实际需要执行的扫描操作的步骤包括:将所述常量值和所述分区表的子表的分区范围进行对比,确定需要扫描的子表;将对应所述需要扫描的子表的扫描操作确定为所述实际需要执行的扫描操作。4.根据权利要求1所述的数据库语句执行计划的生成方法,其中,所述根据所述实际需要执行的扫描操作生成使用的实际执行计划的步骤包括:拷贝所述执行计划,得到基础执行计划;删除所述基础执行计划中除所述实际需要执行的扫描操作之外的其他扫描操作,得到所述实际执行计划。5.根据权利要求1所述的数据...

【专利技术属性】
技术研发人员:范国腾尹强徐登峰
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

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

1