The invention discloses a hash index construction method and device for a main memory database. The hash index construction method includes: acquiring rows of the data link list in the main memory database; allocating the number of barrel nodes in the barrel node array for hash index according to rows, and recording the head nodes of each barrel node array; and constructing the analog data link list according to the number of barrel nodes and the head nodes. Array elements. By implementing the invention, the linked list node is simulated based on the use of array elements, and no additional space is allocated to store the value of the linked list node, so that the space occupation is small; the array element is allocated once, the memory is continuous, the access speed is fast, and the efficiency is not affected.
【技术实现步骤摘要】
一种内存数据库的hash索引构建方法及装置
本专利技术涉及数据处理
,具体涉及一种内存数据库的hash索引构建方法及装置。
技术介绍
现有技术在内存数据库中实现hash索引时,hash桶下的元素节点多为单向或者双向链表,数据行上某一个或者某几个字段的索引,是根据这些字段值,通过hash函数进行运算,映射到某个hash桶下。hash桶下的元素节点,存储了数据行的行号,当使用select*fromtablewherea=value;进行查询时,先根据value计算hash值,算出在第几个hash桶,然后遍历hash桶下的元素,根据存储的行号,取出每一行a这一列存储的值,与value进行比对,若完全相等,则就是要找的行。以hash桶下的节点为双向链表举例,桶下的元素节点结构为:对于内存数据库里的某张表,假设表总共有m行,表上有n个hash索引,则这张表就有n套hash结构,每套hash结构有m个桶节点,以上述双向链表为例,这张表的hash索引占用的内存为n*(hash索引头节点占用内存+m*24字节),在n较大时,内存占用非常明显。24个字节有时甚至比数据表中这行数据本身占用的内存还要大。
技术实现思路
有鉴于此,本专利技术实施例提供了一种内存数据库的hash索引构建方法及装置,以解决现有的hash索引数据结构内存占用较大的问题。根据第一方面,本专利技术实施例提供了一种内存数据库的hash索引构建方法,包括:获取内存数据库中的数据链表的行数;根据所述行数分配用于hash索引的桶节点数组中的桶节点个数,并记录各个所述桶节点数组的头节点;根据所述桶节点个数及头节点 ...
【技术保护点】
1.一种内存数据库的hash索引构建方法,其特征在于,包括:获取内存数据库中的数据链表的行数;根据所述行数分配用于hash索引的桶节点数组中的桶节点个数,并记录各个所述桶节点数组的头节点;根据所述桶节点个数及头节点构建用于模拟所述数据链表的数组元素。
【技术特征摘要】
1.一种内存数据库的hash索引构建方法,其特征在于,包括:获取内存数据库中的数据链表的行数;根据所述行数分配用于hash索引的桶节点数组中的桶节点个数,并记录各个所述桶节点数组的头节点;根据所述桶节点个数及头节点构建用于模拟所述数据链表的数组元素。2.根据权利要求1所述的内存数据库的hash索引构建方法,其特征在于,根据所述桶节点个数及头节点构建用于模拟所述数据链表的数组元素,包括:根据所述数据链表中的数据行数与hash桶的映射关系,将所述hash桶指向对应映射的数据链表中的行。3.根据权利要求2所述的内存数据库的hash索引构建方法,其特征在于,根据所述桶节点个数及头节点构建用于模拟所述数据链表的数组元素,还包括:按照所述内存数据库中的数据链表的行序号,为所述数组元素设置下标。4.根据权利要求1所述的内存数据库的hash索引构建方法,其特征在于,还包括:判断所述数据链表的行数是否发生变化;如果所述数据链表的行数发生变化,根据所述数据链表的行数变化对应修改所述桶节点数组的数组元素。5.一种内存数据库的hash索引构建装置,其特征在于,包括:数据行数获取模块,用于获取内存数据库中的数据链表的行数;桶节点分配模块,用于根据所述行数分配用于hash索引的桶节点数组中的桶节点个数,并记录各个所述桶节点数组的头节点;数据元素构...
【专利技术属性】
技术研发人员:王运来,蔡哲军,褚华兴,宋凯,曹东升,龚岩,
申请(专利权)人:亚信科技中国有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。