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

技术编号:37975839 阅读:15 留言:0更新日期:2023-06-30 09:51
本发明专利技术提供了一种数据库操作语句执行计划的生成方法、存储介质与设备。其中上述方法包括:判断数据库操作语句是否满足快速生成执行计划的条件;若满足,则记录执行数据库操作语句需要查询的分区子表的标识符至分区子表信息表中;根据分区父表生成父表执行计划;遍历分区子表信息表,用分区子表的信息替换父表执行计划中分区父表的信息,生成子表执行计划。通过本方法,能够通过分区父表的执行计划直接生成分区子表的执行计划,可以避免数据库为每个分区子表单独创建对应的执行计划,无需频繁大量地访问系统资源,避免造成并发场景下的阻塞问题。的阻塞问题。的阻塞问题。

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


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

技术介绍

[0002]现有分区表的处理方案大多是将子表进行物理实现,而父表不占用实际的物理存储。分区表的统计信息分散在各个子表中。当需要对分区表进行扫描时,需要先通过父表的信息获取到子表,再分别遍历各个子表,通过在系统资源中查找对应的子表的表信息,索引信息,统计信息等。计划生成阶段,将分别根据每个子表的信息和索引信息创建对于该子表的最优执行计划,而读取表信息和索引信息的过程中需要对系统表进行加锁和解锁的操作。在高并发场景下,当子分区数量较多时,执行计划的生成就会大量阻塞在锁等待状态,导致计划时间过长,严重影响查询性能。

技术实现思路

