一种基于SMP的索引并行扫描方法和系统技术方案

技术编号:40772946 阅读:22 留言:0更新日期:2024-03-25 20:20
本发明专利技术涉及数据库查询技术领域,提供一种基于SMP的索引并行扫描方法和系统,包括:通过主线程构建和初始化索引并行扫描的共享变量,启动参与并行扫描的子线程;采用首先进入并行扫描的子线程检索和读取索引页面中符合查询条件的索引元组,将检索结果返回至主线程;当每个子线程检索到符合查询条件的索引元组后,通过更新共享变量唤醒下一个子线程并行检索和读取下一个索引页面中符合查询条件的索引元组,将检索结果返回至主线程;主线程判断接收的检索结果是否为空,根据判断结果判定是否继续并行扫描。本发明专利技术基于SMP的索引并行扫描方法和系统,可以实现多线程扫描btree索引页面,提升查询效率。

【技术实现步骤摘要】

本专利技术涉及数据库查询,尤其涉及一种基于smp的索引并行扫描方法和系统。


技术介绍

1、opengauss数据库中,btree索引扫描是单线程执行的。首先二分查找到符合条件的索引元组的索引页面,将当前索引页面符合条件的索引元组返回,再根据索引元组查询到对应的堆元组返回,如果当前索引页面都符合条件,继续扫描下一个索引页面,直到无法找到符合条件的索引元组。单线程的扫描方式,不能有效地利用cpu、io,导致出现性能瓶颈。

2、opengauss支持smp并行技术,利用计算机的多核cpu架构实现多线程并行计算。smp并行技术实现算子级并行执行,有效地缩短了查询时间,提高了查询性能性能和资源利用率。smp并行执行增加了数据交互算子,实现多个工作线程之间的数据交互,确保查询的正确性和完整性。但是,opengauss的smp并行技术目前支持的扫描算子只有顺序扫描算子,这限制了并行查询时必须对查询的表执行全表扫描。当扫描的表数据量较大时,对于带条件且返回数据较少的查询,不能像索引扫描一样,通过索引元组直接查询堆元组,全表扫描效率较低。p>

3、因此,本文档来自技高网...

【技术保护点】

1.一种基于SMP的索引并行扫描方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于SMP的索引并行扫描方法,其特征在于,通过主线程构建和初始化索引并行扫描的共享变量,启动参与并行扫描的子线程,包括:

3.根据权利要求2所述的基于SMP的索引并行扫描方法,其特征在于,初始化申请内存的共享变量,包括:将共享变量中下一个索引页面编号初始化为0,将共享变量中索引并行扫描状态初始化为未开始状态,将保护共享变量的锁的计数值初始化为1。

4.根据权利要求1所述的基于SMP的索引并行扫描方法,其特征在于,采用首先进入并行扫描的子线程检索和读取索引页面中符合...

【技术特征摘要】

1.一种基于smp的索引并行扫描方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于smp的索引并行扫描方法,其特征在于,通过主线程构建和初始化索引并行扫描的共享变量,启动参与并行扫描的子线程,包括:

3.根据权利要求2所述的基于smp的索引并行扫描方法,其特征在于,初始化申请内存的共享变量,包括:将共享变量中下一个索引页面编号初始化为0,将共享变量中索引并行扫描状态初始化为未开始状态,将保护共享变量的锁的计数值初始化为1。

4.根据权利要求1所述的基于smp的索引并行扫描方法,其特征在于,采用首先进入并行扫描的子线程检索和读取索引页面中符合查询条件的索引元组,将检索结果返回至主线程,包括:

5.根据权利要求4所述的基于smp的索引并行扫描方法,其特征在于,采用首先进入并行扫描的子线程对共享变量上锁,将共享变量的索引并行扫描状态更新为推进状态,释放保护共享变量的锁,其他子线程进入睡眠等待,包括:通过将保护共享变量的锁的计数值设置为0,对共享变量上锁,将共享变量的索引并行扫描状态更新为推进状态,通过将保护共享变量的锁的计数设置为1,释放保护共享变量的锁。

6.根据权利要求4所述的基于smp的索引并行扫描方法,其特征在于,采用首先进入并行扫描的子线程根据查询条件,检索第一个索引页面中第一个符合查询条件的索引元组,将检索结果返回至主线程,包括:

【专利技术属性】
技术研发人员:陈雨纯刘惠
申请(专利权)人:广州海量数据库技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1