掌桥专利:专业的专利平台
掌桥专利
首页

数据库操作语句的处理方法、存储介质与设备

文献发布时间:2024-04-18 20:02:18


数据库操作语句的处理方法、存储介质与设备

技术领域

本发明涉及数据库领域,特别是涉及一种数据库操作语句的处理方法、存储介质与设备。

背景技术

随着数据库的普及,数据库的性能要求越来越高,因此数据库在执行数据库操作语句时需要对其进行优化操作,最终得到最优执行计划。

但在实际生产中,由于业务需求可能会人为干预最优执行计划的判定,从而使得数据库操作语句按照预想的方式去执行,例如use index等方式,但是其效果并不强势,经常使得数据库操作语句仍然按照别的执行计划去执行,达不到预想的目的。

发明内容

本发明的一个目的是控制执行计划的生成。

本发明的一个进一步的目的是提高索引配置语句的影响力。

特别地,本发明提供了一种数据库操作语句的处理方法,包括:

获取数据库操作语句中的索引配置信息;

根据索引配置信息对执行计划的生成路径进行处理;

根据处理后的生成路径生成执行计划。

可选地,获取数据库操作语句中的索引配置信息的步骤包括:

获取数据库操作语句;

判断数据库操作语句中是否包含目标关键词;

若是,则提取目标关键词及其包含的内容作为索引配置信息。

可选地,目标关键词包括推荐索引关键词;

根据索引配置信息对执行计划的生成路径进行处理的步骤包括:

判断索引配置信息中的目标关键词是否为推荐索引关键词;

若是,则对生成路径中的索引扫描路径进行处理;

为生成路径中索引扫描路径以外的扫描路径增加扫描代价。

可选地,对生成路径中的索引扫描路径进行处理的步骤包括:

记录数据库操作语句中的索引信息至预设信息表中;

获取目标关键词指定的目标索引;

删除预设信息表中目标索引以外的索引。

可选地,目标关键词包括指定索引关键词;

根据索引配置信息对执行计划的生成路径进行处理的步骤包括:

判断索引配置信息中的目标关键词是否为指定索引关键词;

若是,则对生成路径中的索引扫描路径进行处理;

为生成路径中索引扫描路径以外的扫描路径增加扫描代价;

删除生成路径中索引扫描路径和全表扫描路径以外的扫描路径。

可选地,对生成路径中的索引扫描路径进行处理的步骤包括:

记录数据库操作语句中的索引信息至预设信息表中;

获取目标关键词指定的目标索引;

删除预设信息表中目标索引以外的索引。

可选地,目标关键词包括忽略索引关键词;

根据索引配置信息对执行计划的生成路径进行处理的步骤包括:

判断索引配置信息中的目标关键词是否为忽略索引关键词;

若是,则记录数据库操作语句中的索引信息至预设信息表中;

获取目标关键词指定的目标索引;

在预设信息表中删除目标索引。

可选地,根据处理后的生成路径生成执行计划的步骤包括:

计算每个生成路径所消耗的代价;

根据代价进行排序,选取最优的生成路径作为执行计划。

可选地,获取数据库操作语句的步骤之后还包括:

计算数据库操作语句的选择率;

判断选择率是否大于预设阈值;

若是,则直接确定执行计划为全表扫描。

根据本发明的又一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库操作语句的处理方法。

本发明的方案中,首先获取数据库操作语句中的索引配置信息;根据索引配置信息对执行计划的生成路径进行处理;根据处理后的生成路径生成执行计划。通过此方法,能够根据索引配置信息对数据库操作语句的执行计划的生成产生影响,从而控制执行计划的生成,使得数据库操作语句按照预想的方式执行。

进一步地,本发明的方案中,在目标关键词为推荐索引关键词的情况下,首先对生成路径中的索引扫描路径进行处理,然后为生成路径中索引扫描路径以外的扫描路径增加代价。从而增加推荐索引关键词的强度,使得执行计划尽量按照推荐索引执行。在目标关键词为指定索引关键词的情况下,首先对生成路径中的索引扫描路径进行处理,然后为生成路径中索引扫描路径以外的扫描路径增加代价。随后删除索引扫描和全表扫描以外的其他路径,从而强制执行计划按照指定索引执行。通过此方法,进一步提高了索引配置语句对于路径选择的影响力,使得数据库操作语句能够按照预想的方式执行。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:

