一种定位页内存储空间的方法和设备技术

技术编号:8323542 阅读:156 留言:0更新日期:2013-02-14 01:21
本发明专利技术实施例公开了一种定位页内存储空间的方法和设备,涉及数据库领域,解决了页内存储空间查询次数较多及多次查询后仍然查询失败的问题,提高了页内存储空间的查询效率及系统稳定性。该方法应用于空闲空间视图构成的二叉树结构的页内存储空间定位,具体包括在预定的时间周期内对空闲空间视图对应的二叉树结构的所有节点进行清扫和更新。在预定的时间周期之外,对经过节点清扫和更新的二叉树结构从根节点开始进行遍历,直至找到满足大于或等于待添加字段所需空间的叶节点。本发明专利技术用于查找存储空间存储数据。

【技术实现步骤摘要】

本专利技术涉及数据库领域,尤其涉及一种定位页内存储空间的方法和设备
技术介绍
数据的存储是数据库的重要特性之一。当目标数据要保存到数据库时,如何快速定位页内是否有足够的空间来存储数据就变得十分重要。空闲空间视图(Free Space Map,简称FSM)是用来快速定位一个页(Page)中是否有足够的空间来存储一行数据。现有技术方案是采用对象关系型数据库管理系统(Relationship Data BaseManagement System,简称RDBMS),其中用到了 FSM结构来实现查找。FSM的大小直接影响搜索空闲页面的速度,所以保持FSM尽量的小可以最大限度的提高搜索速度。为了达到快速搜索的目的,FSM的结构并不是简单的线性数组排序,而是采用二叉树的存储结构。在二叉树结构中,叶节点存储每个页中空闲空间的数量的值,根节点存储子树中叶节点的最大值。假设有2个页,PageO的空闲空间数为10,Pagel的空闲空间数为5。则相应的左右子节点的数为10和5,其父节点的数为10。具体的查找流程为(1)将空闲空间构造成二叉树结构,叶节点存储空闲空间的值,根节点存储所有子树叶节点中空闲空间的最大值;(2)空闲空间查找从二叉树的根节点开始遍历,直到找到满足条件η > X的叶节点为止(其中X为待存储的数据的大小,其本质上也就是准备添加到空闲空间中的待添加的字段的大小,,η为二叉树各节点的值);(3)如果遇到左右子节点都满足条件时则随意选一个节点继续查找。如要查找的空闲空间大小为9,左右子节点的大小分别为10和12,二者任选一即可。在实现上述搜索定位页内存储空间的过程中,专利技术人发现现有技术中至少存在如下问题在目前状态下查询满足条件的节点时,存在页内存储空间查询次数较多及多次查询后仍然查询失败的问题,进而还可能出现发生意外系统崩溃后造成FSM的树形结构无法恢复,从而影响页内存储空间查询效率及系统稳定性。
技术实现思路
本专利技术的实施例提供一种定位页内存储空间的方法和设备,能够提闻页内存储空间的查询效率及系统稳定性。为达到上述目的,本专利技术的实施例采用如下技术方案第一方面,提供一种定位页内存储空间的方法,应用于空闲空间视图构成的二叉树结构的页内存储空间定位,在预定的时间周期内对所述空闲空间视图对应的二叉树结构中的所有节点进行清扫和更新;在所述预定的时间周期之外,对经过节点清扫和更新的所述二叉树结构从根节点开始进行遍历,直至找到满足大于或等于待添加字段所需空闲空间的叶节点。在第一方面的第一种可能的实现方式中,所述对所述空闲空间视图对应的二叉树结构的所有节点进行清扫和更新包括清扫所述空闲空间视图中的所有节点中存储内容中的垃圾信息和过期信息,并更CN 102929979 A书明说2/9页新对应节点的空闲空间信息。在第一方面的第二种可能的实现方式中,所述对经过节点清扫和更新的所述二叉树结构的从根节点开始进行遍历,包括生成与所述空闲空间视图对应的完整二叉树结构; 对所述完整二叉树结构从根节点开始进行遍历。在第一方面的第三种可能的实现方式中,所述生成与所述空闲空间视图对应的完整二叉树结构,具体包括根据公式N = 2(pagrfartOT_3),计算得到叶节点的个数,利用所述叶节点的个数生成与所述空闲空间视图对应的完整二叉树结构;其中pagesize = 2pagefactor, pagesize = Ph+Pd = 2N+6N,其中,pagesize 为内存页的大小,Ph为页头的大小,且所述Ph预定义为2N,Pd为页数据的大小;所述页数据由页视图和空闲空间视图构成,其中Pd彡N*sizeof(pageid) + (2*N-l)*l = 6N-1 ^ 6N,其中sizeof (pageid)所占字节大小为4, N*sizeof (pageid)为页视图大小,所述页视图的大小为4N,(2*N-1)*1为空闲空间视图大小,这里将Pd近似取值为6N。在第一方面的第四种可能的实现方式中,还包括生成新的空闲空间视图;将所述新的空闲空间视图的二叉树结构的根节点与所述空闲空间视图的二叉树结构的根节点对应的空闲空间进行比较,并将空闲空间较大的根节点作为所述新的空闲空间视图的二叉树结构与所述空闲空间视图的二叉树结构共同构成的二叉树结构的根节点,其中所述新的空闲空间视图的二叉树结构的根节点与所述空闲空间视图的二叉树结构的根节点分别为所述新的根节点的两个子节点。在第一方面的第五种可能的实现方式中,所述方法还包括在所述空闲空间视图的空闲页中添加字段,更新所述空闲页对应的所述空闲空间视图的二叉树结构的叶节点,其中所述空闲页的地址与所述叶节点的地址相关联。在第一方面的第六种可能的实现方式中,所述方法还包括更新添加字段后的所述空闲空间视图的二叉树结构中的同一个父节点下的至少一个子节点,判断所述父节点下的两个子节点所指示的剩余空间的大小;根据剩余空间较大的子节点更新所述父节点所指示的剩余空间。第二方面,提供一种页内存储空间定位设备,应用于空闲空间视图构成的二叉树结构的页内存储空间定位,包括节点管理单元,用于在预定的时间周期内对所述空闲空间视图对应的二叉树结构中的所有节点进行清扫和更新;遍历单元,用于在所述预定的时间周期之外,对经过节点清扫和更新的所述空闲空间视图对应的所述二叉树结构从根节点开始进行遍历,直至找到满足大于或等于待添加字段所需空闲空间的叶节点。在第二方面的第一种可能的实现方式中,所述遍历单元包括节点处理子单元,用于清扫所述空闲空间视图中的所有节点中存储内容中的垃圾信息和过期信息,并更新对应节点的空闲空间信息。在第二方面的第二种可能的实现方式中,所述遍历单元还包括6算法子单元,用于生成与所述空闲空间视图对应的完整二叉树结构;遍历子单元,用于对所述完整二叉树结构从根节点开始进行遍历。在第二方面的第三种可能的实现方式中,所述算法子单元具体用于根据公式N = 2(pagrfartOT_3),计算得到叶节点的个数,利用所述叶节点的个数生成与所述空闲空间视图对应的完整二叉树结构;其中pagesize = 2pagefactor, pagesize = Ph+Pd = 2N+6N,其中,pagesize 为内存页的大小,Ph为页头大小,且所述Ph预定义为2N,Pd为页数据的大小;所述页数据由页视图和空闲空间视图构成,其中Pd彡N*sizeof (pageid)+ (2*N-1)*1 = 6N-1 ^ 6N,其中sizeof (pageid)所占字节大小为4, N*sizeof (pageid)为页视图大小,所述页视图大小为4N,(2*N-1)*1为空闲空间视图大小,这里将Pd近似取值为6N。在第二方面的第四种可能的实现方式中,还包括节点视图管理单元,用于插入新的空闲空间视图;将所述新的空闲空间视图的二叉树结构的根节点与所述空闲空间视图的二叉树结构的根节点对应的空闲空间进行比较,并将空闲空间较大的根节点作为所述新的空闲空间视图的二叉树结构与所述空闲空间视图的二叉树结构共同构成的二叉树结构的根节点,其中所述新的空闲空间视图的二叉树结构的根节点与所述空闲空间视图的二叉树结构的根节点分别为所述新的根节点的两个子节点。在第二方面的第五种可能的实现方式,所述节点视图管本文档来自技高网
...

