CN110321388A - 一种基于Greenplum的快速排序查询方法及系统 - Google Patents

一种基于Greenplum的快速排序查询方法及系统 Download PDF

Info

Publication number
CN110321388A
CN110321388A CN201910141280.0A CN201910141280A CN110321388A CN 110321388 A CN110321388 A CN 110321388A CN 201910141280 A CN201910141280 A CN 201910141280A CN 110321388 A CN110321388 A CN 110321388A
Authority
CN
China
Prior art keywords
subregion
greenplum
segment
limitnode
node
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
CN201910141280.0A
Other languages
English (en)
Other versions
CN110321388B (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.)
Nanwei North Technology Group Co ltd
Original Assignee
Linewell Software 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 Linewell Software Co Ltd filed Critical Linewell Software Co Ltd
Priority to CN201910141280.0A priority Critical patent/CN110321388B/zh
Publication of CN110321388A publication Critical patent/CN110321388A/zh
Application granted granted Critical
Publication of CN110321388B publication Critical patent/CN110321388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于大数据查询技术领域,公开了一种基于Greenplum的快速排序查询方法及系统,由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据所述语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit操作下发到Segment上执行;对分区按分区键值进行排序;按顺序依次扫描分区的记录数,达到Limit限制的记录数时直接返回。本发明通过预先对分区的排序,在查询时由邻近的分区开始查询,只对少量几个需要排序的分区进行排序和查询,减少大量不必要的分区数据读取,大幅提升条件查询的性能。

Description