图1是根据本发明一个实施例的数据库操作语句的处理方法的流程示意图;

图2是根据本发明另一个实施例的数据库操作语句的处理方法的流程示意图;

图3是根据本发明再一个实施例的数据库操作语句的处理方法的流程示意图;

图4是根据本发明一个实施例的数据库操作语句的处理方法中机器可读存储介质的示意图;以及

图5是根据本发明一个实施例的数据库操作语句的处理方法计算机设备的示意图。

具体实施方式

本领域技术人员应当理解的是,下文所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,该一部分实施例旨在用于解释本发明的技术原理,并非用于限制本发明的保护范围。基于本发明提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本发明的保护范围之内。

图1是根据本发明一个实施例的数据库操作语句的处理方法的流程示意图。在一些可选的实施例中,本流程一般可以包括:

步骤S101,获取数据库操作语句中的索引配置信息。在本实施例中,数据库操作语句可以是SQL语句。数据库在接收数据库操作语句之后,会根据数据库操作语句的具体内容来计算其通过各种路径执行所消耗的代价,最后会根据消耗的代价确定最优的路径来执行此数据库操作语句,也即对数据库操作语句的优化。但在实际生产中,由于业务需求可能会人为干预最优执行计划的判定,从而使得数据库操作语句按照预想的方式去执行,一种可选的方式就是在数据库操作语句中添加索引配置语句,数据库在接收到此类数据库操作语句时,会通过关键词识别得到对应的索引配置信息。其中索引配置信息的一种可选示例如索引的配置语句类型及其对应的具体索引等信息。本领域技术人员可以根据实际情况确定索引配置信息的具体内容。

步骤S102,根据索引配置信息对执行计划的生成路径进行处理。在一些可选的实施例中,对执行计划的生成路径进行处理一些可选操作例如:对索引配置信息所指定的路径进行对应的处理,以及对指定路径以外的其他路径进行增加代价一类的处理方式。其中代价是指优化器在确定最终选定的路径时的一种选择方式,通过对每种路径的所消耗的代价进行排序,从而选择最优的路径生成对应的执行计划。

步骤S103,根据处理后的生成路径生成执行计划。

通过本方法,提高了索引配置语句对于路径选择的影响力,从而控制执行计划的生成,使得数据库操作语句按照预想的方式执行。

在本实施例中,获取数据库操作语句中的索引配置信息的步骤一般可以包括:获取数据库操作语句;判断数据库操作语句中是否包含目标关键词;若是,则提取目标关键词及其包含的内容作为索引配置信息。其中,目标关键词的一些可选示例如:use index(推荐索引)、force index(指定索引)以及ignore index(忽略索引)。本领域技术人员可以根据实际情况确定目标关键词的具体种类。

在一些可选的实施例中,目标关键词可以包括推荐索引关键词;根据索引配置信息对执行计划的生成路径进行处理的步骤一般可以包括:判断索引配置信息中的目标关键词是否为推荐索引关键词;若是,则对生成路径中的索引扫描路径进行处理;为生成路径中索引扫描路径以外的扫描路径增加代价。其中,推荐索引关键词可以是use index,其用于指示数据库在生成执行计划的过程中推荐以此关键词所指定的具体索引生成相应的执行计划。在本实施例中对于推荐索引关键词的一种操作方式为:在对生成路径中的索引扫描路径进行处理的步骤之后,新增为生成路径中索引扫描路径以外的扫描路径增加代价。通过此方式,能够在后续优化器计算每条扫描路径的代价时,由于其他路径的代价被人为增加,从而使得优化器更加倾向于使用索引扫描,从而达到推荐索引的目的。

在本实施例中,对生成路径中的索引扫描路径进行处理的步骤一般可以包括:记录数据库操作语句中的索引信息至预设信息表中;获取目标关键词指定的目标索引;删除预设信息表中目标索引以外的索引。通过此方法,能够在优化器确定以索引扫描的执行路径时,保证优化器能够根据指定的索引进行操作,从而达到推荐索引的目的。

