CN102609493A - 一种基于列存储模型的连接顺序查询优化方法 - Google Patents
一种基于列存储模型的连接顺序查询优化方法 Download PDFInfo
- Publication number
- CN102609493A CN102609493A CN2012100199571A CN201210019957A CN102609493A CN 102609493 A CN102609493 A CN 102609493A CN 2012100199571 A CN2012100199571 A CN 2012100199571A CN 201210019957 A CN201210019957 A CN 201210019957A CN 102609493 A CN102609493 A CN 102609493A
- Authority
- CN
- China
- Prior art keywords
- tree
- query
- node
- inquiry
- tables
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于列存储模型的查询优化方法,其特征在于,步骤为:将用户输入的按关系表进行的查询;转换为按属性二元表进行的查询;初始的逻辑计划树生成;步为产生的逻辑查询计划树进行同表连接顺序优化;根据逻辑计划树中保存的连接信息为每个关系表登记连接关系集J;根据集合J判断关系表的类型,与多个表存在连接关系的为事实表,其余的为维表;单事实表连接顺序优化;多事实表连接顺序优化。本发明的优点是:根据列存储数据组织的特点和分析型查询需求的特征,提供一种基于列存储模型的数据查询优化方法,尽可能减少数据抽取数量以及每一步连接时的中间结果,以获得效率更高的查询执行策略。
Description
技术领域
本发明涉及一种基于列存储的连接顺序查询优化方法。
背景技术
随着信息时代数据量的***式增长,在海量数据分析处理的需求驱动下,数据仓库、数据挖掘、决策支持等分析型应用迅速发展。此类应用的特点是数据量大,查询密集,更加关注属性而非实体。列存储技术在物理上以列为单位对数据表进行拆分,将相同列的数据连续存储,在查询过程中只需读入查询相关列,避免不相干数据的读入,从而能够极大程度地提高分析型查询的效率。
但是,数据组织结构的改变使列存储***避免操作无关列数据的同时,带来了新的问题。由于上层逻辑数据模型与物理存储模型之间的不一致性,列存储***在查询执行过程中需要连接相关列,将其组织成最终的结果返回给用户。查询的相关列越多,列之间的连接操作也越复杂,将耗费不小的开销。查询优化在数据库领域一直占有重要的地位,然而现有列存储***多数通过优化底层数据组织结构或者建立辅助物理结构以适应上层查询,在早期查询优化阶段,很少考虑列存储的特性,因此难以保证能够获得“最佳”的优化结果。如何尽早根据列存储的特点进行查询优化,特别是对连接顺序进行优化,成为一项迫切需要解决的任务。
发明内容
本发明的目的是提供一种基于列存储模型的连接顺序查询优化方法,以获得在分析型应用下效率更高的查询执行计划。
为了达到上述本发明的目的,本发明的技术方案是提供了一种基于列存储模型的查询优化方法,其特征在于,步骤为:
步骤1、接收用户按关系表进行的SQL查询输入,记为select L from R1,...,Rm where∧/∨(A1,......An)。其中Ri为关系表,L是关系的属性集,A1,......,An是由与节点或者或节点连接的谓词;
步骤2:将上述SQL语句转换为按二元表进行的查询,记为select L from(K1×K2×......)where∧/∨(A1,......An),其中,Ki是查询相关的列;
步骤3、初始的逻辑查询计划树生成;
步骤4、为步骤3中产生的逻辑查询计划树进行同表连接顺序优化;
步骤5、根据逻辑查询计划树中保存的连接信息为每个关系表登记连接关系集J;
步骤6、根据关系集J判断关系表的类型,与多个表存在连接关系的为事实表,其余的为维表;
步骤7、单事实表连接顺序优化;
步骤8、多事实表连接顺序优化。
优选地,步骤3具体包括:
步骤3.1、利用关系代数等价变换规则将作用于同列的一元谓词进行下推并合并;
步骤3.2、将同表的一元谓词结点集通过与节点或者或节点自底向上依次连接成一棵左深逻辑查询子树,为每个表形成单表查询子树;
步骤3.3、将步骤3.2中产生的所有单表查询子树用JOIN结点自底向上依次连接成一棵完整的逻辑查询计划树,将不同表列之间的连接条件存储到相应JOIN结点中。
优选的,步骤4对逻辑查询树中的每棵单表查询子树进行连接顺序优化,具体为将产生最小中间结果的结点置于单表查询子树的最左下端。
优选的,步骤7具体为:对于每个事实表与其关联的维表,将事实表的逻辑查询子树下推到查询树底层,根据连接选择性从优到劣依次连接与该事实表连接的各维表的逻辑查询子树,形成一棵左深逻辑查询子树。
优选的,步骤8具体为:将步骤7中产生的左深逻辑查询子树用JOIN结点连接成一棵紧密树,并根据维表重复情况将相关单事实表查询树中的相应连接条件转移到JOIN结点中。
本发明的优点是:根据列存储数据组织的特点和分析型查询需求的特征,提供一种基于列存储模型的连接顺序查询优化方法,生成的查询计划能够尽可能减少数据抽取代价以及每一步连接时的中间结果,以获得效率更高的查询执行策略。
附图说明
图1为单表查询子树示意图;
图2为逻辑查询计划树示意图。
具体实施方式
为使本发明更明显易懂,兹以一优选实施例详细说明如下。
本发明提供了一种基于列存储模型的查询优化方法,其步骤为:
步骤1、接收用户按关系表进行的SQL查询输入,记为select L from R1,...,Rm where∧/∨(A1,......An)。其中Ri为关系表,L是关系的属性集,A1,......,An是由与节点或者或节点连接的谓词
步骤2:将上述SQL语句转换为按二元表进行的查询,记为select L from(K1×K2×......)where ∧/∨(A1,......An),其中,Ki是查询相关的列。若Ki和Kj是同一关系表R的属性,则称其为同表列。
步骤3、初始的逻辑计划树生成;
1)利用关系代数等价变换规则将作用于同列的一元谓词进行下推并合并。
2)将同表的一元谓词结点集通过与节点或者或节点自底向上依次连接成一棵左深逻辑查询子树,为每个表形成单表查询子树,如图1所示(图中一元谓词记为SEL())。
3)将上述步骤中产生的所有单表查询子树用JOIN结点自底向上依次连接成一棵完整的逻辑查询计划树,将不同表列之间的连接条件存储到相应JOIN结点中,如图2所示。
步骤4、同表连接顺序优化:为步骤3中产生的逻辑查询计划树中每棵单表查询子树进行AND连接顺序优化,其原则为:将选择性最优的结点交换到单表查询子树最左结点的位置;若该结点涉及的列没有建立聚簇索引,则将其与右兄弟结点交换,然后从建有聚簇索引的列中选择具有最优选择性的结点,将其与当前最左结点交换。给定单表查询子树,具体如下:
1)为其每个选择结点计算选择率;
2)找出选择率最小的叶子结点记为min_node;
3)从元数据读取min_node对应列的列值索引value_index情况;
4)如果min_node没有建立列值索引,则从有列值索引的列中找出选择率最小的结点记为index_min_node;
5)如果min_node建有列值索引或者index_min_node不存在,则将min_node与单表查询子树最底端左结点互换;
6)如果min_node没有建立列值索引并且index_min_node存在,则将min_node与单表查询子树最底端左结点的右兄弟互换,并将index_min_node与单表查询子树最底端左结点互换;
步骤5、根据步骤3逻辑计划树中JOIN结点保存的连接信息为每个关系表R登记连接关系集(以下简记为J(R))={R,D},D为与关系R有条件连接的关系表组成的集合;
步骤6、根据集合J(R)判断关系表R的类型,若D中存在多个关系表,则R为事实表,否则为维表;
步骤7、单事实表连接顺序优化:将事实表R对应的单表查询子树下推到查询树底层,根据连接选择性从优到劣依次连接各维表的单表查询子树。具体方法如下:
1)按连接代价从小到大将J(R)-{R}中各维表进行排序,将所对应的单表查询子树依次存入队列(以下简记为list);
2)初始化单事实表连接顺序优化后的左深查询树(以下简记为tree)=事实表R所对应的单表查询子树;
3)从list头部获取一棵单表查询子树,并与上一步中的tree分别作为右、左孩子结点,生成一棵新的子树,树的根为JOIN结点。
4)重复执行步骤5),直至list为空
5)输出tree,即为单事实表连接顺序优化后的左深查询树。
步骤8、多事实表连接顺序优化
1)按照步骤7中处理单事实表的方法为每个单事实表进行连接顺序优化,得到集合sub_tree[0,事实表总数-1];
2)初始化连接顺序优化后的查询树(以下简记为seq_tree)=sub_tree[0];
3)将seq_tree以及集合sub_tree的下一个元素分别作为左、右孩子结点,生成一棵子树,树的根为JOIN结点。
4)重复执行步骤4),直至sub_tree中元素取完,输出seq_tree,即为连接顺序优化后的查询树。
Claims (5)
1.一种基于列存储模型的查询优化方法,其特征在于,步骤为:
步骤1、接收用户按关系表进行的SQL查询输入,记为select L from R1,...,Rm where∧/∨(A1,......An)。其中Ri为关系表,L是关系的属性集,A1,......,An是由与节点或者或节点连接的谓词;
步骤2:将上述SQL语句转换为按二元表进行的查询,记为select L from(K1×K2×......)where ∧/∨(A1,......An),其中,Ki是查询相关的列;
步骤3、初始的逻辑查询计划树生成;
步骤4、为步骤3中产生的逻辑查询计划树进行同表连接顺序优化;
步骤5、根据逻辑查询计划树中保存的连接信息为每个关系表登记连接关系集J;
步骤6、根据关系集J判断关系表的类型,与多个表存在连接关系的为事实表,其余的为维表;
步骤7、单事实表连接顺序优化;
步骤8、多事实表连接顺序优化。
2.如权利要求1所述的一种基于列存储模型的查询优化方法,其特征在于:步骤3具体包括:
步骤3.1、利用关系代数等价变换规则将作用于同列的一元谓词进行下推并合并;
步骤3.2、将同表的一元谓词结点集通过与节点或者或节点自底向上依次连接成一棵左深逻辑查询子树,为每个表形成单表查询子树;
步骤3.3、将步骤3.2中产生的所有单表查询子树用JOIN结点自底向上依次连接成一棵完整的逻辑查询树,将不同表列之间的连接条件存储到相应JOIN结点中。
3.如权利要求1所述的一种基于列存储模型的查询优化方法,其特征在于:步骤4对逻辑查询树中的每棵单表查询子树进行连接顺序优化,具体为将产生最小中间结果的结点置于单表查询子树的最左下端。
4.如权利要求1所述的一种基于列存储模型的查询优化方法,其特征在于:步骤7具体为:对于每个事实表与其关联的维表,将事实表的逻辑查询子树下推到查询树底层,根据连接选择性从优到劣依次连接与该事实表连接的各维表的逻辑查询子树,形成一棵左深逻辑查询子树。
5.如权利要求1所述的一种基于列存储模型的查询优化方法,其特征在于:步骤8具体为:将步骤7中产生的左深逻辑查询子树用JOIN结点连接成一棵紧密树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210019957.1A CN102609493B (zh) | 2012-01-20 | 2012-01-20 | 一种基于列存储模型的连接顺序查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210019957.1A CN102609493B (zh) | 2012-01-20 | 2012-01-20 | 一种基于列存储模型的连接顺序查询优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609493A true CN102609493A (zh) | 2012-07-25 |
CN102609493B CN102609493B (zh) | 2014-07-02 |
Family
ID=46526865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210019957.1A Expired - Fee Related CN102609493B (zh) | 2012-01-20 | 2012-01-20 | 一种基于列存储模型的连接顺序查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609493B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729379A (zh) * | 2012-10-16 | 2014-04-16 | 阿里巴巴集团控股有限公司 | 结构化查询语言程序的计算方法、调整方法和服务器 |
CN104424258A (zh) * | 2013-08-28 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 多维数据查询的方法、查询服务器、列存储服务器及*** |
WO2015062035A1 (zh) * | 2013-10-31 | 2015-05-07 | 华为技术有限公司 | 一种列式数据库处理方法及装置 |
CN104657447A (zh) * | 2015-02-05 | 2015-05-27 | 上海达梦数据库有限公司 | 面向数据库管理***的计划树优化方法和装置 |
CN105677683A (zh) * | 2014-11-21 | 2016-06-15 | 华为技术有限公司 | 批量数据查询方法和装置 |
CN106446134A (zh) * | 2016-09-20 | 2017-02-22 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN107784032A (zh) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | 一种数据查询结果的渐进式输出方法、装置及*** |
CN108090224A (zh) * | 2018-01-05 | 2018-05-29 | 星环信息科技(上海)有限公司 | 一种级联连接方法及设备 |
CN108304499A (zh) * | 2018-01-15 | 2018-07-20 | 贵州易鲸捷信息技术有限公司 | 一种sql连接操作中谓词下推的方法、终端及介质 |
CN110909014A (zh) * | 2018-09-14 | 2020-03-24 | 阿里巴巴集团控股有限公司 | 优化建议生成及数据库查询方法、装置、设备及存储介质 |
CN112347104A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
CN114461677A (zh) * | 2022-04-12 | 2022-05-10 | 天津南大通用数据技术股份有限公司 | 一种基于选择度传递调整连接顺序的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101501687A (zh) * | 2006-06-01 | 2009-08-05 | 梅迪尔雷夫默斯特尔和雷夫通信与信息技术Oeg公司 | 控制关系数据库***的方法 |
-
2012
- 2012-01-20 CN CN201210019957.1A patent/CN102609493B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101501687A (zh) * | 2006-06-01 | 2009-08-05 | 梅迪尔雷夫默斯特尔和雷夫通信与信息技术Oeg公司 | 控制关系数据库***的方法 |
Non-Patent Citations (2)
Title |
---|
严秋玲等: "列存储数据仓库中启发式查询优化机制", 《计算机学报》, vol. 34, no. 10, 31 October 2011 (2011-10-31) * |
李静等: "列存储数据查询中的连接策略选择方法", 《JOURNAL OF FRONTIERS OF COMPUTER SCIENCE AND TECHNOLOGY》, 30 September 2010 (2010-09-30) * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729379A (zh) * | 2012-10-16 | 2014-04-16 | 阿里巴巴集团控股有限公司 | 结构化查询语言程序的计算方法、调整方法和服务器 |
CN104424258A (zh) * | 2013-08-28 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 多维数据查询的方法、查询服务器、列存储服务器及*** |
WO2015062035A1 (zh) * | 2013-10-31 | 2015-05-07 | 华为技术有限公司 | 一种列式数据库处理方法及装置 |
CN105264519A (zh) * | 2013-10-31 | 2016-01-20 | 华为技术有限公司 | 一种列式数据库处理方法及装置 |
CN105264519B (zh) * | 2013-10-31 | 2019-01-25 | 华为技术有限公司 | 一种列式数据库处理方法及装置 |
US10769147B2 (en) | 2014-11-21 | 2020-09-08 | Huawei Technologies Co., Ltd. | Batch data query method and apparatus |
CN105677683A (zh) * | 2014-11-21 | 2016-06-15 | 华为技术有限公司 | 批量数据查询方法和装置 |
CN105677683B (zh) * | 2014-11-21 | 2018-12-14 | 华为技术有限公司 | 批量数据查询方法和装置 |
CN104657447A (zh) * | 2015-02-05 | 2015-05-27 | 上海达梦数据库有限公司 | 面向数据库管理***的计划树优化方法和装置 |
CN104657447B (zh) * | 2015-02-05 | 2018-04-03 | 上海达梦数据库有限公司 | 面向数据库管理***的计划树优化方法和装置 |
CN107784032B (zh) * | 2016-08-31 | 2020-06-16 | 华为技术有限公司 | 一种数据查询结果的渐进式输出方法、装置及*** |
CN107784032A (zh) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | 一种数据查询结果的渐进式输出方法、装置及*** |
CN106446134A (zh) * | 2016-09-20 | 2017-02-22 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN106446134B (zh) * | 2016-09-20 | 2019-07-09 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN108090224B (zh) * | 2018-01-05 | 2020-05-08 | 星环信息科技(上海)有限公司 | 一种级联连接方法及设备 |
CN108090224A (zh) * | 2018-01-05 | 2018-05-29 | 星环信息科技(上海)有限公司 | 一种级联连接方法及设备 |
CN108304499A (zh) * | 2018-01-15 | 2018-07-20 | 贵州易鲸捷信息技术有限公司 | 一种sql连接操作中谓词下推的方法、终端及介质 |
CN108304499B (zh) * | 2018-01-15 | 2021-06-29 | 贵州易鲸捷信息技术有限公司 | 一种sql连接操作中谓词下推的方法、终端及介质 |
CN110909014A (zh) * | 2018-09-14 | 2020-03-24 | 阿里巴巴集团控股有限公司 | 优化建议生成及数据库查询方法、装置、设备及存储介质 |
CN112347104A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
CN112347104B (zh) * | 2020-11-06 | 2023-09-29 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
CN114461677A (zh) * | 2022-04-12 | 2022-05-10 | 天津南大通用数据技术股份有限公司 | 一种基于选择度传递调整连接顺序的方法 |
CN114461677B (zh) * | 2022-04-12 | 2022-07-26 | 天津南大通用数据技术股份有限公司 | 一种基于选择度传递调整连接顺序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102609493B (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609493B (zh) | 一种基于列存储模型的连接顺序查询优化方法 | |
US10846285B2 (en) | Materialization for data edge platform | |
CN107491561B (zh) | 一种基于本体的城市交通异构数据集成***及方法 | |
CN110321344B (zh) | 关联数据的信息查询方法、装置、计算机设备及存储介质 | |
US20190340291A1 (en) | Unified data organization for multi-model distributed databases | |
CN102521416B (zh) | 数据关联查询方法和数据关联查询装置 | |
JP6144700B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
CN103729392B (zh) | 查询优化方法及查询编译器 | |
CA3078018A1 (en) | Scalable analysis platform for semi-structured data | |
US20070294221A1 (en) | Designing record matching queries utilizing examples | |
US8825621B2 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
CA2893912C (en) | Systems and methods for optimizing data analysis | |
CN104123374A (zh) | 分布式数据库中聚合查询的方法及装置 | |
EP3274875A1 (en) | System and method for querying data sources | |
CN102236664B (zh) | 基于语义归一化的检索***、检索方法以及信息处理方法 | |
CN103942342A (zh) | 一种内存数据库oltp&olap并发查询优化方法 | |
CN103177094B (zh) | 一种物联网数据清洗方法 | |
CN102033954A (zh) | 关系数据库中可扩展标记语言文档全文检索查询索引方法 | |
CN102411580B (zh) | 可扩展标记语言文档的检索方法及装置 | |
CN110275920A (zh) | 数据查询方法、装置、电子设备及计算机可读存储介质 | |
CN110990402B (zh) | 由行存储到列存储的格式转化方法、查询方法及装置 | |
CN101710318A (zh) | 蔬菜供应链知识智能获取*** | |
CN112997200B (zh) | 用于编码分类的混合机器学习模型 | |
CN110019384A (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN112231321B (zh) | 一种Oracle二级索引及索引实时同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140702 Termination date: 20170120 |
|
CF01 | Termination of patent right due to non-payment of annual fee |