一种磁盘空间管理方法和装置的制作方法

文档序号:6371349阅读:173来源:国知局
专利名称:一种磁盘空间管理方法和装置的制作方法
技术领域
本发明涉及计算机技术领域,特别涉及一种磁盘空间管理方法及对应的装置。
背景技术
随着现代信息产业的不断深入发展,对于信息的集成和共享的需求也变得日益迫切。XML(全称Extensible Markup Language),是一种专门为internet而设计的一种标记语言。XML的重点不在于数据的形式本身,而在于管理数据信息,因此,XML使得不同数据库模式的统一成为可能,为异构数据库的集成问题提供了途径。因此,XML在近几年得到了发展和广泛的应用。XML数据库管理系统(XMLDBMS)也是近年来发展迅速的一种新型的数据库管理系统,它以存储和检索符合W3C标准的XML文档数据为目标的数据库管理系统,并且可以更新XML文档。由于它存储的对象是XML文档库,因此XMLDBMS本质上就是一种XML文档库。
存储引擎是数据库管理系统(DBMS)中的核心子系统,其用于数据表的创建,删除,数据表的存储空间管理和数据的查询,插入,更新,删除等基本的数据管理操作,同时实现事务语义。其中,数据表的磁盘空间管理(DSM)是存储引擎的核心功能之一,其目标是让上层的数据访问方法模块可以实现高性能的数据查询和修改操作。磁盘空间管理模块的工作机制依赖于磁盘的工作机制。目前,由于大量使用的磁盘出现的较大的性能瓶颈是寻道时间,而后是旋转时间,所以磁盘空间管理模块应该尽量将一个数据表的数据放置在同一个磁道的连续的扇区上面。在最理想的情况下,每一个数据表的所有数据块都连续地放置在若干个磁道上面,这样,可以最大限度地实现数据读写访问操作。存储引擎的数据访问方法模块需要频繁地获取当前数据表的数据块的块数,此操作的如果利用文件系统固有的功能实现的话固然简单,但是,由于在此操作的过程中会涉及到频繁的IO操作,因此会出现性能低下的缺点。因此,存储引擎迫切需要一种以更加高效的方式维护每个数据表文件的当前总块
数信息。