在另一些可选的实施例中,目标关键词一般可以包括指定索引关键词;根据索引配置信息对执行计划的生成路径进行处理的步骤一般可以包括:判断索引配置信息中的目标关键词是否为指定索引关键词;若是,则对生成路径中的索引扫描路径进行处理;为生成路径中索引扫描路径以外的扫描路径增加代价;删除生成路径中索引扫描路径和全表扫描路径以外的扫描路径。其中,指定索引关键词可以是force index,其用于指示数据库在生成执行计划的过程中指定以此关键词所指定的具体索引生成相应的执行计划。在本实施例中对于指定索引关键词的一种操作方式为:在对生成路径中的索引扫描路径进行处理,为生成路径中索引扫描路径以外的扫描路径增加代价的步骤之后,新增删除索引扫描路径和全表扫描路径以外的其他扫描路径。通过此方式,能够在后续优化器计算每条扫描路径的代价时,会发现仅存在索引扫描路径,从而达到指定索引的目的。而且,之所以先为其他扫描路径增加代价,随后又删除其他扫描路径,是因为在数据库执行过程中,若不为其他扫描路径增加代价,有可能出现索引扫描路径的代价太高,而被优化器自动忽略的情况出现。同时为了保证数据库的正常运行,需要在数据库的扫描路径中保留至少一个有效路径,而全表扫描在数据库执行过程中是一定有效的,因此删除除索引扫描路径和全表扫描路径以外的其他扫描路径,从而避免由于索引扫描路径出现故障导致数据库运行出错。

在本实施例中,对生成路径中的索引扫描路径进行处理的步骤一般可以包括:记录数据库操作语句中的索引信息至预设信息表中;获取目标关键词指定的目标索引;删除预设信息表中目标索引以外的索引。通过此方法,能够在优化器确定以索引扫描的执行路径时,保证优化器能够根据指定的索引进行操作,从而达到指定索引的目的。

在又一些可选的实施例中,目标关键词包括忽略索引关键词;根据索引配置信息对执行计划的生成路径进行处理的步骤一般可以包括:判断索引配置信息中的目标关键词是否为忽略索引关键词;若是,则记录数据库操作语句中的索引信息至预设信息表中;获取目标关键词指定的目标索引;在预设信息表中删除目标索引。其中,忽略索引关键词可以是ignore index,其用于指示数据库在生成执行计划的过程中忽略此关键词所指定的具体索引。通过此方式,能够在后续优化器计算每条扫描路径的代价时,即便采用了索引扫描路径,也会忽略指定的索引,从而达到目的。

在本实施例中,根据处理后的生成路径生成执行计划的步骤一般可以包括:计算每个生成路径所消耗的代价;根据代价进行排序,选取最优的生成路径作为执行计划。

获取数据库操作语句的步骤之后一般还可以包括:计算数据库操作语句的选择率;判断选择率是否大于预设阈值;若是,则直接确定执行计划为全表扫描。其中,选择率是指满足条件的行在查询的结果集中所占的比率,预设阈值的一种可选示例为1,当选择率大于1,表示数据库操作语句会对全表进行操作,因此,直接可以选择全表扫描的方式,从而节省数据库服务器资源。

通过本方法,对推荐索引关键词以及指定索引关键词的执行逻辑进行修改,进一步提高了索引配置语句对于路径选择的影响力,从而控制执行计划的生成,使得数据库操作语句按照预想的方式执行。

图2是根据本发明另一个实施例的数据库操作语句的处理方法的流程示意图。在一些可选的实施例中,本流程一般可以包括:

步骤S201,获取数据库操作语句。

步骤S202,判断选择率是否大于预设阈值。在本实施例中,选择率一般是指满足条件的行在查询的结果集中所占的比率。

步骤S203,在步骤S202判断为是的情况下,确定执行计划为全表扫描。在本实施例中,预设阈值的一种可选示例为1,当选择率大于1,表示数据库操作语句会对全表进行操作,因此,直接可以选择全表扫描的方式,从而节省数据库服务器资源。

步骤S204,在步骤S202判断为否的情况下,判断数据库操作语句中是否包含目标关键词。在本实施例中,目标关键词的一些可选示例如:use index(推荐索引)、forceindex(指定索引)以及ignore index(忽略索引)。

