CN115408384A - 数据库访问方法、设备及存储介质 - Google Patents
数据库访问方法、设备及存储介质 Download PDFInfo
- Publication number
- CN115408384A CN115408384A CN202210934408.0A CN202210934408A CN115408384A CN 115408384 A CN115408384 A CN 115408384A CN 202210934408 A CN202210934408 A CN 202210934408A CN 115408384 A CN115408384 A CN 115408384A
- Authority
- CN
- China
- Prior art keywords
- partition
- query
- tables
- attributes
- data
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据库访问方法、设备及存储介质。数据表包含多个分区表,该多个分区表预设分区索引。当接收针对数据表的查询语句时,可生成查询语句对应的逻辑查询计划,并根据逻辑查询计划所访问的目标分区表的分区索引,确定逻辑查询计划的查询代价。根据该查询代价对逻辑查询计划进行优化,可得到物理查询计划,并根据该物理查询计划,在数据库中执行查询任务。在这种实施方式中,为数据表中的不同数据分区预设分区索引,一方面有利于提升分区访问性能,另一方面,可使得数据库的查询优化器根据分区级别的索引进行代价估算,从而更准确地优化物理查询计划的查询代价,有利于在交易量较大的情况下,提升数据库的查询性能。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库访问方法、设备及存储介质。
背景技术
互联网服务能力的快速提升,使得数据库单表数据量大幅增长。基于混合事务和分析处理(Hybrid Transaction and Analytical Process,HTAP)数据库,可实现交易和分析的共存。但是,在单表数据量达到一定程度后,单表的查询性能会有所下降,从而影响数据库的服务能力。在数据库的交易量不下降的前提下,如何提升数据库的查询性能成为了亟待解决的技术问题。
发明内容
本申请的多个方面提供一种数据库访问方法、设备及存储介质,用以提升数据库的查询性能。
本申请实施例还提供一种数据库访问方法,包括:接收针对数据表的查询语句;所述数据表包含多个分区表,所述多个分区表预设分区索引;生成所述查询语句对应的逻辑查询计划;根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价;根据所述查询代价,对所述逻辑查询计划进行优化,得到物理查询计划;根据所述物理查询计划,在数据库中执行查询任务。
可选地,根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价之前,还包括:根据所述数据表中的多个分区表各自的属性,为所述多个分区表分别创建分区索引;任一分区表的属性包括:分区表存储的数据的温度属性;其中,不同属性的分区表具有不同的索引类型和/或索引数量。
可选地,还包括:针对所述多个分区表中的任一分区表,按照预设的分区老化策略对所述分区表进行老化处理;以及,根据所述分区表老化后的属性,为所述分区表创建新的分区索引。
可选地,根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价,包括:根据所述查询语句的查询条件,从所述数据表的多个分区表中确定所述目标分区表;根据所述目标分区表的分区索引,确定所述逻辑查询计划的查询代价。
可选地,根据所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价,包括:若所述目标分区表包含单一属性的分区表,则根据所述单一属性的分区表的分区索引,计算所述逻辑查询计划的查询代价。
可选地,根据所述目标分区表的分区索引,确定所述逻辑查询计划的查询代价,包括:若所述目标分区表包含混合属性的多个分区表,则根据所述混合属性的多个分区表各自的分区索引,计算所述混合属性的多个分区表各自的查询代价;根据所述混合属性的多个分区表各自的查询代价,确定所述逻辑查询计划的查询代价。
可选地,根据所述物理查询计划,在数据库中执行查询任务,包括:若所述目标分区表包含混合属性的多个分区表,则从所述查询计划中确定所述混合属性的多个分区表各自的子查询计划;按照所述混合属性的多个分区表各自的子查询计划,并行地执行所述混合属性的多个分区表的查询任务。
可选地,按照所述混合属性的多个分区表各自的子查询计划,并行地执行所述混合属性的多个分区表的查询任务之前,还包括:根据可用资源余量,确定所述混合属性的多个分区表各自的查询并行度;根据所述混合属性的多个分区表各自的查询并行度以及子查询计划,并行地执行所述混合属性的分区表的查询任务。
可选地,并行地执行所述混合属性的多个分区表的查询任务之后,还包括:获取所述混合属性的多个分区表各自的查询结果;对所述混合属性的多个分区表各自的查询结果进行合并,并将合并得到的查询结果返回至客户端。
可选地,并行地执行所述混合属性的多个分区表的查询任务之后,还包括:获取所述混合属性的多个分区表各自的查询结果;按照所述混合属性的多个分区表各自的温度属性,确定查询结果的返回顺序;按照所述返回顺序,将所述混合属性的多个分区表各自的查询结果返回至客户端。
本申请实施例还提供一种HTAP数据库的访问方法,包括:根据数据表中的多个分区表各自的属性,为所述多个分区表创建分区索引;任一分区表的属性包括:分区表存储的数据的温度属性;其中,不同属性的分区表具有不同的索引类型和/或索引数量;接收针对所述数据表的查询语句;根据所述多个分区表各自的分区索引,对所述查询语句的查询计划进行优化,得到物理查询计划;根据所述物理查询计划,在数据库中执行查询任务。
本申请实施例还提供一种服务器,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本申请实施例提供的方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现本申请实施例提供的方法中的步骤。
本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序被处理器执行时,致使处理器实现本申请实施例提供的方法中的步骤。
本申请实施例提供的数据库访问方法中,数据表包含多个分区表,该多个分区表预设分区索引。当接收针对数据表的查询语句时,可生成查询语句对应的逻辑查询计划,并根据逻辑查询计划所访问的目标分区表的分区索引,确定逻辑查询计划的查询代价。根据该查询代价对逻辑查询计划进行优化,可得到物理查询计划,并根据该物理查询计划,在数据库中执行查询任务。在这种实施方式中,为数据表中的不同数据分区预设分区索引,一方面有利于提升分区访问性能,另一方面,可使得数据库的查询优化器根据分区级别的索引进行代价估算,从而更准确地优化物理查询计划的查询代价,有利于在交易量较大的情况下,提升数据库的查询性能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的数据库访问方法的流程示意图;
图2为本申请一示例性实施例提供的分区表的划分方式的示意图;
图3为本申请一示例性实施例提供的分区表老化的示意图;
图4-1为本申请一示例性实施例提供的基于混合分区索引的计划搜索的示意图;
图4-2为本申请一示例性实施例提供的基于计划搜索的结果执行计划的示意图;
图4-3、图4-4以及图4-5为本申请一示例性实施例提供的合并分区查询结果的示意图;
图5为本申请另一示例性实施例提供的数据库访问方法的流程示意图;
图6为本申请一示例性实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
针对现有技术中单表数量较大时查询性能下降的技术问题,在本申请一些实施例中,提供了一种解决方案,以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的数据库访问方法的流程示意图,如图1所示,该方法包括:
步骤101、接收针对数据表的查询语句;所述数据表包含多个分区表,所述多个分区表预设分区索引。
步骤102、生成所述查询语句对应的查询计划。
步骤103、根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价。
步骤104、根据所述查询代价,对所述逻辑查询计划进行优化,得到物理查询计划。
步骤105、根据优化后的查询计划,在数据库中执行查询任务。
在本实施例中,数据库中的数据表包括多个分区表。其中,分区表是数据库根据设定的分区规则划分得到的,用于将单表划分多个更小、更便于管理的子数据集合。数据库可根据不同分区表的差异性,为不同分区表预设不同的索引(即分区索引),进而便于灵活地对不同分区表进行访问。在一些实施例中,数据库可实现为HTAP数据库。
在一些实施例中,分区表的划分规则可由用户指定,可根据数据的类型确定,也可根据数据的生产时间确定,本实施例不做限制。例如,用户可指定数据块1~数据块10为一个分区,数据块11~数据块30为一个分区。例如,数据库可将某一时间段内产生的数据划分到一个分区中,将另一时间段内产生的数据划分到另一个分区中,不再赘述。
其中,查询语句由客户端发送。数据库接收到针对某一数据表的查询语句后,可由语法解析器(Parser)将查询语句解析成抽象语法树(AST),并将抽象语法树转化成逻辑查询计划,其中逻辑查询计划采用关系代数进行表达。
生成逻辑查询计划后,优化器(Optimizer)可对逻辑计划进行优化,得到物理计划。在本实施例中,优化器可感知逻辑查询计划所访问的目标分区表的分区索引,并根据所访问的目标分区表的分区索引,确定逻辑查询计划的查询代价。基于查询代价,优化器可对逻辑查询计划进行优化,得到物理查询计划。
在本实施例中,分区表各自具有分区索引,基于分区表的分区索引计算逻辑查询计划的查询代价,实现了分区级别的代价估算,可得到更加准确的代价估算结果。
优化器得到物理查询计划后,执行器(Executor)可执行该物理查询计划得到查询结果,并将查询结果返回给客户端。
在本实施例中,为数据表中的不同数据分区预设分区索引,一方面优化器可实现“分区剪枝”,即优化器可根据查询条件分析除需要扫描的分区,从而避免扫描全表,减少扫描的数据块,有利于提升分区访问性能;另一方面,可使得数据库的查询优化器根据分区级别的索引进行代价估算,从而更准确地优化物理查询计划的查询代价,有利于在交易量较大的情况下,提升数据库的查询性能。
在一些示例性的实施例中,数据库可对不同分区表创建分区索引,并对创建的分区表索引行自动维护,以便于支持基于分区索引的查询操作。
可选地,数据库可根据数据表中的多个分区表各自的属性,为该多个分区表分别创建索引。其中,任一分区表的属性包括:分区表存储的数据的温度属性。其中,数据的温度属性,用于描述数据的访问频次、产生时间以及更新频次中的至少一种。可选地,可将数据的温度属性划分为热、温、冷。
在本实施例中,单个数据表可被划分为用于存储热数据的第一分区表、用于存储温数据的第二分区表以及用于存储冷数据的第三分区表。此处采用“第一、第二、第三”对被描述的对象进行限定,仅用于对不同对象进行区分,并不限制分区表的顺序和数量。
其中,热数据是指访问频次较大、访问效率要求较高且应当就近部署的数据。冷数据是指访问频次较小,访问效率要求低,可以集中化部署、可压缩存储的数据。温数据的访问频次和访问效率介于热数据与冷数据之间,可进行压缩存储。第一分区表的属性为热数据属性,第二分区表的属性为温数据属性,第三分区表的属性为冷数据属性。
如图2所示,HTAP数据库中,数据表包含热数据分区、温数据分区以及冷数据分区。其中,2020年2季度、2季度以及4季度的数据较为久远,作为冷数据存储在OSS对象存储中。2021年1季度、2季度、2季度以及4季度的数据距离当前较近,为温数据,且温数据可被压缩存储。2022年1季度的数据距离当前最近,为热数据。客户端可对冷数据和温数据进行并行扫描,并可对热数据进行增、删、查、改。HTAP混合分区索引包含冷数据的全局索引以及温数据的全局索引。
可选地,在创建分区索引时,可为不同属性的分区表创建不同的索引类型。
其中,索引类型包括:多路搜索树(B-Tree、B+-Tree)索引、列存储索引、哈希索引(hash)、密集索引以及稀疏索引中的任意多种。其中,多路搜索树的磁盘读写代价较低且查询效率更加稳定,可为热数据对应的第一分区表创建多路搜索树索引,以满足高频、高效的查询需求。温数据对应的第二分区表中,数据量变化较小,且数据可压缩处理,因而可为第二分区表创建列存索引或者哈希索引等适用于复杂查询的索引。稀疏索引,可为索引码的某些值建立索引项,因为可为冷数据对应的第三分区表创建稀疏索引,以降低I/O(Input/Output,输入/输出)交互次数。
其中,在创建分区索引时,不同属性的分区表具有不同的索引数量。不同属性的分区表的查询效率要求不同,不同类型的索引所占的存储空间的大小也不同。因此,数据库可根据分区表的属性以及查询效率的要求,为不同分区表创建对应数量的索引。
可选地,为热数据对应的第一分区表创建索引时,可创建较少的索引数量,以降低索引占用空间对热数据的查询效率的影响。为温数据对应的第二分区表创建索引时,考虑到温数据存在压缩存储的情况,可创建数量较多的索引,以满足温数据的查询需求。为冷数据对应的第三分区表创建索引时,考虑到冷数据为弱结构化的块存储,因而可创建数量较少的索引即可满足查询需求。
在一些实施例中,在为冷数据创建索引时,可进一步对数据块进行预计算(例如计算最大值和/或最小值),并根据预计算的结果创建对应索引,以降低I/O交互的次数。
在这种实施方式中,数据库可对不同属性的分区表创建不同类型和/或数量的分区索引,有利于解除不同分区表的索引的强绑定,且有利于降低对不同属性的分区表的访问操作产生的相互影响。
在一些实施例中,分区表的属性可能发生变化,该变化体现为分区表的“老化”,即分区表中的数据的访问频率(或更新频率)由高到低进行变化或者分区表中的数据的生产时间逐渐久远,热数据可老化为温数据,温数据可老化为冷数据。在数据老化的过程中,数据库可自动对分区表的分区索引进行更新。
可选地,针对所述多个分区表中的任一分区表,可按照预设的分区老化策略对该分区表进行老化处理,并根据该分区表老化后的属性,为该分区表创建更新后的分区索引。
可选地,该预设的分区老化策略可以是按时间老化的策略。例如,以月份为老化周期进行数据老化时,可在进入新的月份时,将上月产生的热数据老化为温数据。如图3所示,随着时间推移,温数据分区中2022年1季度的数据,可自动老化为冷数据。
可选地,该预设的分区老化策略可以是按访问频次老化的策略。例如,可按照周期统计访问频次小于第一频次阈值的热数据,并将统计出的热数据老化为温数据,同理,可按照周期统计访问频次小于第二频次阈值的温数据,并将统计出的温数据老化为冷数据。其中,第二频次小于第一频次阈值。
可选地,该预设的分区老化策略可以是按更新频次老化的策略。例如,可按照周期统计更新频次小于第三频次阈值的热数据,并将统计出的热数据老化为温数据,同理,可按照周期统计访问频次小于第四频次阈值的温数据,并将统计出的温数据老化为冷数据。其中,第四频次小于第三频次阈值。
可选地,该预设的分区老化策略可以是按用户指令老化的策略。例如,可接收用户针对部分数据的老化需求,并将这部分数据所在的分区表进行老化处理,不再赘述。
针对任一老化的分区表,数据库可根据分区表老化后的属性,为分区表创建更新后的分区索引。例如,分区表A在老化前为热数据,且其索引方式为B-Tree索引,且索引数量较少。分区表A老化为温数据后,可为分区表A生成数量较多的哈希索引,以满足温数据的查询需求。
在上述实施例中,根据分区表的属性为分区表创建不同分区索引,可得到能够适应分区表的数据差异性以及查询需求差异性的索引方式,从而可在合理分配索引所占空间的同时,提升针对不同属性的分区表的查询效率。在分区表老化的过程中,数据库可对老化的分区表的索引进行自动更新,实现了更加灵活的索引自动维护。
在上述各实施例的基础上,优化器可根据逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价,以下将结合附图进行示例性说明。
可选地,优化器可根据查询语句的查询条件,从数据表的多个分区表中确定目标分区表,并可根据所访问的目标分区表的分区索引,确定逻辑查询计划的查询代价。其中该查询条件可包括查询日期、查询日期范围以及查询地址中的至少一种。
可选地,若目标分区表包含单一属性的分区表,则根据该单一属性的分区表的分区索引,计算逻辑查询计划的查询代价。可选地,若目标分区表包含混合属性的多个分区表,则根据混合属性的多个分区表各自的分区索引,计算混合属性的多个分区表各自的查询代价,并可根据混合属性的多个分区表各自的查询代价,确定该逻辑查询计划的查询代价。以下将结合具体的例子说明。
例如,销售数据表被划分为3个分区表,其中,1月的销售数据为冷数据,存放在分区表A1中;2月份的销售数据为温数据,存放在分区表A2中;3月份的销售数据为热数据,存放在分区表A3中。若查询语句的查询条件为:查询今年1月的销售数据。其中,1月的销售数据为冷数据,存放在分区表A1中,该查询语句所访问的分区表为单一属性的分区表,则优化器可确定该查询语句为单一分区查询,并可根据分区表A1的分区索引估算查询代价。若查询语句的查询条件为:查询今年1月至3月的销售数据。其中,1月的销售数据为冷数据,存放在分区表A1中;2月份的销售数据为温数据,存放在分区表A2中;3月份的销售数据为热数据,存放在分区表A3中。优化器可确定该查询语句为混合分区查询,并确定分区表A1、分区表A2以及分区表A3为本次查询所访问的目标分区表。优化器可根据分区表A1的分区索引、分区表A2的分区索引以及分区表A3的分区索引,计算该混合分区查询的查询代价。
确定逻辑查询计划的查询代价后,可根据查询代价对逻辑查询计划进行优化,得到物理查询计划。在优化的过程中,可基于查询代价搜索最优执行计划,并将搜索结果作为物理查询计划。如图4-1所示,可对每种执行计划分别计算查询代价,并选择查询代价较小的执行计划作为最终的执行计划。在图4-1中,PT表示分区表(patrtion table),原有代价是根据非分区索引计算得到的,HIA(Hybrid Index Access,混合索引访问)+PWJ(Partition Wise Join,分区感知连接)代价,是根据分区索引计算得到的。明显地,按照分区索引的方式查询时,查询代价更小。在图4-1的示意中,PT2-PT1-PT3这一访问路径的查询代价较小,因而可作为最终的查询计划。
可选地,不同分区表的查询操作可并行地、独立地执行,以降低不同分区表的访问操作之间的相互影响。若本次查询所访问的目标分区表包含混合属性的多个分区表,则查询执行器可从所述查询计划中确定该混合属性的多个分区表各自的子查询计划,并按照混合属性的多个分区表各自的子查询计划,并行地执行该混合属性的多个分区表的查询任务。其中,混合属性是指所访问的多个分区表存在跨温度属性的情形。
可选地,按照混合属性的多个分区表各自的子查询计划,并行地执行混合属性的多个分区表的查询任务之前,查询执行器可根据可用资源余量,确定该混合属性的多个分区表各自的查询并行度,并根据该混合属性的多个分区表各自的查询并行度以及子查询计划,并行地执行所述混合属性的分区表的查询任务。其中,剩余可用资源越少,则并行度越低,以降低查询操作对数据库性能的影响。其中,热数据分区的并行度可设置为0或者其他较小值,以降低查询操作对热数据的交易过程产生影响。
在一些可选的实施例中,并行地执行混合属性的多个分区表的查询任务之后,可获取该混合属性的多个分区表各自的查询结果,对该混合属性的多个分区表各自的查询结果进行合并,并将合并得到的查询结果返回至客户端。从而,可在使得客户端呈现查询语句对应的完整的查询结果,使得分区查询在用户侧无感知。如图4-2所示,沿用图4-1的例子确定PT2-PT1-PT3这一访问路径为物理查询计划后,可基于混合索引分别对PT2、PT1、PT3执行查询操作,并对查询结果进行联合。该联合的结果为可作为最终的查询结果返回至客户端。
除图4-2所示的联合之外,混合分区查询结果的合并方式还可包括图4-3所示的全量分组聚合、图4-4所示的归并排序、图4-5所示连接(union)等方式,具体可由查询语句的逻辑查询计划决定,本实施例不做限制。
在另一些可选的实施例中,当查询请求所访问的分区表跨温度分区的情况下,获取混合属性的多个分区表各自的查询结果后,可按照该混合属性的多个分区表各自的温度属性,确定查询结果的返回顺序,并可按照该返回顺序,将混合属性的多个分区表各自的查询结果返回至客户端。例如,在一些实施例中,当查询数量较大,所需查询时间较长时,可优先返回热数据查询结果,其次返回温数据查询结果,最后返回冷数据查询结果。在这种实施方式中,可优先返回查询响应较快的热数据,提升客户端侧感知到的查询响应速度。
以下将结合附图5,对上述各实施例进行进一步示例性说明。
如图5所示,接收到查询语句后,数据库可根据查询语句的查询条件,判断该查询语句是否为交易型的查询语句。其中,交易型的查询语句用于访问热数据。若为交易型的查询语句,则可判断所访问的热数据是否已创建了索引。若所访问的热数据未创建索引,则根据主键访问或者更新这部分热数据。若所访问的热数据已创建了索引,则可生成逻辑查询计划,并根据热数据的索引进行代价估算。基于代价估计的结果对逻辑查询计划进行优化,得到物理查询计划。
如图5所示,若该查询语句不为交易型的查询语句,则可判断该查询语句是否为交互分析型的查询语句。其中,交互分析型的查询语句用于访问温数据。若为交互分析型的查询语句,根据查询语句生成逻辑查询计划,并可根据查询语句请求访问的温数据的分区索引,对逻辑查询计划进行代价估算。根据估算得到的代价,可对逻辑查询计划进行优化,得到物理查询计划。根据该物理查询计划,可进行资源分配,并为不同的分区选择访问或者更新时的并行度。其中,当所访问的数据为温数据类型(即单个分区类型)时,可设置访问热数据分区以及冷数据分区的并行度为零。
如图5所示,若该查询语句不为交互分析型的查询语句,则可判断该查询语句是否为非实时分析型的查询语句。其中,非实时分析型的查询语句用于访问冷数据。若为非实时分析型的查询语句,根据查询语句生成逻辑查询计划,并可根据查询语句请求访问的冷数据的分区索引,对逻辑查询计划进行代价估算。根据估算得到的代价,可对逻辑查询计划进行优化,得到物理查询计划。根据该物理查询计划,可进行资源分配,并为不同的分区选择访问或者更新时的并行度。其中,当所访问的数据为冷数据类型(即单个分区类型)时,可设置访问热数据分区以及温数据分区的并行度为零。
如图5所示,若该查询语句不为非实时分析型的查询语句,则可判断该查询语句是否为混合数据分析型的查询语句。其中,混合数据分析型的查询语句用于访问混合类型的数据,例如用于访问热数据和温数据,或者用于访问热数据和冷数据,或者用于访问温数据和冷数据,或者用于访问上述三种数据。若为混合数据分析型的查询语句,根据查询语句生成逻辑查询计划后,可根据查询语句请求访问的混合数据分区各自的分区索引,对逻辑查询计划进行代价估算。根据估算得到的代价,可对逻辑查询计划进行优化,得到物理查询计划。根据该物理查询计划,可进行资源分配,并为不同的分区选择访问或者更新时的并行度。在一些实施例中,设置并行度时,可设置热数据分区查询的并行度较小,温数据分区查询的并行度较大,冷数据分区查询的并行度较小。如图5所示,对混合分区进行访问后,可对各个分区的访问结果进行合并,以向客户端呈现完整的访问结果。
在这种实施方式中,优化器可根据查询语句的查询条件,感知所请求访问的数据分区的类型,并根据分区索引进行代价估算,有利于更加准确地估算出贴近真实访问情况的访问代价,从而优化得到代价更低的物理执行计划。基于这种实施方式,可极大提升数据库访问的效率,满足大数据量情况下的查询需求。
除前述各实施例之外,本申请实施例还提供一种HTAP数据库的访问方法,在该数据访问方法中,HTAP数据库支持对数据表的分区表创建分区索引,且优化器可感知分区表以及分区表的分区索引。在对查询计划进行优化时,优化器可根据分区表的分区索引计算查询代价,以下将进行示例性说明。
在一些可选的实施例中,HTAP数据库可根据数据表中的多个分区表各自的属性,为该多个分区表创建分区索引。其中,任一分区表的属性包括:分区表存储的数据的温度属性。其中,不同属性的分区表具有不同的索引类型和/或索引数量。其中,数据的温度属性,用于描述数据的访问频次、产生时间以及更新频次中的至少一种。可选地,可将数据的温度属性划分为热、温、冷。基于数据的温度属性建立的分区索引后,HTAP数据库可实现混合分区查询。其中,交易型的查询语句用于访问热数据,交互分析型的查询语句用于访问温数据或者冷数据。
接收针对该数据表的查询语句后,HTAP数据库的优化器可根据该数据表的多个分区表各自的分区索引,对该查询语句的查询计划进行优化,得到物理查询计划,并根据优化得到的物理查询计划,在数据库中执行查询任务。该查询任务可以是针对单一温度属性的数据进行查询,也可以是针对混合温度属性的数据进行查询,本实施例不做限制。
在这种实施方式中,为HTAP数据库的数据表中的不同数据分区预设分区索引,一方面有利于提升HTAP数据库的分区访问性能,另一方面,可使得HTAP数据库的查询优化器根据分区级别的索引进行代价估算,从而更准确地优化物理查询计划的查询代价,有利于在交易量较大的情况下,提升数据库的查询性能。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤104的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图6示意了本申请一示例性实施例提供的服务器的结构示意图,该服务器适用于前述实施例提供的数据库访问系统。如图6所示,该蓝牙网关包括:存储器601、处理器602以及通信组件603。
存储器601,用于存储计算机程序,并可被配置为存储其它各种数据以支持在服务器上的操作。这些数据的示例包括用于在服务器上操作的任何应用程序或方法的指令。
其中,存储器601可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器602,与存储器601耦合,用于执行存储器601中的计算机程序,以用于:接收针对数据表的查询语句;所述数据表包含多个分区表,所述多个分区表预设分区索引;生成所述查询语句对应的逻辑查询计划;根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价;根据所述查询代价,对所述逻辑查询计划进行优化,得到物理查询计划;根据所述物理查询计划,在数据库中执行查询任务。
可选地,处理器602在根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价之前,还用于:根据所述数据表中的多个分区表各自的属性,为所述多个分区表分别创建分区索引;任一分区表的属性包括:分区表存储的数据的温度属性;其中,不同属性的分区表具有不同的索引类型和/或索引数量。
可选地,处理器602还用于:针对所述多个分区表中的任一分区表,按照预设的分区老化策略对所述分区表进行老化处理;以及,根据所述分区表老化后的属性,为所述分区表创建新的分区索引。
可选地,处理器602在根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价时,具体用于:根据所述查询语句的查询条件,从所述数据表的多个分区表中确定所述目标分区表;根据所述目标分区表的分区索引,确定所述逻辑查询计划的查询代价。
可选地,处理器602在根据所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价时,具体用于:若所述目标分区表包含单一属性的分区表,则根据所述单一属性的分区表的分区索引,计算所述逻辑查询计划的查询代价。
可选地,处理器602在根据所述目标分区表的分区索引,确定所述逻辑查询计划的查询代价时,具体用于:若所述目标分区表包含混合属性的多个分区表,则根据所述混合属性的多个分区表各自的分区索引,计算所述混合属性的多个分区表各自的查询代价;根据所述混合属性的多个分区表各自的查询代价,确定所述逻辑查询计划的查询代价。
可选地,处理器602在根据所述物理查询计划,在数据库中执行查询任务时,具体用于:若所述目标分区表包含混合属性的多个分区表,则从所述查询计划中确定所述混合属性的多个分区表各自的子查询计划;按照所述混合属性的多个分区表各自的子查询计划,并行地执行所述混合属性的多个分区表的查询任务。
可选地,处理器602在按照所述混合属性的多个分区表各自的子查询计划,并行地执行所述混合属性的多个分区表的查询任务之前,还用于:根据可用资源余量,确定所述混合属性的多个分区表各自的查询并行度;根据所述混合属性的多个分区表各自的查询并行度以及子查询计划,并行地执行所述混合属性的分区表的查询任务。
可选地,处理器602在并行地执行所述混合属性的多个分区表的查询任务之后,还用于:获取所述混合属性的多个分区表各自的查询结果;对所述混合属性的多个分区表各自的查询结果进行合并,并将合并得到的查询结果返回至客户端。
可选地,处理器602在并行地执行所述混合属性的多个分区表的查询任务之后,还用于:获取所述混合属性的多个分区表各自的查询结果;按照所述混合属性的多个分区表各自的温度属性,确定查询结果的返回顺序;按照所述返回顺序,将所述混合属性的多个分区表各自的查询结果返回至客户端。
进一步,如图6所示,该服务器还包括:电源组件604等其它组件。图6中仅示意性给出部分组件,并不意味着服务器只包括图6所示组件。
其中,通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(NFC)技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术和其他技术来实现。
其中,电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本实施例中,数据表包含多个分区表,该多个分区表分别预设分区索引。当接收针对数据表的查询语句时,可生成查询语句对应的逻辑查询计划,并根据逻辑查询计划所访问的目标分区表的分区索引,确定逻辑查询计划的查询代价。根据该查询代价对逻辑查询计划进行优化,可得到物理查询计划,并根据该物理查询计划,在数据库中执行查询任务。在这种实施方式中,为数据表中的不同数据分区预设分区索引,一方面有利于提升分区访问性能,另一方面,可使得数据库的查询优化器根据分区级别的索引进行代价估算,从而更准确地优化物理查询计划的查询代价,有利于在交易量较大的情况下,提升数据库的查询性能。
除前述实施例之外,图6所示服务器还可用于执行一种HTAP数据库的访问方法,处理器602具体用于:根据数据表中的多个分区表各自的属性,为所述多个分区表创建分区索引;任一分区表的属性包括:分区表存储的数据的温度属性;其中,不同属性的分区表具有不同的索引类型和/或索引数量;接收针对所述数据表的查询语句;根据所述多个分区表各自的分区索引,对所述查询语句的查询计划进行优化,得到物理查询计划;根据所述物理查询计划,在数据库中执行查询任务。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由服务器执行的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序被处理器执行时,致使处理器实现本申请实施例中可由服务器执行的各步骤。在一些实施例中,该计算机程序产品可实现为计算机上运行的数据库应用程序,本实施例不做限制。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种数据库访问方法,包括:
接收针对数据表的查询语句;所述数据表包含多个分区表,所述多个分区表预设分区索引;
生成所述查询语句对应的逻辑查询计划;
根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价;
根据所述查询代价,对所述逻辑查询计划进行优化,得到物理查询计划;
根据所述物理查询计划,在数据库中执行查询任务。
2.根据权利要求1所述的方法,根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价之前,还包括:
根据所述数据表中的多个分区表各自的属性,为所述多个分区表分别创建分区索引;任一分区表的属性包括:分区表存储的数据的温度属性;
其中,不同属性的分区表具有不同的索引类型和/或索引数量。
3.根据权利要求2所述的方法,还包括:
针对所述多个分区表中的任一分区表,按照预设的分区老化策略对所述分区表进行老化处理;以及,
根据所述分区表老化后的属性,为所述分区表创建新的分区索引。
4.根据权利要求2所述的方法,根据所述逻辑查询计划所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价,包括:
根据所述查询语句的查询条件,从所述数据表的多个分区表中确定所述目标分区表;
根据所述目标分区表的分区索引,确定所述逻辑查询计划的查询代价。
5.根据权利要求4所述的方法,根据所访问的目标分区表的分区索引,确定所述逻辑查询计划的查询代价,包括:
若所述目标分区表包含单一属性的分区表,则根据所述单一属性的分区表的分区索引,计算所述逻辑查询计划的查询代价。
6.根据权利要求4所述的方法,根据所述目标分区表的分区索引,确定所述逻辑查询计划的查询代价,包括:
若所述目标分区表包含混合属性的多个分区表,则根据所述混合属性的多个分区表各自的分区索引,计算所述混合属性的多个分区表各自的查询代价;
根据所述混合属性的多个分区表各自的查询代价,确定所述逻辑查询计划的查询代价。
7.根据权利要求2-6任一项所述的方法,根据所述物理查询计划,在数据库中执行查询任务,包括:
若所述目标分区表包含混合属性的多个分区表,则从所述查询计划中确定所述混合属性的多个分区表各自的子查询计划;
按照所述混合属性的多个分区表各自的子查询计划,并行地执行所述混合属性的多个分区表的查询任务。
8.根据权利要求7所述的方法,按照所述混合属性的多个分区表各自的子查询计划,并行地执行所述混合属性的多个分区表的查询任务之前,还包括:
根据可用资源余量,确定所述混合属性的多个分区表各自的查询并行度;
根据所述混合属性的多个分区表各自的查询并行度以及子查询计划,并行地执行所述混合属性的分区表的查询任务。
9.根据权利要求7所述的方法,并行地执行所述混合属性的多个分区表的查询任务之后,还包括:
获取所述混合属性的多个分区表各自的查询结果;
对所述混合属性的多个分区表各自的查询结果进行合并,并将合并得到的查询结果返回至客户端。
10.根据权利要求7所述的方法,并行地执行所述混合属性的多个分区表的查询任务之后,还包括:
获取所述混合属性的多个分区表各自的查询结果;
按照所述混合属性的多个分区表各自的温度属性,确定查询结果的返回顺序;
按照所述返回顺序,将所述混合属性的多个分区表各自的查询结果返回至客户端。
11.一种HTAP数据库的访问方法,包括:
根据数据表中的多个分区表各自的属性,为所述多个分区表创建分区索引;任一分区表的属性包括:分区表存储的数据的温度属性;其中,不同属性的分区表具有不同的索引类型和/或索引数量;
接收针对所述数据表的查询语句;
根据所述多个分区表各自的分区索引,对所述查询语句的查询计划进行优化,得到物理查询计划;
根据所述物理查询计划,在数据库中执行查询任务。
12.一种服务器,包括:存储器和处理器;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令以用于:执行权利要求1-11任一项所述的方法中的步骤。
13.一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现权利要求1-11任一项所述的方法中的步骤。
14.一种计算机程序产品,包括计算机程序/指令,当计算机程序被处理器执行时,致使处理器实现如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210934408.0A CN115408384A (zh) | 2022-08-04 | 2022-08-04 | 数据库访问方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210934408.0A CN115408384A (zh) | 2022-08-04 | 2022-08-04 | 数据库访问方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115408384A true CN115408384A (zh) | 2022-11-29 |
Family
ID=84158645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210934408.0A Pending CN115408384A (zh) | 2022-08-04 | 2022-08-04 | 数据库访问方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115408384A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115809248A (zh) * | 2022-12-30 | 2023-03-17 | 联通智网科技股份有限公司 | 数据查询方法和装置以及存储介质 |
CN117971888A (zh) * | 2024-03-28 | 2024-05-03 | 腾讯科技(深圳)有限公司 | 数据引擎的确定方法、装置、设备、存储介质及程序产品 |
-
2022
- 2022-08-04 CN CN202210934408.0A patent/CN115408384A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115809248A (zh) * | 2022-12-30 | 2023-03-17 | 联通智网科技股份有限公司 | 数据查询方法和装置以及存储介质 |
CN115809248B (zh) * | 2022-12-30 | 2024-03-22 | 联通智网科技股份有限公司 | 数据查询方法和装置以及存储介质 |
CN117971888A (zh) * | 2024-03-28 | 2024-05-03 | 腾讯科技(深圳)有限公司 | 数据引擎的确定方法、装置、设备、存储介质及程序产品 |
CN117971888B (zh) * | 2024-03-28 | 2024-07-05 | 腾讯科技(深圳)有限公司 | 数据引擎的确定方法、装置、设备、存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220405284A1 (en) | Geo-scale analytics with bandwidth and regulatory constraints | |
CN115408384A (zh) | 数据库访问方法、设备及存储介质 | |
EP3117347B1 (en) | Systems and methods for rapid data analysis | |
Zhang et al. | Efficient multi-way theta-join processing using mapreduce | |
CN105183735B (zh) | 数据的查询方法及查询装置 | |
CN111177178B (zh) | 一种数据处理方法及相关设备 | |
US5899986A (en) | Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer | |
CN106528787B (zh) | 一种基于海量数据多维分析的查询方法及装置 | |
CN107168977B (zh) | 一种数据查询的优化方法及装置 | |
US20170083573A1 (en) | Multi-query optimization | |
US11169994B2 (en) | Query method and query device | |
US11030196B2 (en) | Method and apparatus for processing join query | |
US10795889B2 (en) | Query path with aggregate projection | |
US11366808B2 (en) | Query processing method, data source registration method, and query engine | |
US10726006B2 (en) | Query optimization using propagated data distinctness | |
US20200250192A1 (en) | Processing queries associated with multiple file formats based on identified partition and data container objects | |
CN108536808A (zh) | 一种基于Spark计算框架的数据获取方法和装置 | |
CN110807145A (zh) | 查询引擎获取方法、设备和计算机可读存储介质 | |
CN110968579A (zh) | 执行计划的生成与执行方法、数据库引擎及存储介质 | |
CN115422205A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN108733781A (zh) | 基于内存计算的集群时态数据索引方法 | |
EP3951609A1 (en) | Query optimization method and apparatus | |
CN110297858B (zh) | 执行计划的优化方法、装置、计算机设备和存储介质 | |
CN116501761A (zh) | 查询优化方法、设备及存储介质 | |
Pedrozo et al. | A tool for automatic index selection in database management systems |
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 |