一种基于Greenplum的快速排序查询方法及系统
技术领域
本发明属于大数据查询技术领域,尤其涉及一种基于Greenplum的快速排 序查询方法及系统。
背景技术
目前,业内常用的现有技术是这样的:
Greenplum是一个关系型数据库集群,它实际上是由多个独立的数据库服务 组合成的逻辑数据库。与Oracle RAC的Shared-Everything架构不同,Greenplum 采用Shared-Nothing架构,整个集群由多个数据节点(Segment Host)和控制 节点(Master Host)组成,其中每个数据节点上可以运行多个数据库,也称为 多个实例。
控制节点(Master Host)接收并解析SQL请求并生成相应的抽象语法树, 根据该语法树生成执行计划树,并把执行计划树下发到各个数据节点(Segment Host)上,由数据节点的每个数据库实例来遍历执行计划树并执行相应操作, 最后把结果返回并汇总到控制节点上,再控制节点把结果返回给SQL客户端。
当表数据按时间分区时,用户执行一条order by+limit查询,Greenplum 会将符合条件的分区列出并读取这些分区中的数据,分部读取完成后再统一进 行排序,最终返回排序后的第一页数据。
综上所述,现有技术存在的问题是:
现有技术在执行基于Greenplum分区键值的Order by加Limit的查询时,Greenplum原始的计划方式在实际生产环境中查询效率低,对已经分区键未能有 效利用,总数n个分区在实际环境中第一个分区往往已经满足了limit条件, 其余n-1个分区的数据并不需要读取。
解决上述技术问题的难度和意义:
难度上:源码量大(总代码量两百六十多万行),架构复杂,文档稀少。
意义:本发明提升查询效率,提高生产力。
发明内容
针对现有技术存在的问题,本发明提供了一种基于Greenplum的快速排序 查询方法及系统。本发明通过预先按分区键值对分区进行排序,排除多数不必 要的分区,减少对大量冗余记录的查询和排序操作,实现数据的快速查询。
本发明是这样实现的,一种基于Greenplum的快速排序查询方法,所述基 于Greenplum的快速排序查询方法包括:
由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据所述语 法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit操 作下发到Segment上执行;
进行修改PartitionSelectorNode,对分区按分区键值进行排序;
进行修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到 Limit限制的记录数时直接返回。
进一步,所述基于Greenplum的快速排序查询方法具体包括:
步骤一、Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执 行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把 复制后的LimitNode插入到MotionNode下,MotionNode下的执行计划子树被 下发到Segment上执行;
步骤二、在Master节点上把分区的键值信息保存到执行计划状态 PlannedStmt结构体中,Segment节点上没有分区的键值信息,保存到 PlannedStmt结构体下发给Segment节点;
步骤三、Segment节点从Master下发的PlannedStmt结构体获取分区键值 信息被保存到运行时状态EState结构体上,EState被所有执行计划树的子节 点访问到;
步骤四、Segment在执行LimitNode的初始化时,保存Limit的个数到EState 结构体上;
步骤五、Segment在执行SortNode的初始化时,保存排序的键值和排序方 式到EState结构体上;
步骤六、Segment在执行PartitionSelectorNode时,通过EState结构体 上的Limit的个数判断是否有进行Limit操作;如果有,再判断EState结构体 中的分区键值和排序键值是否一致;如果一致,对分区按照EState保存的排序 方式进行排序,再将有序的分区列表返回DynamicTableScanNode节点;
步骤七、DynamicTableScanNode接收PartitionSelectorNode返回的有序 的分区列表,依次对分区进行扫描;
步骤八、执行SortNode,把DynamicTableScanNode返回的节点进行排序 并传入下一个LimitNode;
步骤九、执行LimitNode,读取SortNode排序后的前Limit个数个节点作为Segment的查询结果返回给Master节点;
步骤十、在Master上执行MotionNode对Segment返回的记录进行汇聚, 然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端。
进一步,步骤七,进一步包括:设置一个统计变量count,每扫描一条记录 则count加一,当扫描完一个分区时,比较count是否大于保存在EState的Limit 个数,如果小于Limit个数,继续扫描下一个分区并统计;如果大于或等于Limit 个数,则直接返回扫描的记录数给SortNode,不再扫描剩余的分区。
本发明的另一目的在于提供一种计算机程序,所述计算机程序用于实现所 述的基于Greenplum的快速排序查询方法的计算机程序。
本发明的另一目的在于提供一种终端,所述终端至少搭载所述基于Greenplum的快速排序查询方法的控制器。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在 计算机上运行时,使得计算机执行所述的基于Greenplum的快速排序查询方法。
本发明的另一目的在于提供一种实现所述基于Greenplum的快速排序查询 方法的基于Greenplum的快速排序查询系统,所述基于Greenplum的快速排序 查询系统包括:
执行计划树判断模块,用于Greenplum接收并解析SQL请求并生成相应的 执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的 话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode 下的执行计划子树被下发到Segment上执行;
执行计划状态PlannedStmt结构体保存模块,用于在Master节点上把分区 的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没有 分区的键值信息,保存到PlannedStmt结构体下发给Segment节点;
运行时状态EState结构体保存模块,用于Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上, EState被所有执行计划树的子节点访问到;
LimitNode初始化模块,用于Segment在执行LimitNode的初始化时,保存 Limit的个数到EState结构体上;
SortNode的初始化模块,用于Segment在执行SortNode的初始化时,保存排 序的键值和排序方式到EState结构体上;
Limit操作模块,用于Segment在执行PartitionSelectorNode时,通过 EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断 EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState 保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节 点;
分区扫描模块,用于DynamicTableScanNode接收PartitionSelectorNode 返回的有序的分区列表,依次对分区进行扫描;
SortNode执行模块,用于执行SortNode,把DynamicTableScanNode返回 的节点进行排序并传入下一个LimitNode;
LimitNode执行模块,用于执行LimitNode,读取SortNode排序后的前Limit 个数个节点作为Segment的查询结果返回给Master节点;
记录和汇聚模块,用于在Master上执行MotionNode对Segment返回的记 录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客户 端;
查询客户端,用于显示排序查询结果。
本发明的另一目的在于提供一种大数据查询平台,所述大数据查询平台至 少搭载所述的基于Greenplum的快速排序查询系统。
本发明的另一目的在于提供一种金融行业大数据查询设备,所述金融行业 大数据查询设备至少搭载所述的基于Greenplum的快速排序查询系统。
本发明的另一目的在于提供一种股市行业大数据查询设备,所述股市行业 大数据查询设备至少搭载所述的基于Greenplum的快速排序查询系统。
综上所述,本发明的优点及积极效果为:
本发明通过预先对分区的排序,在查询时由邻近的分区开始查询,只对少量 几个需要排序的分区进行排序和查询,减少大量不必要的分区数据读取,大幅 提升条件查询的性能。
本发明由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据 该语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit 操作下发到Segment上执行,修改PartitionSelectorNode,对分区按分区键值 进行排序,修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到 Limit限制的记录数时就直接返回,从而达到减少对大量冗余记录的查询和排序 操作,实现数据的快速查询。
在仿真实验中,本发明创建一张分区表ebike_pass_redord,表中除其它数 据列外有时间类型字段pass_time,以pass_time为分区的键值按时间2017年1 月1日至2017年12月31日分为365个分区,向表中插入3千万条记录,分布 在365个分区中,其中落在2017年1月1日这个分区上的记录数为1万条。执 行查询:select id,pass_time from ebike_pass_redord order by pass_time limit 10。
以下是在实际环境中执行的效果,查询耗时用红框标出。
原版:耗时18秒
优化后:耗时0.1秒
从实际测试使用的结果可看出,例中的查询语句只需读取最近的第一个分 区中的数据即可返回给用户,查询效率提升180倍。
附图说明
图1是本发明实施例提供的基于Greenplum的快速排序查询方法流程图。
图2是本发明实施例提供的基于Greenplum的快速排序查询系统示意图。
图中:1、执行计划树判断模块;2、执行计划状态PlannedStmt结构体保 存模块;3、运行时状态EState结构体保存模块;4、LimitNode初始化模块;5、 SortNode的初始化模块;6、Limit操作模块;7、分区扫描模块;8、SortNode 执行模块;9、LimitNode执行模块;10、记录和汇聚模块;11、查询客户端。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例, 对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以 解释本发明,并不用于限定本发明。
本发明通过Greenplum接收并解析SQL请求生成相应的查询计划,通过预 先按分区键值对分区进行排序,排除多数不必要的分区,减少对大量冗余记录 的查询和排序操作,实现数据的快速查询。
图1,本发明实施例提供的基于Greenplum的快速排序查询方法,为一种基 于Greenplum分区键值的Order by加Limit的快速查询方法,由Greenplum接 收并解析SQL请求并生成相应的抽象语法树,根据该语法树生成查询执行计划 树,通过修改执行计划树,新增LimitNode,把Limit操作下发到Segment上执 行,修改PartitionSelectorNode,对分区按分区键值进行排序,修改 DynamicTableScanNode,按顺序依次扫描分区的记录数,达到Limit限制的记 录数时就直接返回。
具体包括以下步骤:
步骤1、Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执 行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把 复制后的LimitNode插入到MotionNode下,因为MotionNode下的执行计划子 树才会被下发到Segment上执行;
步骤2、在Master节点上把分区的键值信息保存到执行计划状态 PlannedStmt结构体中,因为Segment节点上是没有分区的键值信息,所以要保 存到PlannedStmt结构体下发给Segment节点;
步骤3、Segment节点从Master下发的PlannedStmt结构体获取分区键值 信息被保存到运行时状态EState结构体上,因为EState可以被所有执行计划 树的子节点访问到。
步骤4、Segment在执行LimitNode的初始化的时候,保存Limit的个数到 EState结构体上。
步骤5、Segment在执行SortNode的初始化的时候,保存排序的键值和排 序方式(升序或降序)到EState结构体上。
步骤6、Segment在执行PartitionSelectorNode的时候,首先通过EState 结构体上的Limit的个数判断是否有进行Limit操作,如果有的话再判断EState 结构体中的分区键值和排序键值是否一致。如果一致的话就对分区按照EState 保存的排序方式进行排序,然后将有序的分区列表返回DynamicTableScanNode 节点。
步骤7、DynamicTableScanNode接收PartitionSelectorNode返回的有序 的分区列表,依次对分区进行扫描,本发明设置一个统计变量count,每扫描一 条记录则count加一,当扫描完一个分区的时候本发明比较一下count是否大 于保存在EState的Limit个数,如果小于Limit个数本发明就继续扫描下一个 分区并统计,如果大于或等于Limit个数则本发明直接返回扫描的记录数给 SortNode,不再扫描剩余的分区。
步骤8、执行SortNode,把DynamicTableScanNode返回的节点进行排序 并传入下一个LimitNode。
步骤9、执行LimitNode,读取SortNode排序后的前Limit个数个节点作为 Segment的查询结果返回给Master节点。
步骤10、在Master上执行MotionNode对Segment返回的记过进行汇聚, 然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端。
如图2,本发明实施例提供的基于Greenplum的快速排序查询系统包括:
执行计划树判断模块1,用于Greenplum接收并解析SQL请求并生成相应的 执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的 话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode 下的执行计划子树被下发到Segment上执行。
执行计划状态PlannedStmt结构体保存模块2,用于在Master节点上把分 区的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没 有分区的键值信息,保存到PlannedStmt结构体下发给Segment节点。
运行时状态EState结构体保存模块3,用于Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上, EState被所有执行计划树的子节点访问到。
LimitNode初始化模块4,用于Segment在执行LimitNode的初始化时,保 存Limit的个数到EState结构体上。
SortNode的初始化模块5,用于Segment在执行SortNode的初始化时,保存 排序的键值和排序方式到EState结构体上。
Limit操作模块6,用于Segment在执行PartitionSelectorNode时,通过 EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断 EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState 保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节 点。
分区扫描模块7,用于DynamicTableScanNode接收PartitionSelectorNode 返回的有序的分区列表,依次对分区进行扫描;。
SortNode执行模块8,用于执行SortNode,把DynamicTableScanNode返回的节 点进行排序并传入下一个LimitNode。
LimitNode执行模块9,用于执行LimitNode,读取SortNode排序后的前 Limit个数个节点作为Segment的查询结果返回给Master节点。
记录和汇聚模块10,用于在Master上执行MotionNode对Segment返回的 记录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客 户端。
查询客户端11,用于显示排序查询结果。
下面结合具体实施例对本发明作进一步描述。
实施例:
假设有一张分区表test,表中有2列,列名分别为id和create_date,以create_date为分区的键值按时间2017年1月1日至2017年12月31日分为 365个分区,向表中插入3千万条记录,分布在365个分区中,其中落在2017年 1月1日这个分区上的记录数为1万条。
当本发明执行以下SQL语句时,优化的查询流程将取代原流程:
select*from test order by create_date limit 10;
具体处理流程的比较如图1所示,本发明揭示了一种基于Greenplum分区 键值的Order by加Limit的快速查询方法,其包括以下步骤:
步骤1、用户提交SQL请求到Master节点,Master节点生成执行计划树并 下发给Segment节点执行;
步骤2、Segment从执行计划树的叶子节点开始遍历执行。所以从PartitionSelectorNode开始执行,先选择满足条件的分区,然后对满足条件的 分区进行排序,由于本例中本发明没有限制条件,所有会对365个分区都进行 排序并返回给DynamicTableScanNode。
步骤3、执行DynamicTableScanNode、按照分区顺序依次扫描分区的记录 数,每次扫描完分区后统计扫描的记录数,如果累计扫描的记录数超过Limit 限制的记录数,则不继续扫描,直接返回累计扫描的记录。因为落在第一个分 区2017年1月1日的记录数基友1万条,所以只扫描第一个分区就停止扫描并 返回1万条记录给SortNode进行排序,原来的处理流程中这里要返回3千万条 记录给SortNode进行排序,相差巨大。
步骤4、执行SortNode对1万条记录进行排序,并返回1万条有序记录给LimitNode。
步骤5、执行LimitNode,对返回的1万条记录进行Limit操作,这里segment 只返回排序的前10条记录给Master。
步骤6、在Master上执行MotionNode,从每个segment获取10条有序记 录,汇聚成有序的记录返传入LimitNode;
步骤7、在Master上执行LimitNode,对传入的segment数量乘以10条有 序记录进行Limit操作,返回前10条记录给查询用户。
本发明由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据 该语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit 操作下发到Segment上执行,修改PartitionSelectorNode,对分区按分区键值 进行排序,修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到 Limit限制的记录数时就直接返回,从而达到减少对大量冗余记录的查询和排序 操作,实现数据的快速查询。
下面结合仿真实验对本发明作进一步描述。
创建一张分区表ebike_pass_redord,表中除其它数据列外有时间类型字段pass_time,以pass_time为分区的键值按时间2017年1月1日至2017年12月 31日分为365个分区,向表中插入3千万条记录,分布在365个分区中,其中落 在2017年1月1日这个分区上的记录数为1万条。执行查询:
select id,pass_time from ebike_pass_redord order by pass_time limit10;
以下是在实际环境中执行的效果,查询耗时用红框标出。
原版:耗时18秒
优化后:耗时0.1秒
从实际测试使用的结果可看出,例中的查询语句只需读取最近的第一个分 区中的数据即可返回给用户,查询效率提升180倍。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组 合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程 序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指 令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可 以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算 机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向 另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、 计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或 无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据 中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用 介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。 所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、 或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。