步骤S205,在步骤S204判断为是的情况下,提取目标关键词及其包含的内容作为索引配置信息。在一些可选的实施例中,目标关键词的使用方式一般是use index(idx1,idx2)、ignore index(idx1,idx3)以及force index (idx2),因此可以根据此类语句获取目标关键词及其包含的内容作为索引配置信息。其中use index(idx1,idx2)其用于指示数据库在生成执行计划的过程中推荐以此关键词所指定的具体索引idx1和idx2生成相应的执行计划;force index (idx2)其用于指示数据库在生成执行计划的过程中指定以此关键词所指定的具体索引idx2生成相应的执行计划;ignore index(idx1,idx3)其用于指示数据库在生成执行计划的过程中指定忽略此关键词所指定的具体索引idx1和idx3。

步骤S206,判断索引配置信息中的目标关键词类别。

步骤S207,根据目标关键词类别对生成路径中的索引扫描路径进行相应处理。在一些可选的实施例中,当目标关键词为推荐索引关键词时,处理步骤一般可以包括:记录数据库操作语句中的索引信息至预设信息表中;获取目标关键词指定的目标索引;删除预设信息表中目标索引以外的索引,为生成路径中索引扫描路径以外的扫描路径增加代价。通过此方式,能够在后续优化器计算每条扫描路径的代价时,由于其他路径的代价被人为增加,从而使得优化器更加倾向于使用索引扫描,从而达到推荐索引的目的。

当目标关键词为指定索引关键词时,处理步骤一般可以包括:记录数据库操作语句中的索引信息至预设信息表中;获取目标关键词指定的目标索引;删除预设信息表中目标索引以外的索引,为生成路径中索引扫描路径以外的扫描路径增加代价,删除生成路径中索引扫描路径和全表扫描路径以外的扫描路径。通过此方式,能够在后续优化器计算每条扫描路径的代价时,会发现仅存在索引扫描路径和全表扫描路径,从而达到指定索引的目的。而且,之所以先为其他扫描路径增加代价,随后又删除其他扫描路径,是因为在数据库执行过程中,若不为其他扫描路径增加代价,有可能出现索引扫描路径的代价太高,而被优化器自动忽略的情况。同时为了保证数据库的正常运行,需要在数据库的扫描路径中保留至少一个有效路径,而全表扫描在数据库执行过程中是一定有效的,因此删除除索引扫描路径和全表扫描路径以外的其他扫描路径,从而避免由于索引扫描路径出现故障导致数据库运行出错。

当目标关键词为忽略索引关键词时,处理步骤一般可以包括:记录数据库操作语句中的索引信息至预设信息表中;获取目标关键词指定的目标索引;在预设信息表中删除目标索引。通过此方式,能够在后续优化器计算每条扫描路径的代价时,即便采用了索引扫描路径,也会忽略指定的索引,从而达到目的。

步骤S208,计算每个生成路径所消耗的代价。

步骤S209,根据代价进行排序,选取最优的生成路径作为执行计划。

通过本方法,对推荐索引关键词以及指定索引关键词的执行逻辑进行修改,进一步提高了索引配置语句对于路径选择的影响力,从而控制执行计划的生成,使得数据库操作语句按照预想的方式执行。并且当选择率大于预设阈值的情况下,直接采用全部扫描的方式执行,从而降低数据库的资源消耗。

图3是根据本发明再一个实施例的数据库操作语句的处理方法的流程示意图。在一些可选的实施例中,本流程一般可以包括:

步骤S301,从信息表中获取索引信息。在本实施例中,信息表中记录有数据库操作语句中的索引信息,其中一般可以包括索引关键词及其包含的具体索引列表信息。本领域技术人员可以根据实际情况自行设定信息表的类型以及存储方式。

步骤S302,判断是否为推荐或者指定索引关键词。在一些可选的实施例中,推荐索引关键词一般可以是use index,指定索引关键词一般可以是force index。本领域技术人员可以根据实际情况自行确定不同类型的索引关键词所对应的具体形式。

步骤S303,在步骤S302判断为否的情况下,判断是否为忽略索引关键词。在本实施例中,忽略索引关键词可以是ignore index,其用于指示数据库在生成执行计划的过程中忽略此关键词所指定的具体索引。

步骤S304,在步骤S303判断为是的情况下,信息表中删除指定索引项。在本步骤中,一种可选的示例如:当索引关键词及其指定的内容如:ignore index(idx1,idx3)所示时,则在信息表中删除索引idx1和idx3,从而使得数据库在生成执行计划的过程中忽略idx1和idx3。

