CN115309777A - 数据查询的方法及装置 - Google Patents

数据查询的方法及装置 Download PDF

Info

Publication number
CN115309777A
CN115309777A CN202211230988.1A CN202211230988A CN115309777A CN 115309777 A CN115309777 A CN 115309777A CN 202211230988 A CN202211230988 A CN 202211230988A CN 115309777 A CN115309777 A CN 115309777A
Authority
CN
China
Prior art keywords
query
data
strategy
candidate
stability
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.)
Granted
Application number
CN202211230988.1A
Other languages
English (en)
Other versions
CN115309777B (zh
Inventor
郑振国
王国平
王桃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202211230988.1A priority Critical patent/CN115309777B/zh
Publication of CN115309777A publication Critical patent/CN115309777A/zh
Application granted granted Critical
Publication of CN115309777B publication Critical patent/CN115309777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供一种数据查询的方法及装置,在接收到数据库查询请求的情况下,可以基于查询请求生成多个候选查询策略,各个候选查询策略可以通过不同的查询方案进行目标查询。为了从这些候选查询策略中选择较优策略,可以先对各个候选查询策略分别对应的各个稳定值进行检测,以确定候选查询策略在多个稳定因素上对查询性能的稳定性表现。如此,可以根据稳定值的大小,从各个候选查询策略中为数据查询请求选择目标查询策略,并通过目标查询策略进行数据查询,反馈查询结果。这种数据查询方式有利于维护数据库中的数据查询性能的稳定。

Description

数据查询的方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及数据查询的方法及装置。
背景技术
SQL是一种结构化查询语言,它通常只告诉数据库它“想要什么”,而不会告诉数据库“如何获取”相应结果。“如何获取”的过程可以通过数据库的大脑“优化器”确定的“执行计划”(本说明书可以称之为查询策略)来决定。在数据库系统中,一个查询会存在很多等价的执行计划,不同的计划执行的性能也存在很大的差异(百倍甚至千倍)。优化器的目标是从实现查询目标的多个执行计划中找到一个最优的计划,即代价最小的执行计划。执行计划的代价计算依赖于优化器中的统计信息和代价模型,然而,基于统计的代价模型在数据库系统精准度受损,这就导致优化器可能找到非最优(即非代价最小)的计划。甚至,可能会选择很差的执行计划。因此,如何调整优化器对查询策略的决策过程,使得优化器能够在精准度受损的情形下准确选择到代价更小的查询策略,是关系到数据库查询性能稳定性的技术问题。
发明内容
本说明书一个或多个实施例描述了一种数据查询的方法及装置,用以解决背景技术提到的一个或多个问题。
根据第一方面,提供一种数据查询的方法,所述方法包括:在接收到数据查询请求的情况下,为所述数据查询请求生成至少一个候选查询策略;检测各个候选查询策略分别对应的各个稳定值,其中,单个候选查询策略的稳定值由其在多个稳定因素上的稳定性标识确定;基于各个稳定值的大小,从各个候选查询策略中为所述数据查询请求选择目标查询策略;通过所述目标查询策略进行数据查询。
在一个实施例中,所述多个稳定因素包括分页查询,在所述查询请求包含分页查询的情况下,还同时满足以下条件,则在分页查询的稳定因素上具有稳定倾向:没有阻塞算子、相关过滤条件均通过索引进行过滤。
在一个实施例中,所述多个稳定因素包括嵌套循环连接,在所述查询请求包含嵌套循环连接的情况下,还同时满足以下条件的情况下,则在嵌套循环连接的稳定因素上具有稳定倾向:对于跨数据表的查询,查询项在其中一个数据表的条数被限定为1。
在一个实施例中,所述多个稳定因素包括等值连接,所述查询请求中的连接条件存在等值连接的情况下,在等值连接的稳定因素上具有稳定倾向。
在一个实施例中,单个稳定性标识通过第一预定数值描述相应稳定因素中的稳定倾向,通过零值或空值描述相应稳定因素中的不稳定倾向,所述第一预定数值为非零值。
在一个实施例中,单个候选查询策略对应的稳定值为各个稳定因素上的稳定性标识的数值加和。
在一个实施例中,所述基于各个稳定值的大小,从各个候选查询策略中为所述数据查询请求选择查询策略包括:检测是否存在大小满足第一条件的稳定值;根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略。
在一个实施例中,所述检测结果为存在大小满足第一条件的唯一稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:将该唯一稳定值对应的候选查询策略确定为目标查询策略。
在一个实施例中,所述检测结果为存在大小满足第一条件的唯一最大稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:将该唯一最大稳定值对应的候选查询策略确定为目标查询策略。
在一个实施例中,所述检测结果为存在大小满足第一条件的多个最大稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:基于对数据表的数据采样,估算该多个最大稳定值分别对应的各个候选查询策略各自的查询代价;将查询代价最小的候选查询策略确定为目标查询策略。
在一个实施例中,所述检测结果为不存在大小满足第一条件的稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:基于对数据表的数据采样,估算各个候选查询策略各自的查询代价;将查询代价最小的候选查询策略确定为针对所述数据查询请求的查询策略。
根据第二方面,提供一种数据查询的装置,所述装置包括:
生成单元,配置为在接收到数据查询请求的情况下,为所述数据查询请求生成至少一个候选查询策略;
检测单元,配置为检测各个候选查询策略分别对应的各个稳定值,其中,单个候选查询策略的稳定值由其在多个稳定因素上的稳定性标识确定;
决策单元,配置为基于各个稳定值的大小,从各个候选查询策略中为所述数据查询请求选择目标查询策略;
查询单元,配置为通过所述目标查询策略进行数据查询。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的方法和装置,在接收到数据库查询请求的情况下,可以基于查询请求生成多个候选查询策略,各个候选查询策略可以通过不同的查询方案进行目标查询。为了从这些候选查询策略中选择较优策略,可以先对各个候选查询策略分别对应的各个稳定值进行检测,以确定候选查询策略在多个稳定因素上对查询性能的稳定性表现。如此,可以根据稳定值的大小,从各个候选查询策略中为数据查询请求选择目标查询策略,并通过目标查询策略进行数据查询,反馈查询结果。这种数据查询方式可以有效避免仅基于对数据表的数据估算出现的偏差,导致的计算量剧增的极端情况,有利于维护数据库中的数据查询性能的稳定。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出根据本说明书的一个具体实施场景示意图;
图2示出根据本说明书一个实施例的数据查询的方法流程图;
图3示出根据一个实施例的用于数据查询的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的技术方案进行描述。
为了更清楚地理解本说明书的技术方案,首先结合一个具体实施场景描述本说明书中的技术方案提出的技术背景。
图1示出了本说明书的一个具体实施架构。该实施架构涉及至少一个业务服务器及数据库。业务服务器可以为各个用户在相应终端上进行的相关业务(例如搜索业务、查询业务、收付款业务、导航业务等),提供相应业务支持。业务服务器在为终端提供相应业务支持过程中,可以向数据库中写入数据、读取数据。例如,业务服务器是为终端的购物业务、借贷业务、导航业务等提供业务支持的服务器等。相应地,业务服务器可以向数据库写入或读出购物记录数据(如购物品类、金额、时间等数据),借贷记录数据(如借贷数额、借贷种类、还款时间等数据),导航记录数据(如导航时间、到达目的地用时、导航路线和实际路线等数据)。数据库可以为一种业务服务器提供数据存储服务,也可以为多种业务服务器提供数据存储服务。在为多种业务服务器提供数据存储服务的情况下,基于业务服务器间的相互授权,单个业务服务器可以从数据库的多个业务数据表中读取数据。
业务服务器从数据库读取数据通常基于相应的查询请求进行。业务服务器发送相应查询请求,而数据库通过计算平台确定相应查询策略,并从数据库表中查询相应数据。为了减小数据库压力,计算平台通常可以根据查询请求确定多个候选查询策略,并从中选择代价较小的策略作为目标策略进行数据查询。计算平台可以是连接数据库设备的计算机、设备、服务器等,也可以是嵌入或运行于数据库设备的执行器,如优化器等。
常规技术中,通常可以基于对数据表的统计信息,确定查询代价,并从各种候选查询策略中选择代价较小的策略,作为目标查询策略。其中,数据表的统计信息是通过对数据库表进行数据采样,从而估算数据库中表的数据特征,例如表的数据量、某个字段的最大、最小值、不同值的数量等等。基于这些统计信息可以利用预设的代价模型计算查询策略的代价。作为一个具体例子,代价可以通过IO+CPU+NETWORK的代价计算方法确定。其中,IO表示读写代价,CPU表示计算资源占用代价,NETWORK表示网络消耗代价,或者数据通信代价等。
计算平台确定查询策略时可能有很多不确定性因素的干扰,例如统计信息不准确、代价估算不准确、过滤条件中的常量参数变更等等,都导致最后生成的策略不够优越(代价不够小)。这些不稳定因素的存在,使得计算平台依赖代价竞争确定的查询策略不够稳定,从而付出较多的查询代价。对此,常规的数据库系统有不同的解决方案。例如完善统计信息收集,避免计算平台使用不准确的统计信息确定查询策略,但是对统计信息收集过程的优化,仍不可避免计算平台错误估算代价。再例如通过执行反馈机制,在数据库系统运行期间不断变换、演进策略来避免策略不稳定的问题。这样只有当查询策略执行完成发现其不稳定之后才能演进策略,而且需要重新生成策略。
有鉴于此,本说明书提供一种数据查询方案,目的在于改进计算平台的策略选择方式,从而在计算平台无法正确预估查询代价的情况下,尽可能以较小代价完成查询。
下面结合图2示出的一个具体实施例详细描述本说明书的技术构思。
图2示出了根据本说明书一个实施例的数据查询流程。该流程的执行主体可以是具有一定计算能力的计算机、设备、服务器。更具体地,如可以是图1中的计算平台。该流程的执行主体可以设于数据库设备,也可以是能够访问数据库的控制设备等。图2示出的数据查询流程可以用于数据库查询情况下,针对查询请求确定数据查询策略,并从数据库查询相应数据。如图2所示,该数据查询流程可以包括:步骤201,在接收到数据查询请求的情况下,为数据查询请求生成至少一个候选查询策略;步骤202,检测各个候选查询策略分别对应的各个稳定值,其中,单个候选查询策略的稳定值由其在多个稳定因素上的稳定性标识确定;步骤203, 基于各个稳定值的大小,从各个候选查询策略中为数据查询请求选择目标查询策略;步骤204,通过目标查询策略进行数据查询。
首先,通过步骤201,在接收到数据查询请求的情况下,为数据查询请求生成至少一个候选查询策略。
其中,查询请求可以来自于用户终端,也可以来自于业务服务器。例如,可以由业务服务器基于用户终端提交的表单页生成查询请求对“购买手表用户的年龄段”进行查询等等。
查询请求可以描述所需要的目标数据。因此,基于查询请求可以确定目标数据的过滤条件。查询请求可以涉及单个数据表,也可以涉及多个数据表。例如,对于查询目标“购买手表用户的年龄段”,可能涉及购物记录表(如包含用户购买商品信息等)和用户信息表等(如包含用户年龄信息等)。则一方面可以从购物记录表中查询购买过手表的用户(如通过唯一用户标识),例如,所购商品信息项为c3,用户标识信息项为c1,手表通过a标识,购物记录表为t1,则可以查询t1表中c3=a的条目中的c1值,如记为集合b,在t1表中的c1=a作为一个查询条件。另一方面可以从用户表信息中查询购买过手表的用户标识对应的年龄。假设年龄信息项为c2,则可以针对集合b中的各个元素bi,查询相应条目中的c2的取值(即年龄值)。
在查询过程中,单个查询请求可以对应有多个查询策略,作为候选查询策略。例如对于一个查询“从t1表中查询信息项c1的取值大于100万的10条信息”,可以至少有以下查询方案:方案1,查询t1表中所有信息项c1的取值大于100万的数据条目,对这些数据条目排序,之后取出其中的10条;方案2,按照索引从信息项c1的取值大于100万的数据条目取出10条;等等。
以SQL查询为例,方案1例如实现为:
Figure 995770DEST_PATH_IMAGE001
其中包括依次执行的步骤2、步骤1、步骤0。其中,截至步骤0,估计输出行数为2,查询代价为47,截至步骤1,排序估计输出行数为2,查询代价为47,截至步骤2,浏览表t1的估计输出行数为2,查询代价为47。
方案2例如实现为:
Figure 278984DEST_PATH_IMAGE002
其中包括一个步骤0,通过索引il从t1表中获取10条数据,估计输出行数为10,查询代价为92。
显然,仅根据代价选择方案1可能更优。而由于方案1要遍历所有数据条目,并进行排序,因此方案2通常优于(代价通常小于)方案1。然而方案2的行代价估算值更大。假设当前业务使用的是其他查询条件,例如将c1>100万换作c1>0,则满足条件的行数超过100万行,方案1的执行时间急剧增加。但是此时方案2的执行时间仍然是92。为了避免基于对数据表的采样估算导致的代价偏差,在估算代价之前,根据步骤202,检测各个候选查询策略分别对应的各个稳定值。
其中,单个候选查询策略的稳定值可以由其在多个稳定因素上的稳定性标识确定。稳定因素可以是预先确定的对查询策略的稳定性进行相对性评估的策略。查询策略的稳定性是某种查询策略对查询性能具有优化倾向的体现。例如,一种查询策略会通过较大的查询代价影响查询性能,如使得查询速度变慢,查询时间变长等,则其对查询性能的稳定性表现较差,而一种查询策略通常是相关情形下代价较小的策略,通常可以确保加快查询速度、提高查询效率,则其对查询性能的稳定性表现较好。也就是说,一种策略通常比其他查询策略具有更小的代价,则其可以对应有更高稳定倾向及更大的稳定值,否则,具有更低稳定倾向及更小的稳定值。
稳定因素可以是人为确定的,也可以是根据对历史查询策略的代价进行统计确定的。例如,统计历史各种查询策略的代价,对这些代价按照取平均、取最大值等方式进行统计分析,得到各种查询因素对查询性能的影响。从而根据统计结果确定对查询性能产生影响的因素,作为稳定因素。这里的查询因素可以通过查询条件等描述,例如循环嵌套查询、等值连接查询、非等值连接查询等。
在一个可选的实现方式中,稳定因素可以包括分页查询。其中,分页查询是根据需要每次返回所需要的数据而不用每次都从数据库将数据全部提取出来,以降低应用与数据库中的数据传输量的查询方式。举例而言,对于整体的8条数据,在当前次需要第1至3条的情况下,先从数据库取出第1至3条数据,下次取出第4至7条,再下次取出第8条,等等。分页查询在实践中较常用,且容易生成不稳定计划。例如前文的例子中,直接对方案1和方案2估算代价,对于计划1而言,假设在各种操作中输出行数均为2,估算代价均为47,而方案2的输出行数为10,估算代价为92,则直接基于代价优化规则,可能选择方案1。而方案2在两种参数下产生的代价比较稳定,因此对查询性能的稳定性表现都比较好。
如此,对于分页查询这个稳定因素,可以通过以下条件确定其稳定倾向:是否具有阻塞算子、相关的所有过滤条件是否通过索引进行过滤。具体而言,如果一个候选查询策略包含有分页查询,则在其不存在阻塞算子,同时所有相关过滤条件都能够使用索引进行过滤,如以上的方案2,则表明该查询策略具有对查询性能的稳定倾向。
这里,阻塞算子可以是对其他算子的执行存在依赖关系的算子。例如前文中的方案1中,步骤1中的排序依赖于步骤2中对t1表中所有c1的检索,则方案1的步骤1存在阻塞算子。而方案2中没有阻塞算子。过滤条件是对查询数据进行索引筛选的条件,如前文的例子中,过滤条件可以包括c1大于100万等。方案1的过滤条件不能通过索引筛选,只能通过扫描表t1中的所有数据确定。而方案2中的过滤条件仅包含c1大于100万可以通过索引过滤。其中,索引过滤是基于c1值大小有序排列的数据表的索引点进行过滤的一种数据查询方式。例如,数据表包含200万条数据,其中存在19个或20个索引点将200万条数据按顺序分割为20个部分(如每个部分10万条数据)。则可以经检索得到c1关于100万对应的索引点,在该索引点之后的数据中随机或按顺序获取其中的预定条数的数据即可。综上,前文中的方案2具有分页查询稳定因素上的稳定性倾向,而方案1不具备这种稳定性倾向。
在另一个可选的实现方式中,在使用连接算子的情况下,稳定因素可以包括嵌套循环连接。具体而言,在使用循环嵌套的情况下,使用嵌套循环连接的稳定因素在满足以下条件的情况下,其具有稳定倾向:对于跨数据表的查询,查询项在其中一个数据表的条数被限定为1。
其中,连接算子例如可以包括合并连接(merge join)、哈希连接(hash join)、嵌套循环连接(nested loop join)等。连接算子可以对两个表之间的数据查询进行连接。如前文的查询目标“购买手表用户的年龄段”是一个适用连接算子的具体例子。通常,各种连接算子各有特点,如数据表中的数据为有序数据的情况下,更适用合并连接,而嵌套循环连接对统计信息要求较高。
以前文的查询目标“购买手表用户的年龄段”为例,一种嵌套循环连接可以通过C语言描述相应执行逻辑为:
for (用户名1 in 购物记录表. c3=a) {
for (用户名2 in 用户信息表) {
if (用户名1 == 用户名2) {
return用户信息表.用户名2.年龄
}
}
}。
作为数据库SQL查询的示例,假设一个查询目标是从表t2(如用户信息表)中查出t1(如购物记录表)中c3信息项(如商品项)标识为1(如代表手表)的用户(如用户标识项记为c1)对应的数据条目:
Figure 22817DEST_PATH_IMAGE003
该查询使用嵌套循环连接的候选查询策略例如可以表示为:
Figure 24272DEST_PATH_IMAGE004
可知,对于循环嵌套连接,所连接的两个数据表的数据量估算存在误差的情况下,如果实际数据量远大于估算数据量,则循环嵌套的执行性能较差,即对性能产生不稳定倾向的影响。更具体而言,如果所连接的两个数据表中优先查询的数据表行数不稳定,则出现上述不稳定倾向的可能性更大。而如果两个数据表的等值条件有唯一约束,或者说候选查询策略中使用限制语句对其中一个数据表限定查询条数为1(如包含limit 1)等情形下,则输出行数是确定的,至多有一行数据输出,这样的候选查询策略往往对性能产生稳定倾向的影响。其中,等值条件是针对两个或多个数据表中的相同项的值是否相等的判断条件,如前文的用户名1 == 用户名2、
Figure 426434DEST_PATH_IMAGE005
等。等值条件具有唯一约束表示等值条件所涉及的信息项中的信息标识(如用户名)具有唯一性。例如用户名具有唯一性,则在两个或多个数据表中一个用户名对应且仅对应一个用户。等值条件具有唯一约束的情况下,对其中一个数据表限定查询条数具有限定作用,如可以限定为查询条数1。
可以理解,候选查询策略还可能存在非等值连接,如以大于、小于、不等于等为条件的连接。由于非等值连接条件的选择率计算不够准确,存在非等值连接条件的查询策略可能由于代价估计偏差,选择的连接顺序很差,最终选择不到较优的目标策略。
例如一个涉及非等值连接的SQL查询为:
select count(*) from t1,t2,t3 where t1.c1 < t2.c1 and t2.c2 = t3.c2and t1.c3 = t3.c3;
如果对非等值连接条件(如t1.c1 < t2.c1)的选择率进行错误估计,则可能生成并选择以下查询策略:
Figure 16684DEST_PATH_IMAGE006
由于t1、t2表的连接条件是非等值的,该查询策略使用嵌套循环的连接方式执行,如果t1、t2表实际数据量非常大,这个查询策略的执行性能将会急剧下降。
而该查询还可以通过另一个不包含非等值连接(即包含等值连接)的查询策略实现,例如为:
Figure 478890DEST_PATH_IMAGE007
该查询策略中采用哈希连接(hash join)方式进行连接,只包含等值连接,从而即使统计信息出现偏差,查询性能也呈现稳定性倾向。
因此,在又一个实现方式中,可以将等值连接作为一个稳定因素。在两两数据表之间的连接条件只包含等值连接的情况下,该稳定因素具有稳定倾向。其中,只包含等值连接可以理解为不包含大于、小于、不等于等中非等值连接。
在其他实现方式中,还可以存在其他稳定因素,在此不再赘述。
在本说明书中,稳定因素对查询性能是否具有稳定性倾向,可以通过稳定标识来描述。例如,单个稳定性标识为第一预定数值(通常为非零值),或者零值/空值(也可以是其他预定数值)。其中,第一预定数值可以用于描述相应稳定因素中的稳定倾向,零值或空值可以用于描述相应稳定因素中的不稳定倾向。更具体而言,满足诸如前文描述的各种稳定性倾向条件的情形下,相应策略的相应稳定性标识可以被设置为第一预定数值,否则,相应策略的相应稳定性标识可以被设置为零值或空值。通常,相应的稳定标识可以对应更高的稳定性标识值。单个候选查询策略可以按照相应类型提前被设置相应稳定性标识,也可以在生成候选查询策略之后,对相应稳定因素进行检测,从而设置相应稳定性标识。第一预定数值例如为1。
根据一个可能的设计,为了对各个候选查询策略的稳定性进行评估,可以基于其稳定性标识上的数值的加和来确定其稳定值。例如,一个候选查询策略包含分页查询,且没有阻塞算子、所有过滤条件使用索引过滤,则其在稳定因素“使用分页查询”上的稳定性标识可以设置为第一预定数值(通常为正数,如1)。于是,在基于其稳定性标识上的数值的加和来确定其稳定值的情况下,在越多稳定因素上满足稳定性倾向条件的候选查询策略,其稳定值越高。
根据另一个可能的设计,单个候选查询策略对应的稳定值还可以是在各个稳定因素上的稳定性标识本身。例如,可以将在各个稳定因素对应的稳定性标识中的较大值从低位向高位排列。更具体而言,假设第一预定数值为1,则仅在一个稳定性因素上具有稳定性倾向的候选查询策略对应的稳定值如为0001,而在两个稳定性因素上具有稳定性倾向的候选查询策略对应的稳定值如为0011,以此类推。此时,仍然满足在越多稳定因素上满足稳定性倾向条件的候选查询策略,其稳定值越高。
然后,在步骤203, 基于各个稳定值的大小,从各个候选查询策略中为数据查询请求选择目标查询策略。
在越多稳定因素上满足稳定性倾向条件的候选查询策略,其稳定值越高,因此可以按照各个候选查询策略分别对应的各个稳定值,选择更具有稳定倾向的候选查询策略作为目标查询策略。
在一个实施例中,可以检测各个候选查询策略的稳定值是否超过预定阈值,如为2,在超过预定阈值的情况下,可以优先选择相应候选查询策略作为目标查询策略。
在另一个实施例中,可以检测各个候选查询策略的稳定值非零值位数,在非零值位数超过预定阈值的情况下,可以优先选择相应候选查询策略作为目标查询策略。
在又一个实施例中,还可以将各个稳定值进行大小排序,优先选择稳定值最大的候选查询策略作为目标查询策略。
在其他实施例中,还可以依据其他稳定值检测原则选择目标查询策略。将以上选择原则称为第一条件,则选择目标查询策略的过程为:检测是否存在大小满足第一条件的稳定值,根据检测结果从各个候选查询策略中为数据查询请求选择查询策略满足第一条件的候选查询策略。
可以理解的是,在一些情况下,可能存在0个、1个或多个候选查询方案满足相应的选择条件,例如,有两个候选查询策略均满足第一条件。如此,根据不同的情形,还可以进一步对候选查询策略进行选择。
具体而言,在存在满足第一条件的候选查询方案的情况下,可以根据满足第一条件的候选查询方案是否唯一,选择目标查询方案。在满足第一条件的候选查询方案唯一的情况下,可以选择相应的唯一候选查询方案作为目标查询方案。在满足第一条件的候选查询方案唯一的情况下,可以进一步检测是否存在唯一的最大稳定值(或第一预定数值最多位数),若存在,可以将相应候选查询方案作为目标查询方案。否则,存在多个最大稳定值(或第一预定数值最多位数)等情况下,此时,可以随机选择其中的一个最大稳定值(或第一预定数值最多位数)对应的候选查询方案作为目标查询方案,也可以基于对数据表的数据采样,估算该多个最大稳定值(或第一预定数值最多位数)分别对应的各个候选查询策略各自的查询代价,将查询代价最小的候选查询策略确定为目标查询策略。
另一方面,在不存在满足第一条件的候选查询策略的情况下,可以基于对数据表的数据采样,估算各个候选查询策略各自的查询代价,将查询代价最小的候选查询策略确定为目标查询策略。
进一步地,经由步骤204,通过目标查询策略进行数据查询。查询结果可以反馈至查询发起者,如业务服务器等。
回顾以上过程,在为业务服务器提供数据支持过程中,基于相应的查询请求,生成多个候选查询策略之后,可以对候选查询策略针对数据库查询性能的稳定性倾向进行检测。其中,针对数据库查询性能的稳定性倾向通过在多个稳定因素上的稳定性标识确定。如此,稳定性倾向较强的候选查询策略被优先选择,从而避免基于数据统计对查询代价估算不准确的情况下,计算量剧增导致查询性能较差的问题。
根据另一方面的实施例,还提供一种用于数据查询的装置。图3示出了根据一个实施例的用于数据查询的装置300。如图3所示,装置300可以包括:
生成单元301,配置为在接收到数据查询请求的情况下,为数据查询请求生成至少一个候选查询策略;
检测单元302,配置为检测各个候选查询策略分别对应的各个稳定值,其中,单个候选查询策略的稳定值由其在多个稳定因素上的稳定性标识确定;
决策单元303,配置为基于各个稳定值的大小,从各个候选查询策略中为数据查询请求选择目标查询策略;
查询单元304,配置为通过目标查询策略进行数据查询。
值得说明的是,图3所示的装置300与图2描述的方法相对应,图2的方法实施例中的相应描述同样适用于装置300,在此不再赘述。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2等所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2等所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所描述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所描述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。

Claims (14)

1.一种数据查询的方法,所述方法包括:
在接收到数据查询请求的情况下,为所述数据查询请求生成至少一个候选查询策略;
检测各个候选查询策略分别对应的各个稳定值,其中,单个候选查询策略的稳定值由其在多个稳定因素上的稳定性标识确定;
基于各个稳定值的大小,从各个候选查询策略中为所述数据查询请求选择目标查询策略;
通过所述目标查询策略进行数据查询。
2.如权利要求1所述的方法,其中,所述多个稳定因素包括分页查询,在所述查询请求包含分页查询的情况下,还同时满足以下条件,则在分页查询的稳定因素上具有稳定倾向:没有阻塞算子、相关过滤条件均通过索引进行过滤。
3.如权利要求1所述的方法,其中,所述多个稳定因素包括嵌套循环连接,在所述查询请求包含嵌套循环连接的情况下,还同时满足以下条件的情况下,则在嵌套循环连接的稳定因素上具有稳定倾向:
对于跨数据表的查询,查询项在其中一个数据表的条数被限定为1。
4.如权利要求1所述的方法,其中,所述多个稳定因素包括等值连接,所述查询请求中的连接条件存在等值连接的情况下,在等值连接的稳定因素上具有稳定倾向。
5.如权利要求1所述的方法,其中,单个稳定性标识通过第一预定数值描述相应稳定因素中的稳定倾向,通过零值或空值描述相应稳定因素中的不稳定倾向,所述第一预定数值为非零值。
6.如权利要求1所述的方法,其中,单个候选查询策略对应的稳定值为各个稳定因素上的稳定性标识的数值加和。
7.如权利要求1所述的方法,其中,所述基于各个稳定值的大小,从各个候选查询策略中为所述数据查询请求选择查询策略包括:
检测是否存在大小满足第一条件的稳定值;
根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略。
8.如权利要求7所述的方法,其中,所述检测结果为存在大小满足第一条件的唯一稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:
将该唯一稳定值对应的候选查询策略确定为目标查询策略。
9.如权利要求7所述的方法,其中,所述检测结果为存在大小满足第一条件的唯一最大稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:
将该唯一最大稳定值对应的候选查询策略确定为目标查询策略。
10.如权利要求9所述的方法,其中,所述检测结果为存在大小满足第一条件的多个最大稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:
基于对数据表的数据采样,估算该多个最大稳定值分别对应的各个候选查询策略各自的查询代价;
将查询代价最小的候选查询策略确定为目标查询策略。
11.如权利要求7所述的方法,其中,所述检测结果为不存在大小满足第一条件的稳定值,所述根据检测结果从各个候选查询策略中为所述数据查询请求选择查询策略包括:
基于对数据表的数据采样,估算各个候选查询策略各自的查询代价;
将查询代价最小的候选查询策略确定为针对所述数据查询请求的查询策略。
12.一种数据查询的装置,所述装置包括:
生成单元,配置为在接收到数据查询请求的情况下,为所述数据查询请求生成至少一个候选查询策略;
检测单元,配置为检测各个候选查询策略分别对应的各个稳定值,其中,单个候选查询策略的稳定值由其在多个稳定因素上的稳定性标识确定;
决策单元,配置为基于各个稳定值的大小,从各个候选查询策略中为所述数据查询请求选择目标查询策略;
查询单元,配置为通过所述目标查询策略进行数据查询。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。
CN202211230988.1A 2022-10-10 2022-10-10 数据查询的方法及装置 Active CN115309777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211230988.1A CN115309777B (zh) 2022-10-10 2022-10-10 数据查询的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211230988.1A CN115309777B (zh) 2022-10-10 2022-10-10 数据查询的方法及装置

Publications (2)

Publication Number Publication Date
CN115309777A true CN115309777A (zh) 2022-11-08
CN115309777B CN115309777B (zh) 2023-01-24

Family

ID=83866813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211230988.1A Active CN115309777B (zh) 2022-10-10 2022-10-10 数据查询的方法及装置

Country Status (1)

Country Link
CN (1) CN115309777B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827930A (zh) * 2023-02-15 2023-03-21 杭州悦数科技有限公司 一种图数据库的数据查询优化方法、系统和装置
CN116881230A (zh) * 2023-09-08 2023-10-13 北京谷器数据科技有限公司 一种基于云平台的关系数据库自动优化方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110222072A (zh) * 2019-06-06 2019-09-10 江苏满运软件科技有限公司 数据查询平台、方法、设备和存储介质
CN113656437A (zh) * 2021-07-02 2021-11-16 阿里巴巴新加坡控股有限公司 一种最优查询计划的确定方法及装置
US20220058195A1 (en) * 2020-08-20 2022-02-24 International Business Machines Corporation Index selection for database query
US11314740B1 (en) * 2021-01-29 2022-04-26 Snowflake Inc. Responsive plan stability
CN114443680A (zh) * 2021-12-31 2022-05-06 阿里云计算有限公司 数据库管理系统、相关装置、方法和介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110222072A (zh) * 2019-06-06 2019-09-10 江苏满运软件科技有限公司 数据查询平台、方法、设备和存储介质
US20220058195A1 (en) * 2020-08-20 2022-02-24 International Business Machines Corporation Index selection for database query
US11314740B1 (en) * 2021-01-29 2022-04-26 Snowflake Inc. Responsive plan stability
CN113656437A (zh) * 2021-07-02 2021-11-16 阿里巴巴新加坡控股有限公司 一种最优查询计划的确定方法及装置
CN114443680A (zh) * 2021-12-31 2022-05-06 阿里云计算有限公司 数据库管理系统、相关装置、方法和介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827930A (zh) * 2023-02-15 2023-03-21 杭州悦数科技有限公司 一种图数据库的数据查询优化方法、系统和装置
CN116881230A (zh) * 2023-09-08 2023-10-13 北京谷器数据科技有限公司 一种基于云平台的关系数据库自动优化方法

Also Published As

Publication number Publication date
CN115309777B (zh) 2023-01-24

Similar Documents

Publication Publication Date Title
CN115309777B (zh) 数据查询的方法及装置
US8903868B2 (en) Processing of categorized product information
US9524317B2 (en) Optimization of aggregate queries in database management systems using an early out join when processing min and max functions
CN103748579B (zh) 在映射化简框架中处理数据
US7213012B2 (en) Optimizer dynamic sampling
US5835899A (en) System and method for deriving financial responsibility identification
US7233939B1 (en) Systems and methods of optimizing database queries for efficient delivery of query data subsets
US9390142B2 (en) Guided predictive analysis with the use of templates
US9218391B2 (en) Scalable computation of data
US20050228779A1 (en) Query selectivity estimation with confidence interval
US20070198439A1 (en) Robust cardinality and cost estimation for skyline operator
EP3929763B1 (en) Database access methods and apparatuses
CN113918622B (zh) 基于区块链的信息溯源方法及系统
CN107291745B (zh) 一种数据指标的管理方法及装置
US11036734B2 (en) Fusing global reporting aggregate computation with the underlying operation in the query tree for efficient evaluation
US20030167275A1 (en) Computation of frequent data values
CN112348420A (zh) 储位信息获取方法及系统、存储介质和电子设备
CN111984688B (zh) 业务知识关联关系的确定方法及装置
US20110093867A1 (en) System and Method for Optimizing Event Predicate Processing
US7647333B2 (en) Cube-based percentile calculation
CN113780913A (zh) 一种安全库存信息的生成方法和装置
US20230153286A1 (en) Method and system for hybrid query based on cloud analysis scene, and storage medium
Liu et al. Online optimization and fair costing for dynamic data sharing in a cloud data market
US7711730B2 (en) Method of returning data during insert statement processing
CN114328614B (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
GR01 Patent grant
GR01 Patent grant