CN111352950A - 数据库表等值连接的优化方法、装置、服务器及存储介质 - Google Patents
数据库表等值连接的优化方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN111352950A CN111352950A CN202010142573.3A CN202010142573A CN111352950A CN 111352950 A CN111352950 A CN 111352950A CN 202010142573 A CN202010142573 A CN 202010142573A CN 111352950 A CN111352950 A CN 111352950A
- Authority
- CN
- China
- Prior art keywords
- connection
- partition
- database
- data
- fields
- 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
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 73
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000004364 calculation method Methods 0.000 claims abstract description 77
- 238000005192 partition Methods 0.000 claims description 100
- 238000004590 computer program Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000009826 distribution Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013480 data collection Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 208000035405 autosomal recessive with axonal neuropathy spinocerebellar ataxia Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010608 single channel array normalization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库表等值连接的优化方法、装置、服务器及存储介质。该方法包括:解析查询语句,获取查询条件、数据库表的表名和数据库表在查询条件中涉及的字段;将查询条件、表名和字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据数据扫描计划节点和连接计划节点生成优化后的执行计划,所述执行计划用于并行地对数据库表进行等值连接计算,得到等值连接计算结果。本发明实施例解决相关技术因额外增加线程汇总数据或分发数据的I/O开销和CPU开销而降低性能的问题,提升了执行效率、提高了性能。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种数据库表等值连接的优化方法、装置、服务器及存储介质。
背景技术
关系型数据库,是创建在关系模型基础上的数据库,存储关系型数据库中的表时,因计算机内存采用一维结构的顺序编址,所以可以采用逐条输入表中各行数据的方式(即行存),或者批量导入表中各列数据的方式(即列存)。
在关系型数据库中的表存储后,可基于关系代数对表执行多种连接操作,例如:对两张数据库表执行等值连接,即查询两张数据库表中特定字段满足等值条件的数据。在多个线程并行执行等值连接计算时,由于各个线程所取得的数据值是无规律的,将各个线程的计算结果汇总后,存在计算结果的数量小于正确结果数量的问题。相关技术中的一些方案虽然可以解决上述问题,但是额外增加了线程汇总数据或分发数据的I/O开销和CPU开销,严重降低性能。
发明内容
本发明实施例提供一种数据库表等值连接的优化方法、装置、服务器及存储介质,可以解决由于额外增加了线程汇总数据或分发数据的I/O开销和CPU开销而降低性能的问题。
第一方面,本发明实施例提供了一种数据库表等值连接的优化方法,包括:
解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段;
将所述查询条件、所述数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;
若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
第二方面,本发明实施例还提供了一种数据库表等值连接的优化装置,该装置包括:
语句解析模块,用于解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段;
优化操作判断模块,用于将所述查询条件、数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;
等值连接计算模块,用于若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
第三方面,本发明实施例还提供了一种服务器,该服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例提供的数据库表等值连接的优化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例提供的数据库表等值连接的优化方法。
本发明实施例提供一种数据库表等值连接的优化方案,在判定需要进行等值连接的优化操作时,根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行的对所述数据库表进行等值连接计算,得到等值连接计算结果,实现每个线程计算自己对应的分区表的等值连接,对各个线程的计算结果进行汇总得到等值连接结果,解决了相关技术额外增加线程汇总数据或分发数据的I/O开销和CPU开销的问题,提升了执行效率、提高了性能。
附图说明
图1为本发明实施例提供的一种数据库表等值连接的优化方法的流程图;
图2为本发明实施例提供的一种数据库表等值连接的优化方法中执行计划得到执行方法流程图;
图3为本发明实施例提供的一种数据库表等值连接的优化装置的结构框图;
图4为本发明实施例提供的一种服务器的结构示意图
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
为例便于理解,下面对本发明实施例中可能出现的词汇进行解释。
数据库表分为非分区表和分区表。其中,分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。
同构分区表是指结构完全相同的两个分区表。
并行是一种利用机器硬件优势(多核CPU),提升性能的常见方式。
通常来说,两个数据库表做等值连接,如果没有采用并行计算的方式,则任务线程先取出表TA的所有数据,再取出表TB的数据,再利用算法计算出所有满足等值的记录进行输出。
常规的正确使用并行的办法有二种:
方法一,需要将所有线程分配到的同一张表的数据先汇总到一个线程,再对两张表汇总后的数据进行等值连接计算,否则无法保证结果正确性。
方法二,各个线程根据连接列、将不同值的数据进行线程间的分发,使得各个线程处理的数据相互之间没有重复值。例如,根据等值连接C1=D1,连接列分别是T1表中的C1和T2表中的D1,将T1表中满足C1=1和T2表中满足D1=1的数据都分发给同一个线程,将T1表中C1=2和T2表中满足D1=2的数据都分发给同一个线程。最后,每个线程根据各自分配到的数据进行等值连接计算,最后再将结果汇总到一起进行输出。
可知,两种常规方法利用并行产生的性能提升只对取数据阶段有效,但额外增加了线程汇总数据或分发数据的IO和CPU开销。
假设有如下分区表:
CREATE TABLE TA(C1 INT)PARTITION BY HASH(C1)(PARTITION TA1,PARTITIONTA2);
CREATE TABLE TB(D1 INT)PARTITION BY HASH(D1)(PARTITION TB1,PARTITIONTB2)。
执行等值连接查询语句:
SELECT*FROM TA,TB WHERE C1=D1;
优化前的执行计划:
或者,
上述执行计划中,GATHER代表数据汇总计划节点,HASH JOIN代表连接计划节点,DISTRIBUTE代表数据分发计划节点,以及SCAN代表数据扫描计划节点。
图1为本发明实施例提供的一种数据库表等值连接的优化方法的流程图,本实施例可适用于对同构分区表进行等值连接查询的情况,该方法可以由一种数据库等值连接的优化装置来执行,该装置可以通过硬件和/或软件实现,并且该装置通常可集成于服务器。如图1所示,该方法包括:
步骤110、解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段。
需要说明的是,用户想对存储的多个数据库表执行连接操作时,在数据库查询引擎中输入查询语句,数据库查询引擎接收到查询语句后,向数据库表等值连接的优化装置转发。数据库表等值连接的优化装置接收到查询语句,解析该查询语句得到查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段。其中,查询条件可以是等值连接,等值连接指代对两张表中的字段执行等值连接操作。
例如,针对关系型数据库,用户在数据库查询引擎中输入SQL语句。数据库查询引擎将SQL语句发送给数据库表等值连接的优化装置,通过数据库表等值连接的优化装置对SQL语句进行词法、语法、语义分析,得到查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段。以SELECT*FROM TA,TB WHERE C1=D1为例,查询条件是等值连接,进行等值连接的两个数据库表的表名分别是TA和TB,数据库表在等值连接中涉及的字段分别是TA表中的C1和TB表中的D1。
步骤120、将所述查询条件、所述数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作。
本发明实施例中,预设条件包括:所述查询条件涉及两个所述数据库表、查询条件为等值连接、等值连接左右两侧的字段所属的数据库表为同构分区表、且等值连接左右两侧的字段所属的数据库表包含相应数据库表的全部分区字段。
其中,分区字段是对数据库表进行分区所依赖的字段。本发明实施例中,分区字段可以是分区列。
匹配结果包括所述查询条件、所述数据库表的表名和所述字段中的至少一项与预设优化条件不匹配,或者,所述查询条件、所述数据库表的表名和所述字段均满足预设优化条件。
本发明实施例中,在所述查询条件、所述数据库表的表名和所述字段均满足预设优化条件,则进行等值连接的优化操作,否则,不进行等值连接的优化操作,采用上述两种常规的并行计算等值连接的办法中的任意一种,对两个数据表进行等值连接计算。
示例性的,判断所述查询条件是否为涉及两个所述数据库表的连接条件;若是,则判断所述连接条件是否为等值连接;若是,则判断所述等值连接左右两侧的字段所属的数据库表是否是同构分区表;若是,则判断所述等值连接左右两侧的字段所属的数据库表是否包含各数据库表的全部分区字段;若是,则确定进行等值连接的优化操作。
例如,在确定查询条件是连接条件的情况下,根据数据库表的表名判断查询条件是否是涉及两个数据库表的连接条件。进一步的,若有多个连接条件,则分别判断每个连接条件是否涉及两个不同的数据库表。进一步的,若查询条件是涉及两个数据库表的连接条件,则判断该连接条件是否为等值连接。进一步的,若是等值连接,则判断等值连接左右两侧的字段所属的数据库表是否是同构分区表。进一步的,若是同构分区表,则判断所述等值连接左右两侧的字段所属的数据库表是否包含各数据库表的全部分区字段。进一步的,若所述等值连接左右两侧的字段所属的数据库表包含相应数据库表的全部分区字段,则确定所述查询条件、所述数据库表的表名和所述字段均满足预设优化条件,从而,确定进行等值连接的优化操作。
可选的,在分区字段(例如分区列)的数目、分区字段(例如分区列)的数据类型、分区层次、每层分区类型、每个主表的分区数目、每个分区的边界值(range)或每个分区可包含的值(list)均一致的情况下,确定所述等值连接左右两侧的字段所属的数据库表是同构分区表。需要说明的是,判断两个数据库表对应的分区表是否为同构分区表的条件并不限于上述列举的方式,本发明实施例并不限定具体采用何种条件判断同构分区表。
本发明实施例中,若需要进行等值连接的优化操作,则确定数据扫描计划节点中设定变量的取值为第一特定值,否则确定数据扫描计划节点中设定变量的取值为第二特定值。其中,第一特定值和第二特定值是数值或逻辑标识,且第一特定值和第二特定值不相同。例如,第一特定值为1,第二特定值为0。或者,第一特定值为TURE,第二特定值为FALSE。需要说明的是,本发明实施例中第一特定值和第二特定值的具体取值并不限于上述列举,对于其具体取值本发明实施例并不作具体限定。
步骤130、若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
其中,执行计划是一条查询语句在数据库中的执行过程或访问路径的描述。
执行计划的执行顺序包括:
1)软件代码中,最下层(缩进最多)的计划节点最先执行,同一层(缩进相同)的计划节点中上面的计划节点比下面的计划节点先执行;
2)同一级的动作,如果某个动作没有子ID,就先执行。
本发明实施例中,分别根据等值连接的连接条件左右两侧的列所属的数据库表的表名生成数据扫描计划节点(即SCAN[TA]以及SCAN[TB]),根据数据扫描计划节点生成连接计划节点(例如,HASH JOIN)。由于等值连接是多个线程并行处理的,需要汇总各个子线程的等值连接的计算结果,因此,需要根据连接计划节点生成数据汇总计划节点,得到优化后的执行计划。例如,根据等值连接的连接条件左右两侧的列所属的数据库表的表名生成数据扫描计划节点,以数据扫描计划节点为子计划生成连接计划节点,在SCAN的上层生成数据汇总计划节点,用于汇总各个连接计划节点的计算结果。本发明实施例是对各个线程计算的等值连接的结果进行汇总,与常规方法中将所有线程分配到同一张数据库表的数据先汇总到一个线程的方式不相同。
本发明实施例中,根据数据扫描计划节点、连接计划节点和数据汇总计划节点生成优化后的执行计划。所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果,实现充分利用了并行多任务同时处理的优势(每个线程自己计算等值连接),消除了数据分发的IO和分发前后的打包和解包消耗的CPU,提升了性能。
例如,执行等值连接查询语句:
SELECT*FROM TA,TB WHERE C1=D1;
优化后的执行计划可以是:
假设有两个线程并行执行等值连接,运行优化后的执行计划可以是:
线程1直接取数据库表TA的子表TA1和数据库表TB的子表TB1,取完后直接进行等值连接计算。线程2取数据库表TA的子表TA2和数据库表TB的子表TB2,取完后进行等值连接计算。最后,再将两个线程的计算结果汇总,得到等值连接计算结果,进行输出。
本实施例的技术方案,在判定需要进行等值连接的优化操作时,根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果,实现每个线程计算自己对应的分区表的等值连接,对各个线程的计算结果进行汇总得到等值连接结果,解决了相关技术额外增加线程汇总数据或分发数据的I/O开销和CPU开销的问题,提升了执行效率、提高了性能。
一种示例性的实施例中,若满足下述条件中的至少一条,则确定不进行等值连接的优化操作:
查询条件不是涉及两个数据库表的连接条件;
连接条件不是等值连接;
对于等值连接涉及的两个数据库表,等值连接左右两侧列所属的数据库表不是同构分区表;
等值连接左右两侧列所属的数据库表不包含相应数据库表的全部分区列。
本发明实施例中,若不进行等值连接的优化操作,则确定数据扫描计划节点中设定变量的取值为第二特定值。
在所述取值为第二特定值时,在所述数据扫描计划节点的上层生成数据汇总计划节点。例如,在SCAN[TA]的上层生成第一数据汇总计划节点(GATHER),在SCAN[TB]的上层生成第二数据汇总计划节点(GATHER)。再以所述数据汇总计划节点为子计划生成连接计划节点,得到执行计划。例如,以第一GATHER和第二GATHER为子计划生成HASH JOIN,得到执行计划,即执行计划为:
可选的,在所述取值为第二特定值时,在所述数据扫描计划节点的上层生成数据分发计划节点。例如,在SCAN[TA]的上层生成第一数据分发计划节点(DISTRIBUTE),在SCAN[TB]的上层生成第二数据分发计划节点(DISTRIBUTE)。再以所述数据分发计划节点为子计划生成连接计划节点,以连接计划节点为子计划生成数据汇总计划节点,得到执行计划。例如,以第一DISTRIBUTE和第二DISTRIBUTE为子计划生成HASH JOIN,以HASH JOIN为子计划生成GATHER,得到执行计划,即执行计划为:
图2为本发明实施例提供的一种数据库表等值连接的优化方法中执行计划得到执行方法流程图。如图2所示,该方法包括:
步骤210、获取所述执行计划中数据扫描计划节点中设定变量的取值。
步骤220、判断所述取值是否为第一特定值,若是,则执行步骤230,否则,执行步骤250。
本发明实施例中,在需要进行等值连接的优化操作时,确定数据扫描计划节点中设定变量的取值为第一特定值。因此,若检测到数据扫描计划节点中设定变量的取值为第一特定值,则确定当前执行计划是优化后的执行计划。
步骤230、确定所述等值连接左右两侧的字段所属的数据库表的各个子表对应的线程,通过所述线程获取对应的子表中的数据,并对所述数据进行等值连接计算。
示例性的,根据所述等值连接左右两侧的字段所属的数据库表的各个子表的分区编号确定各个所述子表对应的线程;通过所述线程根据对应的所述分区编号获取属于所述子表的数据页;通过各个线程对相应的子表中的数据进行等值连接计算。其中,等值连接左右两侧的字段所属的数据库表可以是等值连接左右两侧的列所属的数据库表。数据库表通过对分区列的判断,将不同分区列的数据记录放在不同的分区中,得到数据库表的多个子表。因此,分区编号与子表之间存在映射关系。可以根据分区编号为各个子表分配线程,本发明实施例对线程分配的具体算法并不作具体限定。例如,线程分配的算法可以是分区编号对线程总数取模,所得值即该分区编号要由哪个线程进行处理等。每个线程根据获取的分区编号由存储器中读取该分区的所有数据页,并加载到内存,其中,所述数据页用于存储属于所述子表的数据。通过各个线程对各自对应的子表中的数据进行等值连接计算,得到各个线程对应的计算结果。
步骤240、通过主线程汇总各个线程的计算结果,得到等值连接计算结果。
本发明实施例中,总线程将各个线程对应的计算结果进行汇总,得到等值连接计算结果,并输出。
步骤250、在所述取值为第二特定值时,根据页号确定各个数据库表的数据页对应的线程,各个线程按照所对应的页号扫描数据页。
需要说明的是,数据一般按照数据页的形式存储在磁盘中。可以按照预定算法(比如取模)将所有数据页分割开来,再分别分配给各个线程,各线程得到的数据页各不相同,线程之间的数据页没有重叠,以保证最大程度地利用上并行的优势。当各个线程将分配好的数据页读取到内存之后,接下来再进行等值连接计算。
步骤260、根据各个线程对数据页的扫描结果,采用优化前的执行计划进行等值连接计算。
本发明实施例中,在各个线程将对应的数据页的数据返回上层的数据汇总计划节点进行汇总之后,通过连接计划节点基于汇总后的数据进行等值连接计算,得到等值连接计算结果。
可替换的,在各个线程将对应的数据页的数据返回上层的数据分发计划节点进行数据分发之后,通过连接计划节点基于分发后的数据进行等值连接计算,得到各个线程的等值连接的计算结果,通过数据汇总计划节点汇总各个线程的计算结果,得到等值连接计算结果。
本发明实施例的技术方案,通过执行计划中数据扫描计划节点中设定变量的取值,选择优化后的执行计划或优化前的执行计划进行等值连接计算,实现分场景进行等值连接,通过优化后的执行计划充分利用了并行多任务同时处理的优势,还消除了数据分发的IO和分发前后的打包和解包消耗的CPU。
一种示例性的实施方案包括生成执行计划的步骤和执行该执行计划的步骤。
其中,生成执行计划的步骤包括:
⑴判断当前环境是否是并行环境,用户可以通过配置数据库的参数将当前环境设置为并行环境。是则继续,否则不做优化。
⑵对SQL语句涉及的表进行收集,检查是否为连接查询。如果只是单表查询操作,则不做优化,否则继续步骤⑶。
⑶将存在涉及两表的连接条件则取出连接条件,判断是否为等值连接。若没有连接条件或者不是等值连接的,则进行步骤⑺,否则进行步骤⑷。
⑷对等值连接条件左右两侧的列所属的表进行比较,检查是否为同构分区表。若是同构分区表,那么进行步骤⑸,否则进行步骤⑺。
⑸按表收集满足前面等值连接条件的列,检查等值条件连接的列是否包含所有分区列。等值条件包含所有分区列,就会准确定位到具体的分区中,保证最终结果正确(不会变少),不用先汇总数据再做等值连接。若包含所属分区表的所有分区列,将SCAN计划节点的用来标记是否满足本次优化的变量VAR置为特定值如TRUE,进行步骤⑹,否则置为FALSE,进行步骤⑺。
⑹在数据扫描计划节点(SCAN)的上方无需生成数据汇总计划节点(GATHER)或数据分发计划节点(DISTRIBUTE),再以左右两个SCAN为子计划生成连接计划节点(HASHJOIN)即可。
⑺在数据扫描计划节点(SCAN)的上方生成数据汇总计划节点(GATHER)或数据分发计划节点(DISTRIBUTE),再以左右两个GATHER/DISTRIBUTE为子计划生成连接计划节点(HASH JOIN)即可。
执行该执行计划的步骤包括:
⑴在执行SCAN时,取出是否满足优化的变量值VAR,若为FALSE,则按步骤⑵进行,否则按步骤⑷进行
⑵将根表为TA和TB的数据页按照页号分别分配给不同的线程,每个线程按照所得数据页进行扫描。
⑶将扫描结果返回上层的GATHER/DISTRIBUTE进行数据的汇总/分发,再进行等值连接计算JOIN,如果之前采用的是DISTIRIBUTE则最后再汇总一次并将最终结果进行输出,如果是GATHER则无需再次汇总直接输出即可。结束。
⑷按照分区表叶子分区的编号分配线程(如分区编号和线程总数取模,所得值即该分区编号要由哪个线程进行处理),每个线程根据获取的分区编号将属于分区的数据页取出
⑸各个线程分别将各自的数据进行等值连接计算。
⑹最后主线程再将所有线程数据结果进行汇总输出。结束。
需要说明的是,本发明实施例中的数据库表连接的优化方法不仅适用于并行情况下的分区表,同样适用于在多节点集群下类似的分布表,原理类似,此处不再赘述。
图3为本发明实施例提供的一种数据库表等值连接的优化装置的结构框图。该装置可由软件和/或硬件实现,一般可集成在服务器中,可以通过执行数据库表等值连接的优化方法提升性能。如图3所示,该装置包括:
语句解析模块310,用于解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段;
优化操作判断模块320,用于将所述查询条件、数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;
等值连接计算模块330,用于若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
本发明实施例提供一种数据库表等值连接的优化装置,在判定需要进行等值连接的优化操作时,根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果,实现每个线程计算自己对应的分区表的等值连接,对各个线程的计算结果进行汇总得到等值连接结果,解决了相关技术额外增加线程汇总数据或分发数据的I/O开销和CPU开销的问题,提升了执行效率、提高了性能。
可选的,所述预设优化条件包括:
所述查询条件涉及两个所述数据库表、所述查询条件为等值连接、所述等值连接左右两侧的字段所属的数据库表为同构分区表、且所述等值连接左右两侧的字段所属的数据库表包含相应数据库表的全部分区字段,其中,所述分区字段是对数据库表进行分区所依赖的字段。
可选的,优化操作判断模块320具体用于:
判断所述查询条件是否为涉及两个所述数据库表的连接条件;
若是,则判断所述连接条件是否为等值连接;
若是,则判断所述等值连接左右两侧的字段所属的数据库表是否是同构分区表;
若是,则判断所述等值连接左右两侧的字段所属的数据库表是否包含各数据库表的全部分区字段;
若是,则确定进行等值连接的优化操作。
可选的,还包括:
赋值模块,用于在判断所述等值连接左右两侧的字段所属的数据库表是否包含各数据库表的全部分区字段之后,若所述等值连接左右两侧的字段所属的数据库表包含相应数据库表的全部分区字段,则确定数据扫描计划节点中设定变量的取值为第一特定值。
可选的,所述判断所述等值连接左右两侧的字段所属的数据库表是否是同构分区表,包括:
在分区字段的数目、分区字段的数据类型、分区层次、每层分区类型、每个主表的分区数目、每个分区的边界值或每个分区可包含的值均一致的情况下,确定所述等值连接左右两侧的字段所属的数据库表是同构分区表。
可选的,等值连接计算模块330具体用于:
获取所述执行计划中数据扫描计划节点中设定变量的取值;
在所述取值为第一特定值时,确定所述等值连接左右两侧的字段所属的数据库表的各个子表对应的线程,通过所述线程获取对应的子表中的数据,并对所述数据进行等值连接计算;
通过主线程汇总各个线程的计算结果,得到等值连接计算结果。
可选的,所述确定所述等值连接左右两侧的字段所属的数据库表的各个子表对应的线程,通过所述线程获取对应的子表中的数据,并对所述数据进行等值连接计算,包括:
根据所述等值连接左右两侧的字段所属的数据库表的各个子表的分区编号确定各个所述子表对应的线程;
通过所述线程根据对应的所述分区编号获取属于所述子表的数据页,其中,所述数据页用于存储属于所述子表的数据;
通过各个线程对相应的子表中的数据进行等值连接计算。
本发明实施例所提供的数据库表等值连接的优化装置可执行本发明任意实施例所提供的数据库表等值连接的优化方法,具备执行方法相应的功能模块和有益效果。
图4为本发明实施例提供的一种服务器的结构示意图,如图4所示,该服务器包括处理器410、存储器420、输入装置430和输出装置440;服务器中处理器410的数量可以是一个或多个,图4中以一个处理器410为例;服务器中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据库表等值连接的优化方法对应的程序指令/模块(例如,语句解析模块、优化操作判断模块和等值连接计算模块)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的数据库表等值连接的优化方法。
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至设备/终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收查询语句,以及产生与服务器的用户设置以及功能控制有关的关键信号输入。输出装置440可包括显示屏等显示设备。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据库表等值连接的优化方法,该方法包括:
解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段;
将所述查询条件、所述数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;
若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据库表等值连接的优化方法中的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据库表等值连接的优化方法,其特征在于,包括:
解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段;
将所述查询条件、所述数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;
若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
2.根据权利要求1所述的方法,其特征在于,所述预设优化条件包括:
所述查询条件涉及两个所述数据库表、所述查询条件为等值连接、所述等值连接左右两侧的字段所属的数据库表为同构分区表、且所述等值连接左右两侧的字段所属的数据库表包含相应数据库表的全部分区字段,其中,所述分区字段是对数据库表进行分区所依赖的字段。
3.根据权利要求2所述的方法,其特征在于,所述将所述查询条件、所述数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作,包括:
判断所述查询条件是否为涉及两个所述数据库表的连接条件;
若是,则判断所述连接条件是否为等值连接;
若是,则判断所述等值连接左右两侧的字段所属的数据库表是否是同构分区表;
若是,则判断所述等值连接左右两侧的字段所属的数据库表是否包含各数据库表的全部分区字段;
若是,则确定进行等值连接的优化操作。
4.根据权利要求3所述的方法,其特征在于,在判断所述等值连接左右两侧的字段所属的数据库表是否包含各数据库表的全部分区字段之后,还包括:
若所述等值连接左右两侧的字段所属的数据库表包含相应数据库表的全部分区字段,则确定数据扫描计划节点中设定变量的取值为第一特定值。
5.根据权利要求3所述的方法,其特征在于,所述判断所述等值连接左右两侧的字段所属的数据库表是否是同构分区表,包括:
在分区字段的数目、分区字段的数据类型、分区层次、每层分区类型、每个主表的分区数目、每个分区的边界值或每个分区可包含的值均一致的情况下,确定所述等值连接左右两侧的字段所属的数据库表是同构分区表。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果,包括:
获取所述执行计划中数据扫描计划节点中设定变量的取值;
在所述取值为第一特定值时,确定所述等值连接左右两侧的字段所属的数据库表的各个子表对应的线程,通过所述线程获取对应的子表中的数据,并对所述数据进行等值连接计算;
通过主线程汇总各个线程的计算结果,得到等值连接计算结果。
7.根据权利要求6所述的方法,其特征在于,所述确定所述等值连接左右两侧的字段所属的数据库表的各个子表对应的线程,通过所述线程获取对应的子表中的数据,并对所述数据进行等值连接计算,包括:
根据所述等值连接左右两侧的字段所属的数据库表的各个子表的分区编号确定各个所述子表对应的线程;
通过所述线程根据对应的所述分区编号获取属于所述子表的数据页,其中,所述数据页用于存储属于所述子表的数据;
通过各个线程对相应的子表中的数据进行等值连接计算。
8.一种数据库表等值连接的优化装置,其特征在于,包括:
语句解析模块,用于解析查询语句,获取查询条件、数据库表的表名和所述数据库表在所述查询条件中涉及的字段;
优化操作判断模块,用于将所述查询条件、数据库表的表名和所述字段与预设优化条件进行匹配,根据匹配结果判断是否进行等值连接的优化操作;
等值连接计算模块,用于若进行等值连接的优化操作,则根据数据扫描计划节点生成连接计划节点,根据所述数据扫描计划节点和所述连接计划节点生成优化后的执行计划,所述执行计划用于并行地对所述数据库表进行等值连接计算,得到等值连接计算结果。
9.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据库表等值连接的优化方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-7中任一所述的数据库表等值连接的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010142573.3A CN111352950B (zh) | 2020-03-04 | 2020-03-04 | 数据库表等值连接的优化方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010142573.3A CN111352950B (zh) | 2020-03-04 | 2020-03-04 | 数据库表等值连接的优化方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352950A true CN111352950A (zh) | 2020-06-30 |
CN111352950B CN111352950B (zh) | 2023-05-16 |
Family
ID=71197390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010142573.3A Active CN111352950B (zh) | 2020-03-04 | 2020-03-04 | 数据库表等值连接的优化方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352950B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416884A (zh) * | 2022-03-28 | 2022-04-29 | 北京奥星贝斯科技有限公司 | 连接分区表的方法和装置 |
CN114860764A (zh) * | 2022-05-26 | 2022-08-05 | 上海爱可生信息技术股份有限公司 | 分布式数据库查询的优化方法、系统及电子设备 |
CN114969110A (zh) * | 2022-07-21 | 2022-08-30 | 阿里巴巴(中国)有限公司 | 查询方法和装置 |
CN115114325A (zh) * | 2022-06-24 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 数据查询方法、装置、电子设备以及存储介质 |
CN115470231A (zh) * | 2022-09-22 | 2022-12-13 | 宁夏大学 | 基于数据剪枝提升等值连接查询性能的方法、装置及设备 |
WO2023000994A1 (zh) * | 2021-07-23 | 2023-01-26 | 北京奥星贝斯科技有限公司 | 层次查询方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060218123A1 (en) * | 2005-03-28 | 2006-09-28 | Sybase, Inc. | System and Methodology for Parallel Query Optimization Using Semantic-Based Partitioning |
CN108182192A (zh) * | 2016-12-08 | 2018-06-19 | 南京航空航天大学 | 一种基于分布式数据库的半连接查询计划选择算法 |
CN109791543A (zh) * | 2016-09-30 | 2019-05-21 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
-
2020
- 2020-03-04 CN CN202010142573.3A patent/CN111352950B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060218123A1 (en) * | 2005-03-28 | 2006-09-28 | Sybase, Inc. | System and Methodology for Parallel Query Optimization Using Semantic-Based Partitioning |
CN109791543A (zh) * | 2016-09-30 | 2019-05-21 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
CN108182192A (zh) * | 2016-12-08 | 2018-06-19 | 南京航空航天大学 | 一种基于分布式数据库的半连接查询计划选择算法 |
Non-Patent Citations (1)
Title |
---|
李瑞;: "数据库查询优化技术的研究与实现" * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023000994A1 (zh) * | 2021-07-23 | 2023-01-26 | 北京奥星贝斯科技有限公司 | 层次查询方法及装置 |
CN114416884A (zh) * | 2022-03-28 | 2022-04-29 | 北京奥星贝斯科技有限公司 | 连接分区表的方法和装置 |
CN114416884B (zh) * | 2022-03-28 | 2022-06-14 | 北京奥星贝斯科技有限公司 | 连接分区表的方法和装置 |
CN114860764A (zh) * | 2022-05-26 | 2022-08-05 | 上海爱可生信息技术股份有限公司 | 分布式数据库查询的优化方法、系统及电子设备 |
CN115114325A (zh) * | 2022-06-24 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 数据查询方法、装置、电子设备以及存储介质 |
CN114969110A (zh) * | 2022-07-21 | 2022-08-30 | 阿里巴巴(中国)有限公司 | 查询方法和装置 |
CN114969110B (zh) * | 2022-07-21 | 2022-10-21 | 阿里巴巴(中国)有限公司 | 查询方法和装置 |
CN115470231A (zh) * | 2022-09-22 | 2022-12-13 | 宁夏大学 | 基于数据剪枝提升等值连接查询性能的方法、装置及设备 |
CN115470231B (zh) * | 2022-09-22 | 2024-07-19 | 宁夏大学 | 基于数据剪枝提升等值连接查询性能的方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111352950B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352950B (zh) | 数据库表等值连接的优化方法、装置、服务器及存储介质 | |
CN112905595A (zh) | 一种数据查询方法、装置及计算机可读存储介质 | |
CN103678609B (zh) | 一种基于分布式关系‑对象映射处理的大数据查询的方法 | |
US10769147B2 (en) | Batch data query method and apparatus | |
EP3254191B1 (en) | Apparatus and method for using parameterized intermediate representation for just-in-time compilation in database query execution engine | |
CN109815283B (zh) | 一种异构数据源可视化查询方法 | |
CN108628986A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN112883095A (zh) | 多源异构数据汇聚的方法、系统、设备以及存储介质 | |
Becher et al. | A co-design approach for accelerated SQL query processing via FPGA-based data filtering | |
CN112100198B (zh) | 数据库sql语句优化方法、装置、设备及存储介质 | |
US10795889B2 (en) | Query path with aggregate projection | |
Lima et al. | Parallel OLAP query processing in database clusters with data replication | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
Liu et al. | Parallel bulk-loading of spatial data with MapReduce: An R-tree case | |
Naacke et al. | SPARQL query processing with Apache Spark | |
US9052956B2 (en) | Selecting execution environments | |
CN110297858B (zh) | 执行计划的优化方法、装置、计算机设备和存储介质 | |
CN116401277A (zh) | 数据处理方法、装置、系统、设备及介质 | |
Wang et al. | RDF partitioning for scalable SPARQL query processing | |
US9262492B2 (en) | Dividing and combining operations | |
Xie et al. | Cool, a COhort OnLine analytical processing system | |
CN110413642B (zh) | 一种应用无感知的分片数据库解析及优化方法 | |
CN114138814A (zh) | 一种数据查询方法、装置、平台和存储介质 | |
Werner et al. | Automated composition and execution of hardware-accelerated operator graphs | |
CN113742346A (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 |