CN114238389A - 数据库查询优化方法、装置、电子设备、介质和程序产品 - Google Patents
数据库查询优化方法、装置、电子设备、介质和程序产品 Download PDFInfo
- Publication number
- CN114238389A CN114238389A CN202111508503.6A CN202111508503A CN114238389A CN 114238389 A CN114238389 A CN 114238389A CN 202111508503 A CN202111508503 A CN 202111508503A CN 114238389 A CN114238389 A CN 114238389A
- Authority
- CN
- China
- Prior art keywords
- statistical information
- execution plan
- database query
- target
- database
- 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
Images
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
-
- 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
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及数据库技术领域,提供了一种数据库查询优化方法、装置、电子设备、介质和程序产品。所述方法包括:通过基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息,其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树;基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息;基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果,其中,目标执行计划为所述数据库查询语句对应的目标执行计划树。采用该方式能够减少数据库查询操作的查询时间,提高查询效率。
Description
技术领域
本公开涉及数据库技术领域,特别是涉及一种数据库查询优化方法、装置、电子设备、介质和程序产品。
背景技术
目前,数据库系统被广泛的应用于计算机应用技术中,随着数据库中存储的数据越来越多,在海量的数据中,用户需要使用最短的时间获取数据已成为数据库查询中急需解决的问题。
现有技术中,通过解析器将数据库查询语句进行解析处理,以得到数据库查询语句对应的查询树,优化器根据查询树计算执行代价,选取最优的执行代价以此确定执行计划,其中,优化器通过计算查询树对应的基数从而确定执行计划,最后,执行器运行执行计划以此获取数据库查询语句对应的查询结果。
但是,采用现有技术,存在数据库查询语句的查询时间过长,查询效率较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供了一种数据库查询优化方法、装置、电子设备、介质和程序产品。
本公开实施例提供了一种数据库查询优化方法,所述方法包括:
基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据所述第一执行计划获取第二统计信息,其中,所述第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,所述第一执行计划是所述数据库查询语句对应第一执行计划树;
基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息;
基于所述目标统计信息,确定所述数据库查询语句对应的目标执行计划,并根据所述目标执行计划获取查询结果,其中,所述目标执行计划为所述数据库查询语句对应的目标执行计划树。
在一个实施例中,所述基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据所述第一执行计划获取第二统计信息,包括:
对所述数据库查询语句进行解析处理,得到解析结果,其中,所述解析结果至少包括所述数据库查询语句对应的数据表、数据行以及数据列;
基于所述解析结果,获取所述数据库查询语句对应的第一基数的第一统计信息,所述基数是列式存储中所涉及的至少一行的数据单位;
基于所述第一基数的第一统计信息,确定所述数据库查询语句对应的所述第一执行计划,并根据所述第一执行计划获取第二统计信息。
在一个实施例中,所述基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息,包括:
基于至少两个第二基数分别对应的所述第二统计信息,针对每个所述第二基数以及所述第二基数对应的第一基数进行差值计算,以得到第一差值;
当确定所述第一差值大于预设差值时,基于所述第二基数对应的第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息。
在一个实施例中,所述基于所述第二基数对应的第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息,包括:
针对每个所述第二基数对应的第二统计信息,对每个所述第二统计信息对应的每个所述第一统计信息进行调整,以得到目标统计信息。
在一个实施例中,所述基于所述第二基数对应的第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息,包括:
基于至少两个所述第二基数的相关性,将至少两个所述第二基数对应的第二统计信息进行合并,以得到第三统计信息;
基于所述第三统计信息,对所述第一统计信息进行调整,以得到目标统计信息。
在一个实施例中,所述基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息之后,还包括:
将所述数据库中的所述第一统计信息更新为所述目标统计信息。
本公开实施例提供了一种数据库查询优化装置,包括:
第二统计信息获取模块,用于基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据所述第一执行计划获取第二统计信息,其中,所述第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,所述第一执行计划是所述数据库查询语句对应第一执行计划树;
目标统计信息得到模块,用于目标统计信息基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息;
查询结果获取模块,用于基于所述目标统计信息,确定所述数据库查询语句对应的目标执行计划,并根据所述目标执行计划获取查询结果,其中,所述目标执行计划为所述数据库查询语句对应的目标执行计划树。
本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本公开任意实施例所提供的一种数据库查询优化方法的步骤。
本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本公开任意实施例所提供的一种数据库查询优化方法的步骤。
本公开实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行时实现本公开任意实施例所提供的一种数据库查询优化方法的步骤。
本公开实施例所提供的数据库查询优化方法、装置、电子设备、介质和程序产品,采用该方式通过基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息,其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树;基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息;基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果,其中,目标执行计划为所述数据库查询语句对应的目标执行计划树,这样,利用基于第一统计信息生成的第一执行计划得到的第二统计信息,实时的对数据库中的统计信息进行调整,以此使得数据库中的统计信息越来越准确,从而避免在进行数据库查询语句操作时,由于统计信息不准确,导致获取的基数也不准确的问题,以此减少数据库查询操作的查询时间,提高查询效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种数据库查询优化方法的流程示意图;
图2为本公开实施例提供的另一种数据库查询优化方法的流程示意图;
图3为本公开实施例提供的再一种数据库查询优化方法的流程示意图;
图4为本公开实施例提供的又一种数据库查询优化方法的流程示意图;
图5为本公开实施例提供的又一种数据库查询优化方法的流程示意图;
图6为本公开实施例提供的一种数据库查询优化装置的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
目前,数据库系统被广泛的应用于计算机应用技术中,随着数据库中存储的数据越来越多,在海量的数据中,用户需要使用最短的时间获取数据已成为数据库查询中急需解决的问题。
现有技术中,通过解析器将数据库查询语句进行解析处理,以得到数据库查询语句对应的查询树,优化器根据查询树计算执行代价,选取最优的执行代价以此确定执行计划,其中,优化器通过计算查询树对应的基数从而确定执行计划,最后,执行器运行执行计划以此获取数据库查询语句对应的查询结果。但是,采用现有技术,从而导致数据库查询语句的查询时间过长,查询效率较低。
因此,本公开提供一种数据库查询优化方法、装置、电子设备、介质和程序产品,通过基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息,其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树;基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息;基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果,其中,目标执行计划为所述数据库查询语句对应的目标执行计划树,这样,利用基于第一统计信息生成的第一执行计划得到的第二统计信息,实时的对数据库中的统计信息进行调整,以此使得数据库中的统计信息越来越准确,从而避免在进行数据库查询语句操作时,由于统计信息不准确,导致获取的基数也不准确的问题,以此减少数据库查询操作的查询时间,提高查询效率。
本公开提供的数据库查询优化方法可以应用在数据库查询优化装置,该装置可以为各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等电子设备,可选的,该装置还可以为这些电子设备中可以实现数据库查询优化方法的功能模块或者功能实体。
在一个实施例中,如图1所示,图1为本公开实施例提供的一种数据库查询优化方法的流程示意图,具体包括以下步骤:
S10:基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息。
其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树。第一统计信息是指数据库查询语句所要查询的数据库中与数据表、数据表中的数据行以及数据列等相关的可以统计的信息,示例性的,针对某一列数据,在数据表中所涉及的行数,或者可以是,某一行中某一个数值的分布概率,数据表中包含的某一个数值的行数、某些数值的分布图等,但不限于此,本公开不具体限制,本领域技术人员可根据实际情况具体限制。
需要说明的是,针对数据库中不同的存储格式,所对应的统计信息也是不同的。示例性的,当数据库采用行式存储时,则行是数据库中的最小数据单位,例如某行最大值是10、某张表包含100行等,当数据库采用列式存储时,则列是数据库中的最小数据单位,例如某列最大值是10、某张表包含100列等,但不限于此,本公开不具体限制,本领域技术人员可根据实际情况具体限制。
在上述实施例的基础上,在一些可选的实施例中,当数据库采用列式存储时,基于列式存储,在数据库查询语句进行查询时,所获取的统计信息为行组的统计信息,行组是指在列式存储的基础上,所设置的一种新的数据单位,即,当数据被逐列存储时,在一个列中,数据被分割为行组,行组的统计信息主要用于描述行组存储数据的特征,对于数据表中的列1、列2、列3,能够获取到与不同列分别对应的行组信息,但不限于此,本公开不具体限制,本领域技术人员可根据实际情况具体限制。
数据库是指存储在服务器上,具有一定数据结构的数据存储仓库,例如可以是层次式数据库、关系式数据库,按照存储格式可以是行式存储,也可以是列式存储,但不限于此,本公开不具体限制。
具体的,数据库引擎中的优化器基于部署在数据库中的第一统计信息,优化器根据第一统计信息,利用优化器中的计算公式计算执行代价,选取当前最优的执行代价确定第一执行计划,数据库引擎中的执行器运行第一执行计划,得到运行结果,根据运行结果获取第二统计信息。
上述数据库引擎是用于存储、处理和保护数据的核心服务,利用数据库引擎可以控制访问权限、以及快速处理事务,从而满足处理大量数据的应用程序的要求,具体包括创建用于存储数据的表、以及用于查看、管理和保护数据安全的数据库对象。数据库引擎中包括解析器、优化器与执行器,解析器、优化器与执行器可以是软件的程序模块,也可以是硬件的,其中,解析器用来实现对数据库查询语句进行解析处理得到对应的查询树,优化器根据查询树计算执行代价,以确定最优的执行代价对应的执行计划,执行器运行执行计划生成执行结果,以得到查询结果。
在上述实施例的基础上,在本公开的一些实施例中,如图2所示,一种可能实现的方式为:
S101:对数据库查询语句进行解析处理,得到解析结果。
其中,解析结果至少包括所述数据库查询语句对应的数据表、数据行以及数据列。
具体的,数据库引擎中的解析器对用户输入的数据库查询语句进行语法解析,以得到数据库查询语句得到对应的数据表、数据行以及数据列等解析结果。
示例性的,上述数据库查询语句如SQL语句:“selectid from Awhere id>10;”对该数据库查询语句进行解析处理后,能够得到该数据库查询语句相对应的数据表A、数据列id等信息,但不限于此,本公开不具体限制。
S102:基于解析结果,获取数据库查询语句对应的第一基数的第一统计信息。
其中,基数是列式存储中所涉及的至少一行的数据单位;示例性的,针对数据库查询语句“select id from A where id<10;”,能够根据解析结果,获取到在数据表A中,当id<10时,返回的第一基数为5的统计信息,即对于数据行为id,且小于10的数据值共占五行,但不限于此,本公开不具体限制。
S103:基于第一基数的第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息。
具体的,根据解析结果中包括的数据表、数据行、或者是数据列,获取与数据库查询语句相关联的第一基数的第一统计信息,优化器根据数据库查询语句相关联的第一基数的第一统计信息,计算执行代价,选取最优的执行代价对应的执行计划,作为数据库查询语句对应的第一执行计划,执行器运行该第一执行计划,得到运行结果,根据运行结果获取第二统计信息。
S12:基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
具体的,执行器运行第一执行计划后得到运行结果,并对运行结国进行分析获取第二统计信息,根据第二统计信息与第一统计信息,在确定第二统计信息与第一统计信息存在不同时,对第一统计信息进行调整,以此得到目标统计信息。
需要说明的是,在对第一统计信息进行调整之前,可以根据第一统计信息的存储类型,确定基于第二统计信息对第一统计信息进行调整的调整方式。示例性的,当第一统计信息的存储类型为最频值(Most Common Value,MCV)格式。MCV格式是指统计在数据库中统计某一具体数值出现次数的频率,示例性的,对于数据表A,其对应的第一统计信息为(数值,频率)=[(1,99),(2,17),(4,14)],即数值为1的数有99个,数值为2的数有17个,数值为4的数有88个,当查询条件为data=10时,根据运行结果获取第二统计信息为data=10的数有9个,则根据第二统计信息获取目标统计信息为(数值,频率)=[(1,99),(2,17),(4,14),(10,9)],存储类型还可以是按照直方图格式进行存储,即基于第一统计信息绘制相对应的直方图,根据第二统计信息调整第一统计信息对应的直方图,但不限于此,本公开不具体限制,本领域技术人员可根据实际情况具体设置。
S14:基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果。
其中,目标执行计划为数据库查询语句对应的目标执行计划树。
具体的,优化器基于目标统计信息,计算数据库查询语句对应的多个执行代价,选取最优的执行代价作为目标执行计划,执行器运行目标执行计划,以得到查询结果。
这样,本实施例通过基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息,其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树;基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息;基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果,其中,目标执行计划为所述数据库查询语句对应的目标执行计划树,这样,利用基于第一统计信息生成的第一执行计划得到第二统计信息,实时的对数据库中的统计信息进行调整,以此使得数据库中的统计信息越来越准确,从而避免在进行数据库查询语句操作时,由于统计信息不准确,导致获取的基数也不准确的问题,以此减少数据库查询操作的查询时间,提高查询效率。
图3为本公开实施例提供的再一种数据库查询优化方法的流程示意图,图3是在图2所示实施例的基础上,如图3所示,基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息,包括:
S121:基于至少两个第二基数分别对应的第二统计信息,针对每个第二基数以及第二基数对应的第一基数进行差值计算,以得到第一差值。
其中,第二统计信息中包括多个数据库查询语句对应的多个第二基数,针对不同的数据库查询语句,优化器都会生成相对应的执行计划,执行器执行多个执行计划,以得到多个运行结果,根据不同的运行结果,对应不同的第二基数,基于该多个第二基数分别得到对应的第二统计信息。
S122:当确定第一差值大于预设差值时,基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
其中,预设差值是指用来确定是否对第一统计信息进行调整的数值大小,示例性的,该预设差值例如可以是5,但不限于此,本公开不具体限制,本领域技术人员可根据实际情况具体设置。
具体的,在获取多个第二基数对应的第二统计信息后,针对每个第二基数,计算第二基数与第二基数相对应的第一基数的差值,与预设的差值进行对比,当第一差值大于预设差值时,基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
示例性的,上述数据库查询语句为“select id from A where id<100;”根据解析器对该数据库查询语句进行解析后,根据解析结果获取该数据库查询语句对应的第一基数为10,优化器基于该第一基数为10行对应的统计信息生成第一执行计划,执行器运行第一执行计划以得到运行结果,根据运行结果得知实际的数据表A中当id<100时,返回的第二基数为99,计算第二基数99与第一基数10的第一差值为89,大于预设阈值5,此时基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
这样,本实施通过设置预设阈值来确定是否根据第二统计信息对第一统计信息进行调整,避免了存在较小误差时,仍需对第一统计信息进行调整的问题,从而导致对资源的浪费。
图4为本公开实施例提供的再一种数据库查询优化方法的流程示意图,图4是在图3所示实施例的基础上,进一步地,基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息,一种可能的实现方式的描述,如图4所示:
S122a:针对每个第二基数对应的第二统计信息,对每个第二统计信息对应的每个第一统计信息进行调整,以得到目标统计信息。
具体的,对于每个第二基数对应的第二统计信息,在确定第二基数与第二基数对应的第一基数的差值大于预设差值时,利用每一个第二基数对应的第二统计信息对与其对应的每个第一统计信息进行调整,以得到目标统计信息。
示例性的,对于数据库查询语句“select id from A where id<100;”根据解析器对该数据库查询语句进行解析后,根据解析结果获取该数据库查询语句对应的第一基数为10,优化器基于该第一基数对应的统计信息生成第一执行计划,执行器运行第一执行计划以得到运行结果,根据运行结果得知实际的数据表A中id<100为99个,即第二基数为99,第二基数与第一基数的第一差值为89,大于预设阈值5,此时基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
在上述实施例的基础上,在本公开的一些实施例中,基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息,如图5所示,另一种可能的实现方式为:
S122b1:基于至少两个第二基数的相关性,将至少两个第二基数对应的第二统计信息进行合并,以得到第三统计信息。
其中,相关性可以根据确定是否具有同一数据表、同一数据行来确定,但不限于此,本公开不具体限制。
S122b2:基于第三统计信息,对第一统计信息进行调整,以得到目标统计信息。
具体的,获取多个第二基数的相关性,可以通过不同数据库查询语句进行解析后,确定该多个数据库查询语句具有同一数据表、以及同一数据行,不同的查询条件,确定该多个数据库查询语句具有相关性,以此确定多个第二基数具有相关性,将具有相关性的第二基数对应的第二统计信息进行合并,以得到第三统计信息后,基于第三统计信息,对第一统计信息进行调整,以得到目标统计信息。
示例性的,对于数据库查询语句1:“select id from A where id<100;”,数据库查询语句2:“select id from A where id<120;”,数据库查询语句3:“select id from Awhere id<140;”,则经过解析器与优化器处理后,得到数据库查询语句1对应的数据表A,数据行id,查询条件1:id<100,第二基数1:99,得到数据库查询语句2对应的数据表A,数据行id,查询条件2:id<120,第二基数2:110,得到数据库查询语句3对应的数据表A,数据行id,查询条件3:id<140,第二基数3:130,将第二基数1、第二基数2、第二基数3分别对应的第二统计信息进行合并,得到第三统计信息为:数据表A,数据行id,查询条件1:id<100,第二基数1:99,查询条件2:id<120,第二基数2:110,查询条件3:id<140,第二基数3:130,根据第三统计信息对第一统计信息进行调整,得到目标统计信息。但不限于此,本公开不具体限制。
这样,本实施例通过将具有相关性的第二基数对应的第二统计信息进行合并后,再对第一统计信息进行调整,以此提高对统计信息进行调整的效率,且减少了存储统计信息的内存空间。
在上述实施例的基础上,在本公开的一些实施例中,基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息之后,进一步的,将数据库中的第一统计信息更新为目标统计信息。
这样,本实施例通过第二统计信息对第一统计信息进行调整后,得到目标统计信息之后,更新数据库中存储的第一统计信息为目标统计信息,从而使得用户在下次进行数据库查询请求时,能够使得优化器基于较准确的统计信息生成运行时间最短的执行计划,从而提高查询效率,且提高了系统运行性能。
应该理解的是,虽然图1-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种数据库查询优化装置,包括:第二统计信息获取模块10、目标统计信息得到模块12以及查询结果获取模块14。
其中,第二统计信息获取模块10,用于基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息,其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树。
目标统计信息得到模块12,用于目标统计信息基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
查询结果获取模块14,用于基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果,其中,目标执行计划为数据库查询语句对应的目标执行计划树。
在本发明实施例一实施方式中,第二统计信息获取模块10,具体用于对数据库查询语句进行解析处理,得到解析结果,其中,解析结果至少包括数据库查询语句对应的数据表、数据行以及数据列;基于解析结果,获取数据库查询语句对应的第一基数的第一统计信息,基数是列式存储中所涉及的至少一行的数据单位;基于第一基数的第一统计信息,确定数据库查询语句对应的所述第一执行计划,并根据第一执行计划获取第二统计信息。
在本发明实施例一实施方式中,目标统计信息得到模块12,具体用于基于至少两个第二基数分别对应的第二统计信息,针对每个第二基数以及第二基数对应的第一基数进行差值计算,以得到第一差值;当确定第一差值大于预设差值时,基于第二基数对应的第二统计信息,对第一统计信息进行调整,以得到目标统计信息。
在本发明实施例一实施方式中,目标统计信息得到模块12,具体还用于针对每个第二基数对应的第二统计信息,对每个第二统计信息对应的每个第一统计信息进行调整,以得到目标统计信息。
在本发明实施例一实施方式中,目标统计信息得到模块12,具体还用于基于至少两个第二基数的相关性,将至少两个第二基数对应的第二统计信息进行合并,以得到第三统计信息;基于第三统计信息,对所述第一统计信息进行调整,以得到目标统计信息。
在本发明实施例一实施方式中,所述装置还包括:更新模块,用于将所述数据库中的所述第一统计信息更新为所述目标统计信息。
在上述实施例中,第二统计信息获取模块10,用于基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据第一执行计划获取第二统计信息,其中,第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,第一执行计划是所述数据库查询语句对应第一执行计划树。目标统计信息得到模块12,用于目标统计信息基于第二统计信息,对第一统计信息进行调整,以得到目标统计信息。查询结果获取模块14,用于基于目标统计信息,确定数据库查询语句对应的目标执行计划,并根据目标执行计划获取查询结果,其中,目标执行计划为数据库查询语句对应的目标执行计划树。这样,利用基于第一统计信息生成的第一执行计划得到的第二统计信息,实时的对数据库中的统计信息进行调整,以此使得数据库中的统计信息越来越准确,从而避免在进行数据库查询语句操作时,由于统计信息不准确,导致获取的基数也不准确的问题,以此减少数据库查询操作的查询时间,提高查询效率。
关于数据库查询优化装置的具体限定可以参见上文中对于数据库查询优化方法的限定,在此不再赘述。上述数据库查询优化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本公开实施例提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时可以实现本公开实施例提供的数据库查询优化方法,例如,处理器执行计算机程序时可以实现图1到图5任一所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现本公开实施例提供的数据库查询优化方法,例如,计算机程序被处理器执行时实现图1到图5任一所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本公开提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行时可以实现本公开实施例提供的据库查询优化方法,例如,计算机执行时实现图1到图5任一所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,比如静态随机存取存储器(Static Random Access Memory,SRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本公开的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开构思的前提下,还可以做出若干变形和改进,这些都属于本公开的保护范围。因此,本公开专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据库查询优化方法,其特征在于,包括:
基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据所述第一执行计划获取第二统计信息,其中,所述第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,所述第一执行计划是所述数据库查询语句对应第一执行计划树;
基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息;
基于所述目标统计信息,确定所述数据库查询语句对应的目标执行计划,并根据所述目标执行计划获取查询结果,其中,所述目标执行计划为所述数据库查询语句对应的目标执行计划树。
2.根据权利要求1所述的方法,其特征在于,所述基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据所述第一执行计划获取第二统计信息,包括:
对所述数据库查询语句进行解析处理,得到解析结果,其中,所述解析结果至少包括所述数据库查询语句对应的数据表、数据行以及数据列;
基于所述解析结果,获取所述数据库查询语句对应的第一基数的第一统计信息,所述基数是列式存储中所涉及的至少一行的数据单位;
基于所述第一基数的第一统计信息,确定所述数据库查询语句对应的所述第一执行计划,并根据所述第一执行计划获取第二统计信息。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息,包括:
基于至少两个第二基数分别对应的所述第二统计信息,针对每个所述第二基数以及所述第二基数对应的第一基数进行差值计算,以得到第一差值;
当确定所述第一差值大于预设差值时,基于所述第二基数对应的第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息。
4.根据权利要求3所述的方法,其特征在于,所述基于所述第二基数对应的第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息,包括:
针对每个所述第二基数对应的第二统计信息,对每个所述第二统计信息对应的每个所述第一统计信息进行调整,以得到目标统计信息。
5.根据权利要求3所述的方法,其特征在于,所述基于所述第二基数对应的第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息,包括:
基于至少两个所述第二基数的相关性,将至少两个所述第二基数对应的第二统计信息进行合并,以得到第三统计信息;
基于所述第三统计信息,对所述第一统计信息进行调整,以得到目标统计信息。
6.根据权利要求4-5任一项所述的方法,其特征在于,所述基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息之后,还包括:
将所述数据库中的所述第一统计信息更新为所述目标统计信息。
7.一种数据库查询优化装置,其特征在于,包括:
第二统计信息获取模块,用于基于第一统计信息,确定数据库查询语句对应的第一执行计划,并根据所述第一执行计划获取第二统计信息,其中,所述第一统计信息是根据数据库中至少包括的数据表、数据行以及数据列确定的,所述第一执行计划是所述数据库查询语句对应第一执行计划树;
目标统计信息得到模块,用于目标统计信息基于所述第二统计信息,对所述第一统计信息进行调整,以得到目标统计信息;
查询结果获取模块,用于基于所述目标统计信息,确定所述数据库查询语句对应的目标执行计划,并根据所述目标执行计划获取查询结果,其中,所述目标执行计划为所述数据库查询语句对应的目标执行计划树。
8.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述数据库查询优化方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述数据库查询优化方法的步骤。
10.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1至6中任一项所述数据库查询优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111508503.6A CN114238389A (zh) | 2021-12-10 | 2021-12-10 | 数据库查询优化方法、装置、电子设备、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111508503.6A CN114238389A (zh) | 2021-12-10 | 2021-12-10 | 数据库查询优化方法、装置、电子设备、介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238389A true CN114238389A (zh) | 2022-03-25 |
Family
ID=80754647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111508503.6A Pending CN114238389A (zh) | 2021-12-10 | 2021-12-10 | 数据库查询优化方法、装置、电子设备、介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238389A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203248A (zh) * | 2022-09-14 | 2022-10-18 | 云和恩墨(北京)信息技术有限公司 | 数据库表空间的快速查询方法及装置 |
CN115455088A (zh) * | 2022-10-24 | 2022-12-09 | 建信金融科技有限责任公司 | 数据统计方法、装置、设备及存储介质 |
-
2021
- 2021-12-10 CN CN202111508503.6A patent/CN114238389A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203248A (zh) * | 2022-09-14 | 2022-10-18 | 云和恩墨(北京)信息技术有限公司 | 数据库表空间的快速查询方法及装置 |
CN115455088A (zh) * | 2022-10-24 | 2022-12-09 | 建信金融科技有限责任公司 | 数据统计方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6801903B2 (en) | Collecting statistics in a database system | |
EP3117347B1 (en) | Systems and methods for rapid data analysis | |
US10157204B2 (en) | Generating statistical views in a database system | |
EP3070620A1 (en) | Lightweight table comparison | |
US10678794B2 (en) | Skew detection and handling in a parallel processing relational database system | |
US7778996B2 (en) | Sampling statistics in a database system | |
US20090018992A1 (en) | Management of interesting database statistics | |
US7478083B2 (en) | Method and system for estimating cardinality in a database system | |
CN114238389A (zh) | 数据库查询优化方法、装置、电子设备、介质和程序产品 | |
US9110949B2 (en) | Generating estimates for query optimization | |
Sahal et al. | Exploiting coarse-grained reused-based opportunities in Big Data multi-query optimization | |
EP3940547A1 (en) | Workload aware data partitioning | |
US20160092134A1 (en) | Scalable, multi-dimensional search for optimal configuration | |
US10282351B2 (en) | Using statistics for database partition pruning on correlated columns | |
US20130144815A1 (en) | Making predictions regarding evaluation of functions for a database environment | |
US20030167275A1 (en) | Computation of frequent data values | |
US10565286B2 (en) | Constructing join histograms from histograms with Q-error guarantees | |
CN106874332B (zh) | 数据库访问方法和装置 | |
US10558633B1 (en) | Hash-value-based single-pass data store statistics collection | |
US8548980B2 (en) | Accelerating queries based on exact knowledge of specific rows satisfying local conditions | |
KR101772333B1 (ko) | 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템 | |
US20060085464A1 (en) | Method and system for providing referential integrity constraints | |
US8290935B1 (en) | Method and system for optimizing database system queries | |
US7386536B1 (en) | Statistical representation of skewed data | |
CN112015742B (zh) | 基于行列共存的htap数据库的数据处理方法及装置 |
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 |