【技术实现步骤摘要】
一种数据库单表分组扫描方法
[0001]本专利技术涉及数据库
,特别涉及一种数据库单表分组扫描方法
。
技术介绍
[0002]随着大数据时代的到来,存储在数据库中的数据量越来越大,按现有的扫描方式,在表数据达到
TB
时,至少需要
125,000,000
个数据页面,假定每个页面存储了
20
行数据,那么服务器需要顺序迭代
125,000,000*20
次才能将所有行全部返回,为了能够快速读取数据,通常需要采用并行的方案,但是由于单表数据无法分区获取,只能采用多个
Limit offset
的方式进行分批获取,而
limit offset
在获取后面的数据时,要先按行定位到开始位置需要扫描前面的每个数据页面,产生了大量损耗,影响并行效果
。
技术实现思路
[0003]为了解决上述问题,本专利技术设计了一种数据库单表分组扫描方法,可以对表中数据进行跳跃式的分组访问,为应用并行获取数据库单表数据提供基础支撑
。
[0004]为实现以上目的,本专利技术的技术方案为:一种数据库单表分组扫描方法,包括以下步骤:步骤
S1
:在
SQL
语句中提供分组数量和当前要获取的分组序号;步骤
S2
:启动分组扫描
begin
阶段,得到当前
PI
页面;步骤
S3
:启动分组扫描
nex
【技术保护点】
【技术特征摘要】
1.
一种数据库单表分组扫描方法,其特征在于,包括以下步骤:步骤
S1
:在
SQL
语句中提供分组数量和当前要获取的分组序号;步骤
S2
:启动分组扫描
begin
阶段,得到当前
PI
页面;步骤
S3
:启动分组扫描
next
阶段,从分组扫描获取
PFS
页面;步骤
S4
:分组扫描返回有效
PFS
页面则执行步骤
S6
,否则执行步骤
S5
;步骤
S5
:分组扫描已经结束,结束堆扫描;步骤
S6
:当前
PFS
页面是否存在下一个有效范围,是则继续,否则继续执行步骤
S3
;步骤
S7
:获取有效范围,解析8个页面上的所有行,并将所有行放到待发送缓冲区;步骤
S8
:将缓冲区中的数据发送给前端,并回到
S6。2.
如权利要求1所述的一种数据库单表分组扫描方法,其特征在于:所述
SQL
语句的语法如下:
DIRECTEXTENTcolumnFROMtGROUPcountByn
;其中,
DIRECTEXTENT
:表示基于
EXTENT
返回数据,区别于
SELECT
语句,
column
:表示需要获取的投影列,
FROMt
:获取
t
表中的数据,
GROUPcount
:
GROUP
关键字表示分组,分成
count
组,
Byn
:
By
表示获取第
n
组,使用
PFS
页面号与
count
取模,如果值等于
n
则说明需要获取该页面,否则不获取本
PFS
页
。3.
如权利要求2所述的一种数据库单表分组扫描方法,其特征在于:所述
SQL
语句的语法预期结果为:
DIRECTEXTENTcolumnFROMtGROUP2By0;
合并上
DIRECTEXTENTcolumnFROMtGROUP2By1;
数据结果等于
SELECTCOLUMNfromt。4.
如权利要求1所述的一种数据库单表分组扫描方法,其特征在于:所述分组扫描
begin
阶段包括以下步骤:步骤
S21
:根据表名字定位到堆根页面,设置根页面为当前页面;步骤
S22
:获取当前页面管理的第一个子项页面,判断子项页面类型是否为
PFS
页面,如果是则执行步骤
S24
,如果不是则执行步骤
S23
...
【专利技术属性】
技术研发人员:李彬,何清法,刘碧楠,周丽霞,马岳,刘爱莉,顾云苏,吴嵩,赵冬伟,胡薇,
申请(专利权)人:天津神舟通用数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。