Claims (10)

1.一种基于Greenplum的快速排序查询方法,其特征在于,所述基于Greenplum的快速排序查询方法包括:
由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据所述语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit操作下发到Segment上执行;
进行修改PartitionSelectorNode,对分区按分区键值进行排序;
进行修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到Limit限制的记录数时直接返回。
2.如权利要求1所述的基于Greenplum的快速排序查询方法,其特征在于,所述基于Greenplum的快速排序查询方法具体包括:
步骤一、Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode下的执行计划子树被下发到Segment上执行;
步骤二、在Master节点上把分区的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没有分区的键值信息,保存到PlannedStmt结构体下发给Segment节点;
步骤三、Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上,EState被所有执行计划树的子节点访问到;
步骤四、Segment在执行LimitNode的初始化时,保存Limit的个数到EState结构体上;
步骤五、Segment在执行SortNode的初始化时,保存排序的键值和排序方式到EState结构体上;
步骤六、Segment在执行PartitionSelectorNode时,通过EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节点;
步骤七、DynamicTableScanNode接收PartitionSelectorNode返回的有序的分区列表,依次对分区进行扫描;
步骤八、执行SortNode,把DynamicTableScanNode返回的节点进行排序并传入下一个LimitNode;
步骤九、执行LimitNode,读取SortNode排序后的前Limit个数个节点作为Segment的查询结果返回给Master节点;
步骤十、在Master上执行MotionNode对Segment返回的记录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端。
3.如权利要求2所述的基于Greenplum的快速排序查询方法,其特征在于,
步骤七,进一步包括:设置一个统计变量count,每扫描一条记录则count加一,当扫描完一个分区时,比较count是否大于保存在EState的Limit个数,如果小于Limit个数,继续扫描下一个分区并统计;如果大于或等于Limit个数,则直接返回扫描的记录数给SortNode,不再扫描剩余的分区。
4.一种计算机程序,其特征在于,所述计算机程序用于实现权利要求1~3任意一项所述的基于Greenplum的快速排序查询方法的计算机程序。
5.一种终端,其特征在于,所述终端至少搭载实现权利要求1~3任意一项所述基于Greenplum的快速排序查询方法的控制器。
6.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-3任意一项所述的基于Greenplum的快速排序查询方法。
7.一种实现权利要求1所述基于Greenplum的快速排序查询方法的基于Greenplum的快速排序查询系统,其特征在于,所述基于Greenplum的快速排序查询系统包括:
执行计划树判断模块,用于Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode下的执行计划子树被下发到Segment上执行;
执行计划状态PlannedStmt结构体保存模块,用于在Master节点上把分区的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没有分区的键值信息,保存到PlannedStmt结构体下发给Segment节点;
运行时状态EState结构体保存模块,用于Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上,EState被所有执行计划树的子节点访问到;
LimitNode初始化模块,用于Segment在执行LimitNode的初始化时,保存Limit的个数到EState结构体上;
SortNode的初始化模块,用于Segment在执行SortNode的初始化时,保存排序的键值和排序方式到EState结构体上;
Limit操作模块,用于Segment在执行PartitionSelectorNode时,通过EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节点;
分区扫描模块,用于DynamicTableScanNode接收PartitionSelectorNode返回的有序的分区列表,依次对分区进行扫描;
SortNode执行模块,用于执行SortNode,把DynamicTableScanNode返回的节点进行排序并传入下一个LimitNode;
LimitNode执行模块,用于执行LimitNode,读取SortNode排序后的前Limit个数个节点作为Segment的查询结果返回给Master节点;
记录和汇聚模块,用于在Master上执行MotionNode对Segment返回的记录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端;
查询客户端,用于显示排序查询结果。
8.一种大数据查询平台,其特征在于,所述大数据查询平台至少搭载权利要求7所述的基于Greenplum的快速排序查询系统。
9.一种金融行业大数据查询设备,其特征在于,所述金融行业大数据查询设备至少搭载权利要求7所述的基于Greenplum的快速排序查询系统。
10.一种股市行业大数据查询设备,其特征在于,所述股市行业大数据查询设备至少搭载权利要求7所述的基于Greenplum的快速排序查询系统。
CN201910141280.0A 2019-02-26 2019-02-26 一种基于Greenplum的快速排序查询方法及系统 Active CN110321388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910141280.0A CN110321388B (zh) 2019-02-26 2019-02-26 一种基于Greenplum的快速排序查询方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910141280.0A CN110321388B (zh) 2019-02-26 2019-02-26 一种基于Greenplum的快速排序查询方法及系统

