CN117076491A - 一种数据处理方法、存储介质与设备 - Google Patents
一种数据处理方法、存储介质与设备 Download PDFInfo
- Publication number
- CN117076491A CN117076491A CN202311085541.4A CN202311085541A CN117076491A CN 117076491 A CN117076491 A CN 117076491A CN 202311085541 A CN202311085541 A CN 202311085541A CN 117076491 A CN117076491 A CN 117076491A
- Authority
- CN
- China
- Prior art keywords
- sql
- execution
- data processing
- processing method
- converted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 46
- 238000004458 analytical method Methods 0.000 claims description 25
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000000034 method Methods 0.000 description 17
- 230000008859 change Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000543 intermediate Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2443—Stored procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库技术,特别是涉及一种数据处理方法、存储介质与设备。该数据处理方法包括:在收到带有like操作的SQL语句的情况下,生成并缓存与带有like操作的SQL语句对应的两个执行计划,两个执行计划包括访问类型为全表扫描的第一执行计划和访问类型为索引扫描的第二执行计划;在接收带有like操作的SQL请求之后,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作;若是,则执行第二执行计划。本发明的数据处理方法,通过对带有like操作的SQL语句缓存带有索引扫描和不带索引扫描的两个执行计划,并在接收SQL请求时再进行执行计划的选定,避免了全部带有like操作的SQL均仅能执行全表扫描的问题,提高了SQL的执行效率,从而提高了数据库的性能。
Description
技术领域
本发明涉及数据库技术,特别是涉及一种数据处理方法、存储介质与设备。
背景技术
数据库执行一个SQL的过程一般分为词法分析、语法分析、语义分析、查询重写、生成执行计划、实际执行这几个阶段。其中,词法分析、语法分析、语义分析、查询重写这些阶段的最终目的是为了生成执行计划,而生成执行计划是为了高效地执行SQL并返回结果。当大量的数据库连接存在并且数据库的访问压力比较大时,以上SQL的执行过程会竞争共享资源,从而造成数据库的性能下降。实际上,对于某些格式基本类似的SQL来说,其从词法分析到生成执行计划阶段的执行过程以及中间产物完全相同。因此,对于这类SQL无需每次执行都重复执行相同的过程,而只需要把执行计划缓存起来。例如,对两个SQL:select*froma where id<1,select*form a where id<10,这两个SQL的执行结果不同,但执行计划可以是相同的。对于这类SQL语句,我们可以把其执行计划缓存起来,下次处理同类的SQL请求时,我们只需要读取缓存的执行计划,就可以避免执行语法分析、语义分析、查询重写、生成执行计划这些阶段的工作,从而提高系统的性能。
目前有些数据库系统实现了执行计划的缓存。对SQL的过程中,会把SQL的执行计划缓存起来,到下一次执行相同的SQL时,直接从缓存中读取执行计划从而执行。例如,Oracle会把执行计划缓存在共享内存中,KES数据库会把执行计划缓存在本地内存中。
然而,对于SQL中带有like操作的SQL,一部分可以将like操作变为比较操作,另一部分不可以将like操作变为比较操作。例如,对于SQL:select*from a where name like‘A%’,可以转变为where name>=‘A’and name<‘B’,以将like操作变为比较操作,从而在执行计划中使用缓存。但是当SQL语句中带有参数时,例如where name like$1,则无法转化为比较操作,故其在缓存中的执行计划仅可以使用全表扫描,而不可使用索引扫描。目前的数据库系统会将带有like操作的SQL均归为一类SQL,并将其执行计划缓存起来。考虑到该类SQL中的部分SQL只能使用全表扫描,该类SQL缓存的执行计划也只能为全表扫描,不能使用索引扫描,这会导致全部带有like操作的SQL均执行全表扫描,SQL语句的执行效率低,从而影响了数据库的性能。
发明内容
鉴于上述问题,提出了一种克服上述问题或者至少部分地解决上述问题的数据处理方法、存储介质与设备。
本发明的一个目的是要提供一种数据处理方法,以提高SQL的执行效率。
本发明一个进一步的目的是要提高在接收带有like操作的SQL请求之后确定执行计划的准确性。
特别地,本发明提供了一种数据处理方法,包括:
在收到带有like操作的SQL语句的情况下,生成并缓存与带有like操作的SQL语句对应的两个执行计划,两个执行计划包括访问类型为全表扫描的第一执行计划和访问类型为索引扫描的第二执行计划;
在接收带有like操作的SQL请求之后,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作;
若是,则执行第二执行计划。
可选地,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作包括:
获取带有like操作的SQL请求中的like之后的常量;
根据常量,判断like操作中的like运算符是否可以转换为比较运算符;
若可以,则确定带有like操作的SQL请求中的like操作可以转化为比较操作;
若不可以,则确定带有like操作的SQL请求中的like操作不可以转化为比较操作。
可选地,根据常量,判断like操作中的like运算符是否可以转换为比较运算符包括:
判断常量中是否存在前置的通配符;
若存在,则确定like操作中的like运算符不可以转换为比较运算符;
若不存在,则确定like操作中的like运算符可以转换为比较运算符。
可选地,判断常量中是否存在前置的通配符包括:
判断常量的第一位是否为通配符;
若是,则确定常量中存在前置的通配符;
若否,则确定常量中不存在前置的通配符。
可选地,在收到带有like操作的SQL语句的情况下,生成并缓存与带有like操作的SQL语句对应的两个执行计划包括:
在收到带有like操作的SQL语句的情况下,进行词法分析,将带有like操作的SQL语句中的常量替换为参数;
根据替换后的带有like操作的SQL语句生成两个执行计划;
将两个执行计划放入相同的执行计划缓存中。
可选地,在接收带有like操作的SQL请求之后,在判断带有like操作的SQL请求中的like操作是否可以转化为比较操作的步骤之前,数据处理方法还包括:
进行词法分析,将带有like操作的SQL请求中的常量替换为参数;
查询执行计划缓存中的执行计划,得到两个执行计划。
可选地,根据替换后的带有like操作的SQL语句生成两个执行计划包括:
拷贝带有like操作的SQL语句,并将拷贝得到的带有like操作的SQL语句中的like操作转化为比较操作;
分别生成第一执行计划和第二执行计划,其中,第一执行计划与带有like操作的SQL语句对应,第二执行计划与转化得到的带有比较操作的SQL语句对应。
可选地,在判断带有like操作的SQL请求中的like操作是否可以转化为比较操作的步骤之后,数据处理方法还包括:
在确定带有like操作的SQL请求中的like操作不可以转化为比较操作的情况下,执行第一执行计划。
根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据处理方法。
根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据处理方法。
本发明的数据处理方法,通过在收到带有like操作的SQL语句的情况下,生成并缓存与带有like操作的SQL语句对应的两个执行计划,两个执行计划包括访问类型为全表扫描的第一执行计划和访问类型为索引扫描的第二执行计划,实现了对带有like操作的SQL语句缓存带有索引扫描和不带索引扫描的两个执行计划,并通过在接收带有like操作的SQL请求之后,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作,并在确定带有like操作的SQL请求中的like操作可以转化为比较操作的情况下,执行第二执行计划,实现了执行计划的选择确定,避免了全部带有like操作的SQL均仅能执行全表扫描导致的SQL执行效率低的问题,提高了SQL的执行效率,从而提高了数据库系统的整体性能。
进一步地,本发明的数据处理方法通过获取带有like操作的SQL请求中的like之后的常量,并根据常量判断like操作中的like运算符是否可以转换为比较运算符,在like运算符可以转换为比较运算符的情况下,确定带有like操作的SQL请求中的like操作可以转化为比较操作,并在like运算符不可以转换为比较运算符的情况下确定带有like操作的SQL请求中的like操作不可以转化为比较操作,从而实现了对于带有like操作的SQL请求中的like操作是否可以转化为比较操作的准确判断,从而提高了在接收带有like操作的SQL请求之后选择确定执行计划的准确性,进一步保证了SQL的执行效率。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的数据处理方法的流程示意图;
图2是根据本发明另一个实施例的数据处理方法的流程示意图;
图3是根据本发明一个实施例的机器可读存储介质的结构示意图;以及
图4是根据本发明一个实施例的计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本发明的范围完整的传达给本领域的技术人员。
KES数据库可以实现执行计划的缓存,对SQL的过程中,会把SQL的执行计划缓存起来,到下一次执行相同的SQL时,直接从缓存中读取执行计划从而执行。在接收到SQL之后,执行计划的缓存过程可以包括以下步骤1)~8):
1)查询缓存中是否存在语法分析,若是,则执行步骤2),若否,则执行步骤5)。
2)进行词法分析。本步骤可以具体执行为将SQL中的常量变为参数,例如,将词法分析得到的常量节点中的值变为‘?’。
3)查询执行计划缓存中是否存在和SQL对应的执行计划,若是,则执行步骤8),若否,则执行步骤4)。具体地,根据常量变为参数的SQL生成Hash的键值,并在进行在执行计划缓存中进行查询。
4)进行语法分析。除了缓存执行计划,对于事物语句,如BEGIN、COMMIT因为其执行比较频繁,数据库还可以缓存其语法分析树,从而节省系统CPU,提高系统整体的执行效率。因此,只有在缓存中不存在语法分析的情况下,才进行语法分析。
5)进行语义分析。在缓存中存在语法分析的情况下,可跳过进行词法分析和语法分析的步骤,直接执行语义分析的步骤。
6)生成执行计划。具体地,本步骤可以根据一个参数化的SQL生成执行计划,以生成一个通用的执行计划以便给后续所有同类型的SQL使用。
7)保存执行计划。具体地,KES数据库可以把执行计划缓存在本地内存中。
8)执行和SQL对应的执行计划。
对于SQL中带有like操作的SQL,一部分可以将like操作变为比较操作,另一部分不可以将like操作变为比较操作。例如,对于SQL:select*from a where name like‘A%’,可以转变为where name>=‘A’and name<‘B’,以实现将like操作变为比较操作,可以使用索引扫描。但对于like操作中带有参数的SQL语句,例如where name like$1,由于$1是参数,无法转化为比较操作,故其在缓存中的执行计划仅可以使用全表扫描,而不可使用索引扫描。
在此基础上,对于带有like操作的SQL语句,上述步骤6)和步骤7)中的执行计划为适用于全部带有like操作的SQL语句的通用执行计划。也就是说,为了保证通用性,与带有like操作的SQL语句对应的执行计划的访问类型只能为全表扫描,不能为索引扫描,这会导致全部带有like操作的SQL均执行全表扫描,SQL语句的执行效率低,从而影响了数据库的性能。
为解决上述技术问题,本发明实施例提出一种数据处理方法。图1是根据本发明一个实施例的数据处理方法的流程示意图。如图1所示,本发明实施例的数据处理方法一般性地可包括:
步骤S102:在收到带有like操作的SQL语句的情况下,生成并缓存与带有like操作的SQL语句对应的两个执行计划,两个执行计划包括访问类型为全表扫描的第一执行计划和访问类型为索引扫描的第二执行计划。
步骤S104:在接收带有like操作的SQL请求之后,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作,若是,则执行步骤S106。
步骤S106:执行第二执行计划。在本步骤中,对于like操作可以转化为比较操作的SQL请求,选定并执行第二执行计划,实现了对至少部分带有like操作的SQL请求使用索引扫描的处理方式。
在上述步骤S104之后,本实施例的数据处理方法还可以包括以下步骤:在确定带有like操作的SQL请求中的like操作不可以转化为比较操作的情况下,执行第一执行计划。
基于上述步骤,本实施例的数据处理方法在接收带有like操作的SQL请求之后,在执行查询执行计划缓存中是否存在和SQL对应的执行计划的步骤时,可以找到两个对应的执行计划,并根据带有like操作的SQL语句中的like操作,来选定采用哪一个执行计划,再根据选定好的执行计划执行,从而完成SQL的执行过程。
本发明实施例的数据处理方法,通过在收到带有like操作的SQL语句的情况下,生成并缓存与带有like操作的SQL语句对应的两个执行计划,两个执行计划包括访问类型为全表扫描的plan1和访问类型为索引扫描的第二执行计划,实现了对带有like操作的SQL语句缓存带有索引扫描和不带索引扫描的两个执行计划,并通过在接收带有like操作的SQL请求之后,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作,并在确定带有like操作的SQL请求中的like操作可以转化为比较操作的情况下,执行第二执行计划,实现了执行计划的选择确定,避免了全部带有like操作的SQL均仅能执行全表扫描导致的SQL执行效率低的问题,提高了SQL的执行效率,从而提高了数据库系统的整体性能。
需要说明的是,KES是指人大金仓数据库管理系统KingbaseES,是一种通用关系型数据库管理系统。本领域技术人员应该可以认识到,在一些可选实施例中,本发明的数据处理方法可以适用于KES数据库,在另一些可选实施例中,本发明的数据处理方法也可以适用于其他关系型数据库。SQL语句是指结构化查询语言(Structured Query Language,SQL),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。查询满足指定条件的元组可以通过WHERE子句实现,like运算符即为WHERE子句常用的查询条件之一。带有like操作的SQL语句即为含有like运算符的SQL语句。
另外,第一执行计划可以定义为plan1,第二执行计划可以定义为plan2。plan1和plan1均指执行计划,执行计划是数据库执行器实际执行SQL语句的逻辑操作的集合。
在一些实施例中,上述步骤S102可以包括以下步骤:在收到带有like操作的SQL语句的情况下,进行词法分析,将带有like操作的SQL语句中的常量替换为参数;根据替换后的带有like操作的SQL语句生成两个执行计划;将两个执行计划放入相同的执行计划缓存中。
具体地,上述根据替换后的带有like操作的SQL语句生成两个执行计划的步骤可以执行为以下步骤:拷贝带有like操作的SQL语句,并将拷贝得到的带有like操作的SQL语句中的like操作转化为比较操作;分别生成plan1和plan2,其中,plan1与带有like操作的SQL语句对应,plan2与转化得到的带有比较操作的SQL语句对应。
在一个具体实施例中,当收到SQL语句时,首先进行词法分析,将常量替换为参数。同时,如果发现SQL语句中存在like运算符,确定收到的SQL语句是带有like操作的SQL语句。此时,将SQL做一份拷贝,将拷贝的SQL中的like操作变为比较操作。例如,当收到SQL语句:select*from a where name like‘A%’时,将其变为两个参数化的SQL:select*from awhere name like?以及select*from a where name>=?and name<?。分别为其生成两个执行计划,包括plan1和plan2,plan1与select*from a where name like?对应,plan2与select*from a where name>=?and name<?对应。将plan1和plan2放在相同的执行计划缓存中。基于此,在执行计划缓存中存在一个缓存,其Hash的键值根据select*from a wherename like?生成,其保存的计划包括plan1和plan2。
需要说明的是,like运算符的一般语法格式为like‘<匹配串>’。<匹配串>可以是一个完整的字符串,也可以含有通配符。通配符包括通配符%和下横线等。通配符%代表任意长度(长度可以为0)的字符串。例如A%表示以A开头的任意长度的字符串,%A表示以A结尾的任意长度的字符串。
在一些实施例中,在上述步骤S104中,在接收带有like操作的SQL请求之后,在判断带有like操作的SQL请求中的like操作是否可以转化为比较操作的步骤之前,本发明的数据处理方法还可以包括以下步骤:进行词法分析,将带有like操作的SQL请求中的常量替换为参数;查询执行计划缓存中的执行计划,得到两个执行计划。
在一个具体实施例中,当接受到带有like操作的SQL请求之后,对接收到的SQL请求进行词法分析,将带有like操作的SQL请求中的常量替换为参数以将带有like操作的SQL请求转化为select*from a where name like?。查询缓存的执行计划。具体地,根据和select*from a where name like?对应的Hash的键值,查询执行计划缓存中的执行计划,得到plan1和plan2这两个执行计划。当判断存在多个plan时,判断like之后的常量是否可以转化为比较操作,若是(例如,常量为A或A%等以A开头的任意长度的字符串),则采用根据带有比较操作的SQL“select*from a where name>=?and name<?”产生的执行计划plan2,若否(例如,常量为%A或%A%等以通配符开头的任意长度的字符串),则采用根据带有like操作的SQL“select*from a where name like?”产生的执行计划plan1。
本发明的数据处理方法,通过对带有like操作的SQL语句缓存带有索引扫描和不带索引扫描的两个执行计划,并在接收SQL请求时再根据like之后实际的常量,进行执行计划的选定,提高了确定带有like操作的SQL语句的执行计划的准确性和快捷性,从而进一步提高SQL的执行效率。
在一些实施例中,上述步骤S104中,判断带有like操作的SQL请求中的like操作是否可以转化为比较操作的步骤可以包括以下步骤:获取带有like操作的SQL请求中的like之后的常量;根据常量,判断like操作中的like运算符是否可以转换为比较运算符;若可以,则确定带有like操作的SQL请求中的like操作可以转化为比较操作;若不可以,则确定带有like操作的SQL请求中的like操作不可以转化为比较操作。
本发明实施例的数据处理方法通过获取带有like操作的SQL请求中的like之后的常量,并根据常量判断like操作中的like运算符是否可以转换为比较运算符,在like运算符可以转换为比较运算符的情况下,确定带有like操作的SQL请求中的like操作可以转化为比较操作,并在like运算符不可以转换为比较运算符的情况下确定带有like操作的SQL请求中的like操作不可以转化为比较操作,从而实现了对于带有like操作的SQL请求中的like操作是否可以转化为比较操作的准确判断,从而提高了在接收带有like操作的SQL请求之后选择确定执行计划的准确性,进一步保证了SQL的执行效率。
需要说明的是,比较运算符包括=、>、<、>=、<=、!=、<>、!>、!<以及NOT+上述比较运算符。
在一些实施例中,上述根据常量,判断like操作中的like运算符是否可以转换为比较运算符放入步骤可以包括以下步骤:判断常量中是否存在前置的通配符。若存在,则确定like操作中的like运算符不可以转换为比较运算符;若不存在,则确定like操作中的like运算符可以转换为比较运算符。
使用上述方法,本发明实施例的数据处理方法可以实现了对于like运算符是否可以转换为比较运算符的准确判断,从而提高了判断带有like操作的SQL请求中的like操作是否可以转化为比较操作的准确性,从而进一步保证了执行效率。
在一个具体实施例中,判断常量中是否存在前置的通配符可以包括以下步骤:判断常量的第一位是否为通配符;若是,则确定常量中存在前置的通配符;若否,则确定常量中不存在前置的通配符。
例如,对于SQL“select*from a where name like‘A%’”,常量为A%,此时,常量中的第一位不为通配符,即可确定常量中不存在前置的通配符,以确定like操作中的like运算符可以转换为比较运算符,从而带有like操作的SQL请求中的like操作可以转化为比较操作。对于SQL“select*from a where name like‘%A’”,常量为%A,此时,常量中的第一位为通配符,即可确定常量中存在前置的通配符,以确定like操作中的like运算符不可以转换为比较运算符,从而带有like操作的SQL请求中的like操作不可以转化为比较操作。
使用上述方法,本发明实施例的数据处理方法可以实现了对于带有like操作的SQL请求中的like操作可以转化为比较操作的快速判断,从而提高了判断带有like操作的SQL请求中的like操作是否可以转化为比较操作的便捷性,从而进一步提高了执行效率。
图2是根据本发明另一个实施例的数据处理方法的流程示意图。下面结合图2,对本实施例的数据处理方法的流程步骤进行具体说明。
步骤S202,在收到带有like操作的SQL语句的情况下,进行词法分析,将带有like操作的SQL语句中的常量替换为参数。
步骤S204,拷贝带有like操作的SQL语句,并将拷贝得到的带有like操作的SQL语句中的like操作转化为比较操作。
步骤S206,分别生成plan1和plan2。需要说明的是,plan1与带有like操作的SQL语句对应,plan2与转化得到的带有比较操作的SQL语句对应。
步骤S208,将plan1和plan2放入相同的执行计划缓存中。
步骤S210,在接收带有like操作的SQL请求之后,获取带有like操作的SQL请求中的like之后的常量。
步骤S212,判断常量的第一位是否为通配符,若是,则执行步骤S214,若否,则返回步骤S216。
步骤S214,执行plan1。至此,本次流程结束。
步骤S216,执行plan2。至此,本次流程结束。
本发明的数据处理方法,通过对带有like操作的SQL语句缓存带有索引扫描和不带索引扫描的两个执行计划,并在接收SQL请求时再进行执行计划的选定,避免了全部带有like操作的SQL均仅能执行全表扫描导致的SQL执行效率低的问题,提高了SQL的执行效率,从而提高了数据库系统的整体性能。
进一步地,本发明的数据处理方法通过获取带有like操作的SQL请求中的like之后的常量,并根据常量判断like操作中的like运算符是否可以转换为比较运算符,实现了对于带有like操作的SQL请求中的like操作是否可以转化为比较操作的准确判断,从而提高了在接收带有like操作的SQL请求之后选择确定执行计划的准确性,进一步保证了SQL的执行效率。
本实施例还提供了一种机器可读存储介质和计算机设备。图3是根据本发明一个实施例的机器可读存储介质的结构示意图。图4是根据本发明一个实施例的计算机设备的结构示意图。
如图3和图4所示,机器可读存储介质10其上存储有机器可执行程序11,机器可执行程序11被处理器执行时实现上述任一实施例的数据库的结构化查询语言中表的选择行数的计算方法。
计算机设备20可以包括存储器220、处理器210及存储在存储器220上并在处理器210上运行的机器可执行程序11,并且处理器210执行机器可执行程序11时实现上述任一实施例的数据库的结构化查询语言中表的选择行数的计算方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质10可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质10甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备20可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备20可以是云计算节点。计算机设备20可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备20可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备20可以包括适于执行存储的指令的处理器210、在操作期间为所述指令的操作提供临时存储空间的存储器220。处理器210可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器220可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器210可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备20连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备20的内置组件,或者可以是外部连接到计算设备的设备。
处理器210也可以通过系统互连链接到适于将计算机设备20连接到显示设备的显示接口。显示设备可以包括作为计算机设备20的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备20的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备20连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (10)
1.一种数据处理方法,包括:
在收到带有like操作的SQL语句的情况下,生成并缓存与所述带有like操作的SQL语句对应的两个执行计划,所述两个执行计划包括访问类型为全表扫描的第一执行计划和访问类型为索引扫描的第二执行计划;
在接收带有like操作的SQL请求之后,判断所述带有like操作的SQL请求中的like操作是否可以转化为比较操作;
若是,则执行所述第二执行计划。
2.根据权利要求1所述的数据处理方法,其中,
判断所述带有like操作的SQL请求中的like操作是否可以转化为比较操作包括:
获取所述带有like操作的SQL请求中的like之后的常量;
根据所述常量,判断所述like操作中的like运算符是否可以转换为比较运算符;
若可以,则确定所述带有like操作的SQL请求中的like操作可以转化为比较操作;
若不可以,则确定所述带有like操作的SQL请求中的like操作不可以转化为比较操作。
3.根据权利要求2所述的数据处理方法,其中,
根据所述常量,判断所述like操作中的like运算符是否可以转换为比较运算符包括:
判断所述常量中是否存在前置的通配符;
若存在,则确定所述like操作中的like运算符不可以转换为比较运算符;
若不存在,则确定所述like操作中的like运算符可以转换为比较运算符。
4.根据权利要求3所述的数据处理方法,其中,
判断所述常量中是否存在前置的通配符包括:
判断所述常量的第一位是否为通配符;
若是,则确定所述常量中存在前置的通配符;
若否,则确定所述常量中不存在前置的通配符。
5.根据权利要求1所述的数据处理方法,其中,
在收到带有like操作的SQL语句的情况下,生成并缓存与所述带有like操作的SQL语句对应的两个执行计划包括:
在收到带有like操作的SQL语句的情况下,进行词法分析,将所述带有like操作的SQL语句中的常量替换为参数;
根据替换后的带有like操作的SQL语句生成所述两个执行计划;
将所述两个执行计划放入相同的执行计划缓存中。
6.根据权利要求5所述的数据处理方法,其中,
在接收带有like操作的SQL请求之后,在所述判断所述带有like操作的SQL请求中的like操作是否可以转化为比较操作的步骤之前,所述数据处理方法还包括:
进行词法分析,将所述带有like操作的SQL请求中的常量替换为参数;
查询所述执行计划缓存中的执行计划,得到所述两个执行计划。
7.根据权利要求5所述的数据处理方法,其中,
根据替换后的带有like操作的SQL语句生成所述两个执行计划包括:
拷贝所述带有like操作的SQL语句,并将拷贝得到的带有like操作的SQL语句中的like操作转化为比较操作;
分别生成所述第一执行计划和所述第二执行计划,其中,所述第一执行计划与所述带有like操作的SQL语句对应,所述第二执行计划与转化得到的带有比较操作的SQL语句对应。
8.根据权利要求1所述的数据处理方法,其中,
在所述判断所述带有like操作的SQL请求中的like操作是否可以转化为比较操作的步骤之后,所述数据处理方法还包括:
在确定所述带有like操作的SQL请求中的like操作不可以转化为比较操作的情况下,执行所述第一执行计划。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据处理方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311085541.4A CN117076491A (zh) | 2023-08-25 | 2023-08-25 | 一种数据处理方法、存储介质与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311085541.4A CN117076491A (zh) | 2023-08-25 | 2023-08-25 | 一种数据处理方法、存储介质与设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117076491A true CN117076491A (zh) | 2023-11-17 |
Family
ID=88701999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311085541.4A Pending CN117076491A (zh) | 2023-08-25 | 2023-08-25 | 一种数据处理方法、存储介质与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076491A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668003A (zh) * | 2024-02-01 | 2024-03-08 | 福建省华大数码科技有限公司 | 实现数据库中集合数据类型的数据处理方法及系统 |
-
2023
- 2023-08-25 CN CN202311085541.4A patent/CN117076491A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668003A (zh) * | 2024-02-01 | 2024-03-08 | 福建省华大数码科技有限公司 | 实现数据库中集合数据类型的数据处理方法及系统 |
CN117668003B (zh) * | 2024-02-01 | 2024-05-03 | 福建省华大数码科技有限公司 | 实现数据库中集合数据类型的数据处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8065323B2 (en) | Offline validation of data in a database system for foreign key constraints | |
US8032544B2 (en) | Methods and apparatus for generating dynamic program files based on input queries that facilitate use of persistent query services | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN110134705A (zh) | 一种数据查询方法、缓存服务器及终端 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN117076491A (zh) | 一种数据处理方法、存储介质与设备 | |
CN112860727A (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
CN112000690B (zh) | 解析结构化操作语句的方法和装置 | |
CN110716949A (zh) | 结构化查询语句自动优化方法、装置、介质及电子设备 | |
CN116431672A (zh) | 数据库操作语句的谓词逻辑优化方法、存储介质与设备 | |
CN115328939A (zh) | 数据库处理查询语句的方法、存储介质与计算机设备 | |
CN116204550A (zh) | 数据库查询语句的优化方法、存储介质与设备 | |
CN115757479A (zh) | 数据库的查询优化方法、机器可读存储介质与计算机设备 | |
CN115391424A (zh) | 数据库查询的处理方法、存储介质与计算机设备 | |
CN115374121A (zh) | 数据库索引的生成方法、机器可读存储介质与计算机设备 | |
CN115391346A (zh) | 数据库聚合索引的生成方法、存储介质与计算机设备 | |
CN114461454A (zh) | 数据恢复方法、装置、存储介质及电子设备 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN114020789A (zh) | 账单数据查询方法、系统、设备及存储介质 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
EP2990960A1 (en) | Data retrieval via a telecommunication network | |
CN117149821B (zh) | 一种查询优化方法、存储介质与计算机设备 | |
CN117271576A (zh) | 一种查询优化方法、存储介质与计算机设备 | |
CN116414866A (zh) | 数据库操作语句的优化方法、存储介质与设备 | |
CN115563183B (zh) | 查询方法、装置及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing Applicant after: China Electronics Technology Group Jincang (Beijing) Technology Co.,Ltd. Address before: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing Applicant before: BEIJING KINGBASE INFORMATION TECHNOLOGIES Inc. Country or region before: China |