[发明专利]用于并行化SMP数据库中的基于散列的运算符的系统和方法有效
申请号: | 201680035441.2 | 申请日: | 2016-03-09 |
公开(公告)号: | CN107710200B | 公开(公告)日: | 2020-11-06 |
发明(设计)人: | 李怀智;张国根;杰森·扬·孙 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2453 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 并行 smp 数据库 中的 基于 运算 系统 方法 | ||
1.一种用于并行化对称多处理SMP数据库中执行基于散列的数据库操作的的方法,其特征在于,包括:
在所述SMP数据库处接收数据库查询;
创建多个执行工作线程以处理所述查询;以及
由所述多个执行工作线程根据数据库表构建哈希表,
所述数据表被根据所述SMP数据库的并行度DOP将划分为多个分区,所述多个执行工作线程中的每个执行工作线程被分配一个分区,或者所述数据库表包括多个扫描单元,所述多个执行工作线程中的每个执行工作线程被分配多个扫描单元,一个扫描单元是所述数据库表的多个数据页,所述哈希表由所述多个执行工作线程共享;
在所述数据库表被分区的情况下:所述每个执行工作线程扫描其对应分区并且将条目添加到所述哈希表;
在所述数据库表包括多个扫描单元的情况下:所述每个执行工作线程扫描未处理的扫描单元并且根据已扫描的扫描单元将条目添加到所述哈希表,所述每个执行工作线程扫描另一未处理的扫描单元直到整个数据库表被扫描;
其中,所述多个执行工作线程以并行方式执行扫描和添加操作。
2.根据权利要求1所述的方法,其特征在于,进一步包括通过所述执行工作线程使写入与哈希桶同步,以最小化用于所述哈希桶的所述执行工作线程之间的竞争。
3.根据权利要求1所述的方法,其特征在于,进一步包括利用无锁定算法来最小化用于哈希桶的所述执行工作线程之间的竞争。
4.根据权利要求1所述的方法,其特征在于,进一步包括:
根据所述数据库的并行度将所述哈希表分区成多个哈希表分区;
通过每个执行工作线程启动用于数据交换的对应生产者线程,所述生产者线程扫描来自所述数据库表的对应分区数据、散列所述对应分区数据以及将散列的对应分区数据发送到对应执行工作线程;以及
通过所述执行工作线程对所述散列的对应分区数据进行散列并且将数据条目添加到所述分区的哈希表的相应分区。
5.根据权利要求1所述的方法,其特征在于,进一步包括:
将外表分区;以及
将所述外表的每个分区分配到所述执行工作线程中的相应一个,每个执行工作线程扫描所述外表的对应分区以及针对所述哈希表探测来自所述外表的条目,所述每个执行工作线程与其它执行工作线程并行执行所述扫描和探测操作。
6.根据权利要求1所述的方法,其特征在于,进一步包括执行聚合操作,其中所述聚合操作包括:
将所述哈希表分区;
将第一分区分配到所述执行工作线程中的第一个执行工作线程;以及
当所述执行工作线程中的所述第一个执行工作线程完成处理所述第一分区时,将第二分区分配到所述执行工作线程中的所述第一个执行工作线程,其中在分配所述第二分区到所述执行工作线程中的所述第一个执行工作线程之前,所述第二分区尚未由所述执行工作线程中的一个处理。
7.根据权利要求1所述的方法,其特征在于,进一步包括:
将所述哈希表的桶分成组;
将所述组中的一个保存在存储器中;以及
将所述组中的其它组溢出到存储磁盘上。
8.根据权利要求7所述的方法,其特征在于,进一步包括:
与所述哈希表中的所有数据相比,确定所述哈希表的分区中的数据的百分比;以及
根据所述百分比并且根据所述存储器的大小选择组大小。
9.根据权利要求1所述的方法,其特征在于,进一步包括:
创建分区对,每一分区对包括内表的分区和外表的分区;
将所述哈希表的分区加载到存储器中,所述哈希表的所述分区由所述多个执行工作线程共享;以及
将所述外表的所述分区的多个部分中的每一个分配到所述多个执行工作线程中的相应一个,每个执行工作线程与其它执行工作线程并行地在所述外表的所述分区的所分配部分上执行连接操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680035441.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种管理资源对象的方法和系统
- 下一篇:感染管理和控制