Publications (2)

Publication Number Publication Date
CN110321388A true CN110321388A (zh) 2019-10-11
CN110321388B CN110321388B (zh) 2021-07-02

Family

ID=68112718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910141280.0A Active CN110321388B (zh) 2019-02-26 2019-02-26 一种基于Greenplum的快速排序查询方法及系统

Country Status (1)

Country Link
CN (1) CN110321388B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597201A (zh) * 2020-04-23 2020-08-28 南京聚力云成电子科技有限公司 一种基于Greenplum大规模并行处理数据库的内容快速压缩方法
CN114745251A (zh) * 2022-03-16 2022-07-12 岳阳职业技术学院 一种计算机网络智能组网与优化系统和方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533406A (zh) * 2009-04-10 2009-09-16 北京锐安科技有限公司 一种海量数据查询方法
CN102521406A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 海量结构化数据复杂查询任务的分布式查询方法和系统
CN102521405A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 支持高速加载的海量结构化数据存储、查询方法和系统
CN103761080A (zh) * 2013-12-25 2014-04-30 中国农业大学 一种基于SQL的MapReduce作业生成方法及系统
CN104361049A (zh) * 2014-10-29 2015-02-18 中国建设银行股份有限公司 一种快速展现数据库数据的方法和系统
CN105302909A (zh) * 2015-11-06 2016-02-03 西安交大捷普网络科技有限公司 基于分区偏移计算的网络安全日志系统大数据检索方法
EP3093781A1 (en) * 2015-05-14 2016-11-16 Daniel Greenfield System and method for transforming and compressing genomics data
CN107133342A (zh) * 2017-05-16 2017-09-05 广州舜飞信息科技有限公司 一种IndexR实时数据分析库
CN107748766A (zh) * 2017-09-28 2018-03-02 南威软件股份有限公司 一种基于Presto和Elasticsearch的大数据快速查询方法
CN108170860A (zh) * 2018-01-22 2018-06-15 北京小度信息科技有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
US20190026759A1 (en) * 2017-07-18 2019-01-24 Jpmorgan Chase Bank, N.A. System and method for universal data modeling

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533406A (zh) * 2009-04-10 2009-09-16 北京锐安科技有限公司 一种海量数据查询方法
CN102521406A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 海量结构化数据复杂查询任务的分布式查询方法和系统
CN102521405A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 支持高速加载的海量结构化数据存储、查询方法和系统
CN103761080A (zh) * 2013-12-25 2014-04-30 中国农业大学 一种基于SQL的MapReduce作业生成方法及系统
CN104361049A (zh) * 2014-10-29 2015-02-18 中国建设银行股份有限公司 一种快速展现数据库数据的方法和系统
EP3093781A1 (en) * 2015-05-14 2016-11-16 Daniel Greenfield System and method for transforming and compressing genomics data
CN105302909A (zh) * 2015-11-06 2016-02-03 西安交大捷普网络科技有限公司 基于分区偏移计算的网络安全日志系统大数据检索方法
CN107133342A (zh) * 2017-05-16 2017-09-05 广州舜飞信息科技有限公司 一种IndexR实时数据分析库
US20190026759A1 (en) * 2017-07-18 2019-01-24 Jpmorgan Chase Bank, N.A. System and method for universal data modeling
CN107748766A (zh) * 2017-09-28 2018-03-02 南威软件股份有限公司 一种基于Presto和Elasticsearch的大数据快速查询方法
CN108170860A (zh) * 2018-01-22 2018-06-15 北京小度信息科技有限公司 数据查询方法、装置、电子设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴佩: "分布式数据库查询任务调度方法研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597201A (zh) * 2020-04-23 2020-08-28 南京聚力云成电子科技有限公司 一种基于Greenplum大规模并行处理数据库的内容快速压缩方法
CN114745251A (zh) * 2022-03-16 2022-07-12 岳阳职业技术学院 一种计算机网络智能组网与优化系统和方法