发明内容
为解决上述问题,本发明技术方案提供一种磁盘空间管理方法,其用于数据库管理系统中的存储弓I擎的数据表文件的磁盘空间的管理,包括在内存中设置文件信息表,所述文件信息表为内存中的后台线程所共享;在所述文件信息表中存储所述存储引擎数据表文件的数据块信息;利用所述文件信息表,查找和扩展所述数据表文件的数据块信息。可选地,在内存中设置所述的文件信息表具体为在所述存储引擎初始化时,初始化所述文件信息表为空表;若文件信息表文件中不存在一个数据表文件的数据块信息时,则调用操作系统的fseek系统获取所述数据表文件的数据块信息,并所述获取的数据块信息存储至所述文件
信息表。可选地,所述的文件信息表为哈希表,以数据表文件的RelationID为键值,以FileInfo数据结构为值。其中,所述RelationID为由数据库ID,表空间ID和数据表ID构成的标识对象,用于标识所述数据表文件;所述FileInfo数据结构,用于存储所述数据表的数据块信息。可选地,所述的数据块信息包括所述数据表文件的总数据块数和已经使用的数据块数。可选地,利用所述文件信息表查找数据表文件的数据块信息具体包括以所述RelationID为键值在所述文件信息表中查找所述数据表文件的FileInfo 数据结构;从所述FileInfo数据结构中取出所述数据表文件的已使用数据块数。可选地,利用所述文件信息表扩展所述数据表文件的数据块信息具体包括比较待扩展的数据表文件的总数据块数和已使用数据块数若所述已使用数据块数小于所述总数据块数,则直接递增所述已使用数据块数;若所述已使用数据块数等于所述总数据块数,则一次性地为所述数据表文件增加若干数据块,并更新所述文件信息表中所述数据表文件的总数据块数。可选地,所述的一次性为所述数据表文件增加的数据块数为所述总数据块数的线性函数。本发明还提供了一种磁盘空间管理装置,用于与所述存储引擎中的数据访问方法模块交互,包括文件信息表创建模块,用于在内存中设置文件信息表;文件信息表,用于存储所述存储引擎数据表文件的数据块信息;磁盘空间管理模块,用于利用所述文件信息表获取和扩展所述存储引擎数据表文件的数据块,以提供给上层数据访问方法控制模块使用。可选地,所述的文件信息表创建模块具体用于在所述存储引擎初始化时,初始化所述文件信息表为空表;当需要查找文件信息表文件获取一个数据表文件的数据块信息而不能时,调用操作系统的fseek系统获取所述数据表文件的数据块信息,并所述获取的数据块信息存储至所述文件信息表。可选地,所述的文件信息表为哈希表,以数据表文件的RelationID为键值,以FileInfo数据结构为值;其中,所述RelationID为由数据库ID,表空间ID和数据表ID构成的标识对象,用于标识所述数据表文件;所述FileInfo数据结构,用于存储所述数据表的数据块信息。可选地,所述的数据块信息包括总数据块数和已使用数据块数。可选地,所述的磁盘空间管理模块进一步包括数据块信息获取模块,用于以所述RelationID为键值在所述文件信息表中查找所述数据表文件的FileInfo数据结构,并从所述FileInfo数据结构中取出所述数据表文件的已使用数据块数。数据块扩展模块,用于比较待扩展的数据表文件的总数据块数和已使用数据块数若所述已使用数据块数小于所述总数据块数,则为所述数据表文件直接递增数据块,并更新所述文件信息表中的已使用数据块数;若所述已使用数据块数等于所述总数据块数,则一次性地为所述数据表文件增加若干数据块,并更新所述文件信息表中所述数据表文件的总数据块数。可选地,所述的一次性为所述数据表文件增加的若干数据块数为所述总数据块数的线性函数。与现有技术相比,上述技术方案具有下优点—方面,本发明的技术方案由于将文件信息表设置在内存中,在利用本发明的磁盘管理方法进行数据表文件的数据块数的获取操作时,将现有技术中扩展数据表时需要进行IO操作转换成为可以忽略的内存操作,在很大程度上减少了扩展数据表所导致的IO开销,节省了系统资源,另一方面,由于在扩展数据表时,一次性为数据表文件增加若干数据块而非一个数据块,使得各个数据表文件的数据块尽可能连续地放置在磁盘的块中,从而在很大限度地实现数据的读写和访问操作,提高了系统的性能。


