[发明专利]一种面向高竞争情景的并发索引结构的设计方法在审
申请号: | 201710942890.1 | 申请日: | 2017-10-11 |
公开(公告)号: | CN107766478A | 公开(公告)日: | 2018-03-06 |
发明(设计)人: | 张为华;鲁云萍;王欣 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海正旦专利代理有限公司31200 | 代理人: | 陆飞,陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 竞争 情景 并发 索引 结构 设计 方法 | ||
1.一种基于硬件事务内存的面向高竞争负载的并发索引结构设计方法,其特征在于,具体步骤为:
(1)首先,划分事务区间,即根据HTM的并发索引结构在高竞争负载下数据冲突在不同执行阶段内发生的概率,将索引结构的访问操作划分为冲突稀疏的索引阶段和冲突密集的操作阶段,利用HTM事务内存分别保护划分后每个阶段内部代码的事务性执行,并基于版本的一致性控制策略保证划分前后的语义一致性;
(2)其次,在冲突密集区域内部,按照分散存储的原则,将原有的连续密集存储的键值对集合按照无序的方式分散存储;并在操作阶段引入调度器,将进入操作阶段的多个读写请求,调度到不同的存储结构上,从而降低冲突的可能性;
(3)再次,在采用步骤(1)的划分策略前并发索引结构的访问过程做为一个整体,为了保证划分后的语义与原有的访问语义一致,在第一步划分后的两个阶段即索引阶段和操作阶段间引入基于细粒度咨询锁和布隆过滤器的冲突控制模块,前瞻性地检测和消除数据冲突;
(4)最后,利用冲突检测模块自适应地检测工作负载实时的冲突情况,并引入自适应检测模块,用于检测工作负载竞争程度,并根据竞争程度,自适应调整是否采用针对高竞争的优化策略,从而在非高竞争情况下避免不必要的开销,使该数据结构能够适应不同竞争程度的工作负载。
2.根据权利要求1所述的方法,其特征在于,步骤(1)中所述的事务区间的划分的流程为:将原有的单一的HTM的区间依据数据冲突的分布情况划分为多个部分;已知在索引结构中,数据冲突的分布并不均匀,大多数冲突是由某一个阶段的操作引发的,因此硬件事务的划分方式参照数据冲突的分布方式进行划分:原有的使用统一的HTM区间保护的索引结构查询过程划分为冲突稀疏的沿索引结构向下查询的索引阶段和冲突密集的修改数据记录的操作阶段;完成划分后,两个阶段的并发访问过程分别使用不同的HTM区间进行保护;即冲突率较低的索引阶段划分到一个硬件事务区间中,冲突率较高的操作阶段划分到另一个硬件事务区间中;为了保证划分前后的一致性,引入基于版本的一致性控制协议保证划分前后的语义一致性,即操作阶段每次发生改变时更新自己的版本号,并传递给指向它的索引结构;每个请求从索引阶段进入操作阶段后,均检测自己从索引阶段携带的版本号与当前操作阶段的版本号是否一致;如果不一致,则发生冲突,应该回退重新执行。
3.根据权利要求2所述的方法,其特征在于,步骤(2)中所述在冲突密集区域内部,按照分散存储的原则,将原有的连续密集存储的键值对集合按照无序的方式分散存储;其流程为:
首先,将原本连续的记录存储方式改为分段的存储方式,将原来连续存储的记录按照随机原则分散存储到位于不同缓存行的段中;其次,在该阶段增加请求调度器,对于进入该阶段的多个并发读写请求,调度器随机将它们调度到不同的区段。
4.根据权利要求3所述的方法,其特征在于,在步骤(3)中所述的冲突控制模块采取两种策略来预防和处理真冲突;
(1)首先,采用一种细粒度的咨询锁来避免并发请求同时访问到操作阶段中的同一个数据记录;该咨询锁判断即将进入操作阶段的请求是否与已经进入操作阶段的其他请求访问相同的数据,从而引发数据访问冲突;如果存在冲突的可能性较高,则串行化执行该请求,即阻塞该请求,直至比它早的进入操作阶段跟它存在潜在冲突的操作完成;如果判断为不存在冲突,则继续执行该操作请求;
(2)其次,当同时进入操作阶段的请求太多时,采用一种布隆过滤器来减小同时进入操作阶段的请求数量;当已进入操作阶段的请求数目超过一定数量,则阻塞后继请求,直至已有足够数量的请求退出操作阶段;同时,当一个读请求试图去查询一个并不存在的记录时,布隆过滤器检测到这次不必要的读取操作,并提前阻止这次请求进入操作阶段,从而降低操作阶段的冲突率。
5.根据权利要求4所述的方法,其特征在于,步骤(4)中引入的自适应检测模块,用于检测工作负载竞争程度,并根据竞争程度,自适应调整是否采用针对高竞争的优化策略,具体流程为:首先,自适应检测模块记录发生在本区域内的冲突率,然后根据历史冲突率数据预测之后工作负载的可能的冲突率;如果某个区域的冲突率长期维持在一个比较低的水平,那么说明该区域处于较低的竞争率下,自适应检测模块判断当前请求为低竞争场景;此时新进入的请求会旁路掉该节点的冲突控制模块,从而避免该模块带来的额外开销;如果自适应检测模块判断当前为高竞争的场景,则在数据访问过程中,全程采用针对高竞争的优化策略。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710942890.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种拉面汤料
- 下一篇:一种补脾益胃功能山药鲫鱼汤的做法