Also Published As

Publication number Publication date
CN110321388B (zh) 2021-07-02

Similar Documents

Publication Publication Date Title
US20200057672A1 (en) Dynamic tree determination for data processing
CA2562281C (en) Partial query caching
US6609131B1 (en) Parallel partition-wise joins
US6370522B1 (en) Method and mechanism for extending native optimization in a database system
US9996593B1 (en) Parallel processing framework
US8065323B2 (en) Offline validation of data in a database system for foreign key constraints
US8620888B2 (en) Partitioning in virtual columns
EP3014488B1 (en) Incremental maintenance of range-partitioned statistics for query optimization
US7761455B2 (en) Loading data from a vertical database table into a horizontal database table
US9946752B2 (en) Low-latency query processor
US20130318123A1 (en) Mechanism for co-located data placement in a parallel elastic database management system
US20020194157A1 (en) Partition pruning with composite partitioning
US11386086B2 (en) Permutation-based machine learning for database query optimization
US8352476B2 (en) Frequent itemset counting using clustered prefixes and index support
CN114631088A (zh) 自主分区数据库表
CN110321388A (zh) 一种基于Greenplum的快速排序查询方法及系统
CN111078705A (zh) 基于Spark平台建立数据索引方法及数据查询方法
US8229946B1 (en) Business rules application parallel processing system
US8655911B2 (en) Expressing frequent itemset counting operations
US8280869B1 (en) Sharing intermediate results
US9135302B2 (en) Query rewrite with a nested materialized view
US7720790B2 (en) Dynamic selection of frequent itemset counting technique
EP3436988B1 (en) "methods and systems for database optimisation"
Thapa Optimizing MongoDB performance with indexing: practices of indexing in MongoDB
CN116975098A (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
TR01 Transfer of patent right

Effective date of registration: 20230808

Address after: Room 05, 9th Floor, Building 3, Zone 4, No. 186 South Fourth Ring West Road, Fengtai District, Beijing, 100071

Patentee after: Nanwei North Technology Group Co.,Ltd.

Address before: No.2 Building, Nanwei Building, Fenghai Road, Fengze District, Quanzhou City, Fujian Province, 362000

Patentee before: LINEWELL SOFTWARE Co.,Ltd.

TR01 Transfer of patent right