[发明专利]基于共享Cache多核处理器的数据库哈希连接方法无效
申请号: | 200910076926.8 | 申请日: | 2009-01-14 |
公开(公告)号: | CN101593202A | 公开(公告)日: | 2009-12-02 |
发明(设计)人: | 邓亚丹;景宁;熊伟;陈宏盛;陈荦;李军;陈荣国;周成虎;张明波;程昌秀;谢炯;卢战伟;冯登国;徐震;张敏;陈驰 | 申请(专利权)人: | 中国人民解放军国防科学技术大学;中国科学院地理科学与资源研究所;中国科学院软件研究所 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/08 |
代理公司: | 北京科迪生专利代理有限责任公司 | 代理人: | 李新华;徐开翟 |
地址: | 410073湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 共享 cache 多核 处理器 数据库 连接 方法 | ||
1.基于共享Cache多核处理器的数据库哈希连接方法,其特征在于:包括连接表划分 和聚集连接两个步骤;
1)连接表划分:对参与连接的两个表进行划分,首先由临时表生成模块生成临时表, 然后由临时表划分模块对临时表进行划分,生成两个聚集表,具体步骤如下:
A、获取表中所有页面的页面号集合,然后遍历该页面号集合,通过数据库页面缓存 模块的哈希表映射函数计算页面映射至哈希表中的具体位置,判断该页面当前是否在页面缓 存中,遍历完该页面号集合后,即可获得两个页面号集合:未在页面缓存中的页面集合 PageNotInBuf和已在页面缓存中的页面集合PageInBuf;
B、临时表生成时,首先处理PageNotInBuf中的页面,通过页面预取线程从磁盘将页 面读入页面缓存中,并将已读取的页面号放入一个全局队列,供页面读取线程并行处理,其 中通过页面读取优化模块决定最佳的页面读取线程启动时机,当PageNotInBuf中页面处理完 毕,页面读取线程处理PageInBuf,完成临时表生成运算;
C、临时表划分时,处理上述步骤B生成的临时表,根据键值的哈希值,将临时表中 的键值划分至对应的聚集中,生成两个聚集表;临时表由Hash Cell组成,Hash Cell的结构 为<HashValue,KeyValue,TID>,其中HashValue为连接列哈希值,KeyValue为连接列的值, TID为元组ID;临时表划分时,处理HashValue的D位二进制数据,每次数据划分处理Di 位HashValue值,通过p次划分将临时表划分成个聚集,p为划分的次数,Hp表示 第p次划分后生成的聚集数,其中通过临时表划分优化模块决定在第几次聚集划分完成后启 动临时表划分线程,以最大限度的减少临时表划分线程间的Cache访问冲突;
2)聚集连接:首先由连接线程工作集分配模块遍历临时表划分生成的两个聚集表, 获取满足连接条件的聚集对,根据每对聚集的大小ClusterPairSize,结合聚集连接线程个数 JTNum和二级Cache容量C将聚集划分至对应的聚集分类中,保证聚集连接线程处理某个 聚集分类中的聚集对时,处理的数据小于或等于二级Cache容量,减少Cache访问冲突。
2.如权利要求1所述的基于共享Cache多核处理器的数据库哈希连接方法,其特征 在于:根据临时表划分参数D的阈值MaxD,结合处理器核心数N决定具体的数据划分策略, 具体方法如下:
(1)D<MaxD时,令Di=1,即每次数据划分处理1位HashValue,从而避免使用交换表, 减少Cache访问冲突;
(2)D≥MaxD时,为了减少数据划分次数较多造成的数据划分代价,令Di=D/p,即一 个数据划分处理Di位HashValue,减少数据划分次数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学;中国科学院地理科学与资源研究所;中国科学院软件研究所,未经中国人民解放军国防科学技术大学;中国科学院地理科学与资源研究所;中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910076926.8/1.html,转载请声明来源钻瓜专利网。