[0003]本专利技术的一个目的是不再单独获取每个子表的信息分别生成执行计划。
[0004]本专利技术一个进一步的目的是使用子表的信息替换父表的执行计划中的信息,从而生成子表执行计划。
[0005]本专利技术一个进一步的目的是提升数据库性能。
[0006]特别地,本专利技术提供了一种数据库操作语句执行计划的生成方法,其包括:
[0007]判断数据库操作语句是否满足快速生成执行计划的条件;
[0008]若满足,则记录执行数据库操作语句需要查询的分区子表的标识符至分区子表信息表中;
[0009]根据分区父表生成父表执行计划;
[0010]遍历分区子表信息表,用分区子表的信息替换父表执行计划中分区父表的信息,生成子表执行计划。
[0011]可选地,判断数据库操作语句是否满足快速生成执行计划的条件的步骤包括:
[0012]判断执行数据库操作语句需要查询的分区子表的数量是否大于预设系统参数;
[0013]若分区子表的数量大于预设系统参数,则判断数据库操作语句是否为预设的语句类型,若是则判定满足快速生成执行计划的条件。
[0014]可选地,判断数据库操作语句是否为预设的语句类型,若是则判定满足快速生成执行计划的条件的步骤包括:
[0015]判断数据库操作语句是否为查询语句;
[0016]若数据库操作语句是查询语句,则判定满足快速生成执行计划的条件。
[0017]可选地,判断数据库操作语句是否为查询语句的步骤之后还包括:
[0018]若数据库操作语句不是查询语句,则判断数据库操作语句是否为删除语句或修改语句;
[0019]若数据库操作语句是删除语句或修改语句,则判断数据库操作语句是否只操作一个表;
[0020]若数据库操作语句只操作一个表,则判定满足快速生成执行计划的条件。
[0021]可选地,遍历分区子表信息表,用分区子表的信息替换父表执行计划中分区父表的信息,生成子表执行计划的步骤包括:
[0022]遍历分区子表信息表,获取分区子表的标识符;
[0023]根据分区子表的标识符获取分区子表的信息;
[0024]将分区子表的信息在数据库中进行偏移量的修改;
[0025]用修改后的分区子表的信息替换父表执行计划中分区父表的信息。
[0026]可选地,根据分区父表生成父表执行计划的步骤之后还包括:创建中间执行节点;
[0027]生成子表执行计划的步骤之后包括:将子表执行计划挂载至中间执行节点。
[0028]可选地,用分区子表的信息替换父表执行计划中分区父表的信息的步骤之前包括:
[0029]拷贝父表执行计划。
[0030]可选地,判断数据库操作语句是否满足快速生成执行计划的条件的步骤之后还包括:
[0031]在判断结果为不满足快速生成执行计划的条件的情况下,遍历执行数据库操作语句需要查询的分区子表;
[0032]获取分区子表的信息;
[0033]获取分区子表的索引信息;
[0034]根据分区子表的信息和分区子表的索引信息创建分区子表的执行计划。
[0035]根据本专利技术的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库操作语句执行计划的生成方法。
[0036]根据本专利技术的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库操作语句执行计划的生成方法。
[0037]本专利技术的数据库操作语句执行计划的生成方法,判断数据库操作语句是否满足快速生成执行计划的条件;若满足,则记录执行该数据库操作语句所需要查询的分区子表的标识符至分区子表信息表中;创建中间执行节点;根据分区父表生成父表执行计划;遍历分区子表信息表,根据分区子表的标识符获取分区子表的信息,将该分区子表的信息进行偏移量的修改;用修改后的分区子表的信息替换父表执行计划中分区父表的信息,从而生成子表执行计划,并将子表执行计划挂载至中间执行节点。通过本方法,能够通过分区父表的执行计划直接生成分区子表的执行计划,可以避免数据库为每个分区子表单独创建对应的执行计划,无需频繁大量地访问系统资源,避免造成并发场景下的阻塞问题。
[0038]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0039]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
[0040]图1是根据本专利技术一个实施例的数据库操作语句执行计划的生成方法的流程示意图;
[0041]图2是根据本专利技术另一个实施例的数据库操作语句执行计划的生成方法的流程示意图;
[0042]图3是根据本专利技术一个实施例的数据库操作语句执行计划的生成方法中机器可读存储介质的示意图;以及
[0043]图4是根据本专利技术一个实施例的数据库操作语句执行计划的生成方法中计算机设备的示意图。
具体实施方式
[0044]本领域技术人员应当理解的是,下文所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,该一部分实施例旨在用于解释本专利技术的技术原理,并非用于限制本专利技术的保护范围。基于本专利技术提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本专利技术的保护范围之内。
[0045]现有分区表的处理方案大多是将子表进行物理实现,而父表不占用实际的物理存储。分区表的统计信息分散在各个子表中。当需要对分区表进行扫描时,需要先通过父表的信息获取到子表,再分别遍历各个子表,通过在系统资源中查找对应的子表的表信息,索引信息,统计信息等。计划生成阶段,将分别根据每个子表的信息和索引信息创建对于该子表的最优执行计划,而读取表信息和索引信息的过程中需要对系统表进行加锁和解锁的操作。在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库操作语句执行计划的生成方法,包括:判断所述数据库操作语句是否满足快速生成执行计划的条件;若满足,则记录执行所述数据库操作语句需要查询的分区子表的标识符至分区子表信息表中;根据分区父表生成父表执行计划;遍历所述分区子表信息表,用所述分区子表的信息替换所述父表执行计划中所述分区父表的信息,生成子表执行计划。2.根据权利要求1所述的数据库操作语句执行计划的生成方法,其中,所述判断所述数据库操作语句是否满足快速生成执行计划的条件的步骤包括:判断执行所述数据库操作语句需要查询的分区子表的数量是否大于预设系统参数;若所述分区子表的数量大于所述预设系统参数,则判断所述数据库操作语句是否为预设的语句类型,若是则判定满足快速生成执行计划的条件。3.根据权利要求2所述的数据库操作语句执行计划的生成方法,其中,所述判断所述数据库操作语句是否为预设的语句类型,若是则判定满足快速生成执行计划的条件的步骤包括:判断所述数据库操作语句是否为查询语句;若所述数据库操作语句是查询语句,则判定满足快速生成执行计划的条件。4.根据权利要求3所述的数据库操作语句执行计划的生成方法,其中,所述判断所述数据库操作语句是否为查询语句的步骤之后还包括:若所述数据库操作语句不是查询语句,则判断所述数据库操作语句是否为删除语句或修改语句;若所述数据库操作语句是删除语句或修改语句,则判断所述数据库操作语句是否只操作一个表;若所述数据库操作语句只操作一个表,则判定满足快速生成执行计划的条件。5.根据权利要求1所述的数据库操作语句执行计划的生成方法,其中,所述遍历所述分区子表信息表,用所述分区子表的信息替换所述父表...

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

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

1