步骤S305,在步骤S302判断为是的情况下,信息表中只保留指定索引项。在本步骤中,一种可选的示例如:当索引关键词及其指定的内容如:use index(idx1,idx2),则在信息表中删除idx1和idx2以外的其他索引,从而使得数据库在根据索引生成执行计划的过程中只能通过idx1和idx3生成执行计划。

步骤S306,为除索引扫描外的扫描路径增加代价。在一些可选的实施例中,代价是指优化器在确定最终选定的路径时的一种选择方式,通过对每种路径的所消耗的代价进行排序,从而选择最优的路径生成对应的执行计划。因此在本步骤中通过为其他扫描路径增加代价的方式,增大优化器选择索引扫描路径的概率。本领域技术人员可以根据实际情况确定增加代价的具体方式以及具体数值。

步骤S307,判断选择率是否小于1。

步骤S308,在步骤S307判断为否的情况下,使用全表扫描。在本实施例中,当选择率大于等于1,表示数据库操作语句会对全表进行操作,因此,直接可以选择全表扫描的方式,从而节省数据库服务器资源。

步骤S309,在步骤S307判断为是的情况下,判断索引是否可用。在本实施例中,当选择率小于1,表示数据库操作语句不会对全表进行操作,因此可以通过其他的路径从而生成效率更快的执行计划,例如索引扫描。

步骤S310,在步骤S309判断为是的情况下,判断是否为指定索引关键词。在本实施例中,指定索引关键词可以是force index,其用于指示数据库在生成执行计划的过程中指定以此关键词所指定的具体索引生成相应的执行计划。

步骤S311,在步骤S310判断为是的情况下,删除索引扫描和全表扫描以外的其他扫描路径。通过本步骤,能够在索引关键词为指定索引关键词的情况下,确保优化器以索引扫描的路径生成执行计划,同时为了保证数据库的正常运行,需要在数据库的扫描路径中保留至少一个有效路径,而全表扫描在数据库执行过程中是一定有效的,因此删除除索引扫描路径和全表扫描路径以外的其他扫描路径,从而避免由于索引扫描路径出现故障导致数据库运行出错。

步骤S312,在步骤S309判断为否、步骤S310判断为否以及步骤S311执行完毕的情况下,计算最优路径。在本实施例中,当步骤S309判断为否,表示不存在可用索引,即无法使用索引扫描的路径生成执行计划,因此跳过后续步骤,直接计算最优路径;当步骤S310判断为否,表示索引关键词为推荐索引关键词,则经过步骤S305和步骤S306的操作之后,大概率能够选择以推荐的索引扫描的方式生成执行计划;当步骤S311执行完毕,此时仅存在索引扫描的路径并且信息表中仅存在索引关键词指定的索引,从而实现指定索引的目的。

通过本方法,通过本方法,对推荐索引关键词以及指定索引关键词的执行逻辑进行修改,进一步提高了索引配置语句对于路径选择的影响力,从而控制执行计划的生成,使得数据库操作语句按照预想的方式执行。并且当选择率大于预设阈值的情况下,直接采用全部扫描的方式执行,从而降低数据库的资源消耗。

本实施还提供了一种机器可读存储介质和计算机设备。图4是根据本发明一个实施例的机器可读存储介质401的示意图,图5是根据本发明一个实施例的计算机设备503的示意图。

机器可读存储介质401其上存储有机器可执行程序402,机器可执行程序402被处理器执行时实现上述任一实施例的数据库操作语句的处理方法。

计算机设备503可以包括存储器501、处理器502及存储在存储器501上并在处理器502上运行的机器可执行程序402,并且处理器502执行机器可执行程序402时实现上述任一实施例的数据库操作语句的处理方法。

需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,生成执行计划,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。

就本实施例的描述而言,机器可读存储介质401可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。

计算机设备503可以是例如车载计算机等类型的车机设备。计算机设备503可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备503可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上,例如汽车中央处理器。

计算机设备503可以包括适于执行存储的指令的处理器502、在操作期间为所述指令的操作提供临时存储空间的存储器501。处理器502可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器501可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。

处理器502可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备503连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备503的内置组件,或者可以是外部连接到计算设备的设备。

处理器502也可以通过系统互连链接到适于将计算机设备503连接到显示设备的显示接口。显示设备可以包括作为计算机设备503的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备503的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备503连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。

本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

技术分类

06120116576391