【技术保护点】
一种定位页内存储空间的方法,应用于空闲空间视图构成的二叉树结构的页内存储空间定位,其特征在于,包括:在预定的时间周期内对所述空闲空间视图对应的二叉树结构中的所有节点进行清扫和更新;在所述预定的时间周期之外,对经过节点清扫和更新的所述二叉树结构从根节点开始进行遍历,直至找到满足大于或等于待添加字段所需空闲空间的叶节点。

【技术特征摘要】
1.一种定位页内存储空间的方法,应用于空闲空间视图构成的二叉树结构的页内存储空间定位,其特征在于,包括 在预定的时间周期内对所述空闲空间视图对应的二叉树结构中的所有节点进行清扫和更新; 在所述预定的时间周期之外,对经过节点清扫和更新的所述二叉树结构从根节点开始进行遍历,直至找到满足大于或等于待添加字段所需空闲空间的叶节点。2.根据权利要求I所述的方法,其特征在于,所述对所述空闲空间视图对应的二叉树结构中的所有节点进行清扫和更新,包括 清扫所述空闲空间视图中的所有节点中存储内容中的垃圾信息和过期信息,并更新对应节点的空闲空间信息。3.根据权利要求I所述的方法,其特征在于,所述对经过节点清扫和更新的所述二叉树结构从根节点开始进行遍历,包括 生成与所述空闲空间视图对应的完整二叉树结构; 对所述完整二叉树结构从根节点开始进行遍历。4.根据权利要求3所述的方法,其特征在于,所述生成与所述空闲空间视图对应的完整二叉树结构,具体包括 根据公式N = 2(pa—_3),计算得到叶节点的个数,利用所述叶节点的个数生成与所述空闲空间视图对应的完整二叉树结构; 其中 pagesize = 2pagefactor, pagesize = Ph+Pd = 2N+6N,其中,pagesize 为内存页的大小,Ph为页头的大小,且所述Ph预定义为2N,Pd为页数据的大小;所述页数据由页视图和空闲空间视图构成,其中Pd彡N*sizeof(pageid) + (2*N-l)*l = 6N-1 ^ 6N,其中sizeof (pageid)所占字节大小为4, N*sizeof (pageid)为页视图大小,所述页视图的大小为4N,(2*N-1)*1为空闲空间视图大小,这里将Pd近似取值为6N。5.根据权利要求I 4所述的任一方法,其特征在于,还包括 生成新的空闲空间视图; 将所述新的空闲空间视图的二叉树结构的根节点与所述空闲空间视图的二叉树结构的根节点对应的空闲空间进行比较,并将空闲空间较大的根节点作为所述新的空闲空间视图的二叉树结构与所述空闲空间视图的二叉树结构共同构成的二叉树结构的根节点,其中所述新的空闲空间视图的二叉树结构的根节点与所述空闲空间视图的二叉树结构的根节点分别为所述新的根节点的两个子节点。6.根据权利要求5所述的方法,其特征在于,所述方法还包括 在所述空闲空间视图的空闲页中添加字段,更新所述空闲页对应的所述空闲空间视图的二叉树结构的叶节点,其中所述空闲页的地址与所述叶节点的地址相关联。7.根据权利要求6所述的方法,其特征在于,所述方法还包括 更新添加字段后的所述空闲空间视图的二叉树结构中的同一个父节点下的至少一个子节点,判断所述父节点下的两个子节点所指示的剩余空间的大小; 根据剩余空间较大的子节点更新所述父节点所指示的剩余空间。8.一种页内存储空间定位设备,应用于空闲空间视图构成的二叉树结构的页内存储空间定位,其特征在于,包括节点管理单元,用于在预定的时间周期内对所述空闲空间视图对应的二叉树结构中的所有节点进行清扫和更新; 遍历单元,用于在所述预定的时间周期之外,对经过节点清扫和更新的所述二叉树结构从根节点开始进行遍历,直至找到满足大于或等于待添加字段所需空闲空间的叶节点。9.根据权利要求8所述的设备,其特征在于,所述遍历单元包括 节点处理子单元,用于清扫所述空闲空间视图中的所有节点中存储内容中的垃圾信息和过期信息,并更新对应节点的空闲空间信息。10.根据权利要求8所述的设备,其特征在于,所述遍历单元还包括 算法子单元,用于生成与所述空闲空间视图对应的完整二叉树结构; 遍历子单元,用于对所述完整二叉树结构从根节点开始进行遍历。11.根据权利要求10所述的设备,其特征在于,所述算法子单元具体用于根据公式N=2(pagrfartOT_3),计算得到叶节点的个数,利用所述叶节点的个数生成与所述空闲空间视图对应的完整二叉树结构; 其中 pagesize = 2pagefactor, pagesize = Ph+Pd = 2N+6N,其中,pagesize 为内存页的大小,Ph为页头大小,且所述Ph预定义为2N,Pd为页数据的大小;所述页数据由页视图和空闲空间视图构成,其中Pd彡N*sizeof (pageid)+...

【专利技术属性】
技术研发人员:陈志标丛强张宇
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1