图I是本发明实施方式的磁盘空间管理方法的流程图;图2是本发明实施方式的磁盘空间管理装置的组成结构框架示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式
的限制。我们知道,存储引擎的核心功能之一是磁盘空间管理,其目标是让上层的数据访问方法模块可以实现高性能的数据查询和修改操作。而数据访问方法模块通常情况下需要频繁地获取当前数据表的数据块数信息,从而才可实现数据的查询和修改操作。但是,如果利用系统固有的功能来实现上述功能的话,一般会涉及到IO操作,这样将会导致系统性能低下。为解决现有技术中的问题,本发明的发明人经过研究,提出了一种基于磁盘空间管理方法。参阅图1,图I是本发明实施方式的磁盘空间管理的流程图。本发明实施方式的磁盘空间管理方法,其用于数据库管理系统中的存储引擎的数据表文件的磁盘空间的管理,包括在内存中设置文件信息表,所述文件信息表为内存中的所有后台线程所共享;在所述文件信息表中存储所述存储引擎数据表文件的数据块信息;利用所述文件信息表,查找和扩展所述数据表文件的数据块信息。其中,优选地,本发明的实施方式的磁盘空间管理方法中,在内存中创建文件信息表具体包括在所述存储引擎初始化时,初始化所述文件信息表为空表;当文件信息表文件中不存在一个数据表文件的数据块信息时,则调用操作系统的fseek系统获取所述数据表文件的数据块信息,并所述获取的数据块信息存储至所述文件信息表。
文件信息表为哈希表,以数据表文件的RelationID为键值,以FileInfo数据结构为值;其中,所述RelationID为由数据库ID,表空间ID和数据表ID构成的标识对象,用于标识所述数据表文件;所述FileInfo数据结构,用于存储所述数据表文件的数据块信息;而存储在所述FileInfo数据结构中的数据块信息具体为总数据块数(以下用M表示)和已使用数据块数(以下用N表示)。首先,当存储引擎中的数据访问方法模块需要获取一个数据表文件的数据块信息时,通过数据表文件的RelationID为键值查找相对应的FileInfo数据结构,从而从中取出数据表文件当前已使用的数据块数N。而数据表文件当前已使用的数据块数N实际表示数据访问方法已经使用了的数据块数,也即是存已经存储数据的数据块数,其总是小于FileInfo数据结构中存储的相应的总数据块数M,而M-N个数据块(例如,可以位于数据表文件的尾部)则是上层模块即数据访问方法模块不知道的数据块,而这些数据访问方法模块在需要扩展数据表的时候,可以由数据访问方法模块进一步加以利用。当需要扩展数据表文件时,数据访问方法模块通常只要求增加一个数据块。此时, 本发明的实施方式的磁盘空间管理方法,首先比较待扩展的数据表文件的总数据块数M和已使用数据块数N:若所述已使用数据块数N小于所述总数据块数M,则表示数据表文件中有已经分配好的数据块可供使用,也即还有尚未被数据访问方法是用的数据块,此时,只需直接递增已使用数据块数N即可,同时更新FileInfo数据结构中的已使用数据块数N的数值。若所述已使用数据块数N等于所述总数据块数M,则表示需要为数据表文件分配更多的数据块,本发明实施方式的磁盘管理方法则一次性地为所述数据表文件增加若干数据块,并更新所述文件信息表中FileInfo数据结构中存储的所述数据表文件的总数据块数M的数值。其中,优选地,本发明实施方式的磁盘管理方法一次性增加的数据块数就可以是原FileInfo数据结构中存储的所述数据表文件的总数据块数M的线性函数,例如每次可以增加增加O. 5*M块,这样更新后的FileInfo数据结构中存储的M值就是原来的I. 5倍。这样,由于在扩展数据表时,一次性为数据表文件增加若干数据块而非一个数据块,使得各个数据表文件的数据块尽可能连续地放置在磁盘的块中,从而在很大限度地实现数据的读写和访问操作,提高了系统的性能。同时,由于每一个数据表最初没有任何数据块,所以至少增加M0块,以避免最初的数据块增长缓慢。例如,每次至少增加128块数据块,这样每次增加的数据块数目X = Max (O. 5M,128)。参阅图2,图2为本发明实施方式的磁盘管理装置的框架是示意图。本发明实施方式的磁盘管理装置,包括文件信息表创建模块,用于在内存中设置文件信息表;文件信息表,用于存储所述存储引擎数据表文件的数据块信息;磁盘空间管理模块,用于利用所述文件信息表获取和扩展所述存储引擎数据表文件的数据块,以提供给上层数据访问方法控制模块使用。其中,优选地,本发明实施方式的磁盘管理装置中的文件信息表创建模块具体用于在所述存储引擎初始化时,初始化所述文件信息表为空表;当文件信息表文件中不存在一个数据表文件的数据块信息时,调用操作系统的fseek系统获取所述数据表文件的数据块信息,并所述获取的数据块信息存储至所述文件信息表。
其中,优选地,本发明实施方式中的文件信息表为哈希表,以数据表文件的RelationID为键值,以FileInfo数据结构为值。其中,所述RelationID为由数据库ID,表空间ID和数据表ID构成的标识对象,用于标识所述数据表文件;所述FileInfo数据结构,用于存储所述数据表的数据块信息,FileInfo数据结构中所存储的数据表文件的数据块信息包括其中,优选地,本发明实施方式中的磁盘空间管理模块进一步包括数据块信息获取模块,用于以所述RelationID为键值在所述文件信息表中查找所述数据表文件的FileInfo数据结构,并从所述FileInfo数据结构中取出所述数据表文件的已使用数据块数。数据块扩展模块,用于比较待扩展的数据表文件的总数据块数和已使用数据块数若所述已使用数据块数小于所述总数据块数,则为所述数据表文件直接递增数据块,并更新所述文件信息表中的已使用数据块数;若所述已使用数据块数等于所述总数据块数,则一次性地为所述数据表文件增加若干数据块,并更新所述文件信息表中所述数据表文件 的总数据块数。 其中,优选地,本发明实施方式中的数据块扩展模块一次性增加的数据块数就可以是原FileInfo数据结构中存储的所述数据表文件的总数据块数M的线性函数,例如每次可以增加增加O. 5*M块,这样更新后的FileInfo数据结构中存储的M值就是原来的I. 5倍。这样,由于在扩展数据表时,一次性为数据表文件增加若干数据块而非一个数据块,使得各个数据表文件的数据块尽可能连续地放置在磁盘的块中,从而在很大限度地实现数据的读写和访问操作,提高了系统的性能。同时,由于每一个数据表最初没有任何数据块,所以至少增加M0块,以避免最初的数据块增长缓慢。例如,每次至少增加128块数据块,这样每次增加的数据块数目X = Max (O. 5M,128)。综上所述,本发明技术方案具有下优点一方面,由于文件信息表设置在内存中,在利用本发明的磁盘管理方法进行数据表文件的数据块数的获取操作时,将现有技术中扩展数据表时需要进行IO操作转换成为可以忽略的内存操作,在很大程度上减少了扩展数据表所导致的IO开销,节省了系统资源,另一方面,由于在扩展数据表时,一次性为数据表文件增加若干数据块而非一个数据块,使得各个数据表文件的数据块尽可能连续地放置在磁盘的块中从而在很大限度地实现数据的读写和访问操作,提高了系统的性能。应当理解的是这里所描述的方法和系统可以以各种形式的硬件、软件、固件、专用处理机或者它们的组合实现。尤其是,至少本发明的一部分包括程序指令的应用程序优选实现。这些程序指令被确实地包括在一个或者多个程序存储设备(包括但不限于硬盘,磁性软盘,RAM, ROM,⑶,ROM等)里,并且可由任何包括适当结构的设备或者机器,例如一种具有处理器、内存和输入/输出接口的通用数字计算机执行。还应当理解由于附图中描述的一些系统的组成部件和处理步骤优选地以软件实现,所以,系统模块(或者方法步骤的逻辑流程)之间的连接可能不同,这取决于本发明的编程方式。根据这里给出的指导,相关领域的普通技术人员将能够设计出本发明的这些以及类似的实施方式。以上公开了本发明的多个方面和实施方式,本领域的技术人员会明白本发明的其它方面和实施方式。本发明中公开的多个方面和实施方式只是用于举例说明,并非是对本发明的限定,本发明的真正保护范围和精神应当以权利要 求书为准。
权利要求
1.一种磁盘空间管理方法,其用于数据库管理系统中的存储引擎的数据表文件的磁盘空间的管理,其特征在于,包括 在内存中设置文件信息表,所述文件信息表为内存中的后台线程所共享; 在所述文件信息表中存储所述存储引擎数据表文件的数据块信息; 利用所述文件信息表,查找和扩展所述数据表文件的数据块信息。
2.如权利要求I所述的磁盘空间管理方法,其特征在于,在内存中设置所述的文件信息表具体为 在所述存储引擎初始化时,初始化所述文件信息表为空表; 若文件信息表文件中不存在一数据表文件的数据块信息时,调用操作系统的fseek系统获取所述数据表文件的数据块信息,并所述获取的数据块信息存储至所述文件信息表。
3.如权利要求I或2所述的磁盘空间管理方法,其特征在于,所述的文件信息表为哈希表,以数据表文件的RelationID为键值,以FileInfo数据结构为值, 其中,所述RelationID为由数据库ID,表空间ID和数据表ID构成的标识对象,用于标识所述数据表文件;所述FileInfo数据结构,用于存储所述数据表的数据块信息。
4.如权利要求I所述的磁盘空间管理方法,其特征在于,所述的数据块信息包括所述数据表文件的总数据块数和已经使用的数据块数。
5.如权利要求3所述的磁盘空间管理方法,其特征在于,利用所述文件信息表查找数据表文件的数据块信息具体包括 以所述RelationID为键值在所述文件信息表中查找所述数据表文件的FileInfo数据结构; 从所述FileInfo数据结构中取出所述数据表文件的已使用数据块数。
6.如权利要求I所述的磁盘空间管理方法,其特征在于,利用所述文件信息表扩展所述数据表文件的数据块信息具体包括 比较待扩展的数据表文件的总数据块数和已使用数据块数 若所述已使用数据块数小于所述总数据块数,则直接递增所述已使用数据块数; 若所述已使用数据块数等于所述总数据块数,则一次性地为所述数据表文件增加若干数据块,并更新所述文件信息表中所述数据表文件的总数据块数。
7.如权利要求I所述的磁盘空间管理方法,其特征在于,所述的一次性为所述数据表文件增加的数据块数为所述总数据块数的线性函数。
8.—种磁盘空间管理装置,用于与所述存储引擎中的数据访问方法模块交互,其特征在于,包括 文件信息表创建模块,用于在内存中设置文件信息表; 文件信息表,用于存储所述存储引擎数据表文件的数据块信息; 磁盘空间管理模块,用于利用所述文件信息表获取和扩展所述存储引擎数据表文件的数据块,以提供给上层数据访问方法控制模块使用。
9.如权利要求8所述的磁盘空间管理装置,其特征在于,所述的文件信息表创建模块具体用于在所述存储引擎初始化时,初始化所述文件信息表为空表;当文件信息表不存在一个数据表文件的数据块信息而不能时,调用操作系统的fseek系统获取所述数据表文件的数据块信息,并所述获取的数据块信息存储至所述文件信息表。
10.如权利要求8所述的磁盘空间管理装置,其特征在于,所述的文件信息表为哈希表,以数据表文件的RelationID为键值,以FileInfo数据结构为值;其中,所述RelationID为由数据库ID,表空间ID和数据表ID构成的标识对象,用于标识所述数据表文件;所述FileInfo数据结构,用于存储所述数据表的数据块信息。
11.如权利要求8或9或10或所述的磁盘空间管理装置,其特征在于,所述的数据块信息包括总数据块数和已使用数据块数。
12.如权利要求8所述的磁盘空间管理装置,其特征在于,所述的磁盘空间管理模块进一步包括 数据块信息获取模块,用于以所述RelationID为键值在所述文件信息表中查找所述数据表文件的FileInfo数据结构,并从所述FileInfo数据结构中取出所述数据表文件的已使用数据块数; 数据块扩展模块,用于比较待扩展的数据表文件的总数据块数和已使用数据块数若所述已使用数据块数小于所述总数据块数,则为所述数据表文件直接递增数据块,并更新所述文件信息表中的已使用数据块数;若所述已使用数据块数等于所述总数据块数,则一次性地为所述数据表文件增加若干数据块,并更新所述文件信息表中所述数据表文件的总数据块数。
13.如权利要求12所述的磁盘空间管理装置,其特征在于,所述的一次性为所述数据表文件增加的若干数据块数为所述总数据块数的线性函数。
全文摘要
本发明提供一种磁盘空间管理方法和装置,用于数据库管理系统中的存储引擎的数据表文件的磁盘空间的管理,包括在内存中设置文件信息表,所述文件信息表为内存中的所有后台线程所共享;在所述文件信息表中存储所述存储引擎数据表文件的数据块信息;利用所述文件信息表,查找和扩展所述数据表文件的数据块信息。采用本发明的技术方案具有以下的优点在很大程度上减少了扩展数据表所导致的IO开销,节省了系统资源,使得各个数据表文件的数据块尽可能连续地放置在磁盘的块中,从而在很大限度地实现数据的读写和访问操作,提高了系统的性能。
文档编号G06F17/30GK102768672SQ20121019387
公开日2012年11月7日 申请日期2012年6月12日 优先权日2012年6月12日
发明者孙伟丰, 李书淦, 李泉, 李 浩, 程仁波, 罗正海, 赵伟, 郑程光 申请人:上海方正数字出版技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1