专利名称:数据库内的描述信息的恢复和数据的缓存方法及设备的利记博彩app
技术领域:
本发明涉及数据存储技术领域,尤其涉及一种数据库内的描述信息的恢复和数据的缓存方法及设备。
背景技术:
目前,数据库一般使用高速存储设备,例如固态硬盘(Solid State Disk, SSD)作为主存的二级缓存,该高速存储设备也可以称为非易失性缓存。数据库对二级缓存的管理方式之一是读缓存,是指将主存中的非脏数据放置到二级缓存中,放置到二级缓存中的数据称为温数据。为了提高查询效率,可以在主存内保存信息,该描述信息用于描述数据在磁盘内的位置与二级缓存内的位置之间的对应关系。通过该描述信息,可以直接从二级缓存内将数据再次读入主存而不需要从磁盘内读取。当数据库重启后,由于主存内的信息是丢失的,需要重新建立上述的描述信息。现有技术中,当数据库重启后,数据库的二级缓存中原来保存的数据都是丢弃的, 需要重新预热数据,即需要重新从磁盘内读取数据块到主存,并从主存置换到二级缓存,以及重新在主存内建立描述信息。现有技术这种重新读取数据、重新建立描述信息的过程需要较长的时间。
发明内容
本发明实施例提供一种数据库内的描述信息的恢复和数据的缓存方法及设备,降低恢复描述信息时所需的时间。本发明实施例提供了一种数据库内的描述信息的恢复方法,包括判断数据库在上次运行后是否正常关闭;如果没有正常关闭,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息;根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。本发明实施例提供了一种数据库内的数据的缓存方法,包括将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。本发明实施例提供了一种数据库内的描述信息的恢复设备,包括判断单元,用于判断数据库在上次运行后是否正常关闭;处理单元,用于在所述判断单元判断出没有正常关闭时,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息;根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。本发明实施例提供了一种数据库内的数据的缓存设备,包括读取单元,用于将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位直fe息;置换单元,用于将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;记录单元,用于将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。由上述技术方案可知,本发明实施例通过在二级缓存内的数据块的块头内保存对应的磁盘位置信息,可以直接根据块头的磁盘位置信息和数据块自身所在的二级缓存的位置信息建立描述信息,而不需要再次读取数据、置换数据和根据置换过程建立描述信息,可以实现描述信息的快速重建,降低描述信息的恢复时间。
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明数据库内的描述信息的恢复方法一实施例的流程示意图;图2为本发明数据库内的描述信息的恢复方法另一实施例的流程示意图;图3为本发明数据库内的数据的缓存方法一实施例的流程示意图;图4为本发明二级缓存内的数据块示意图;图5为本发明数据库内的数据的缓存方法另一实施例的流程示意图;图6为本发明数据库内的描述信息的恢复设备一实施例的结构示意图;图7为本发明数据库内的数据的缓存设备一实施例的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。以PostgreSql (以下简称PG)的开源数据库为例,PG中的描述信息具体为哈希表。当数据块从磁盘读入主存后,由于主存空间的限制,可以将一些数据块置换到二级缓存中。当数据块被置换到二级缓存后,数据库的管理模块内可以保存哈希表,用于记录数据块在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。例如,管理模块将磁盘的位置A处的数据块读入主存后,如果将该数据块置换到二级缓存的位置B处,则哈希表中会保存A B的对应关系。这样,当数据库内的数据访问模块发送的数据请求表明需要读取位置A处的数据块后,管理模块可以根据该哈希表从二级缓存内读取数据块到主存内,而不需要再从磁盘中读取数据块,以提高查询效率。另外,上述的根据哈希表从二级缓存内再次读取的数据是指从主存内置换到二级缓存内的非脏数据,即数据从磁盘读取到主存后,在主存内没有被更改后被置换到二级缓存中,这样可以保证磁盘中的数据与二级缓存中的数据的一致性。当数据库关闭或者宕机后,再次重启数据库后,主存一般直接放弃之前的缓存数据。为了提高查询效率可以直接从二级缓存内读取数据而不需要从磁盘内读取,而为了直接从二级缓存内读取数据,首先需要恢复哈希表。图1为本发明数据库内的描述信息的恢复方法一实施例的流程示意图,包括步骤11 判断数据库在上次运行后是否正常关闭;其中,数据库在重启后可以通过数据库日志确定上次运行后是正常关闭还是非正常关闭。步骤12 如果没有正常关闭,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息;根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。例如,扫描二级缓存的B位置处时,得到B位置处的数据块,假设该数据块的块头内包含磁盘的A位置,则获取磁盘的A位置的数据块,之后比较A位置的数据块和B位置的数据块,如果两者相同,则建立A B的对应关系并保存到描述信息内。对于其余位置的数据块采用相同的原理进行处理,得到每个数据块在磁盘内的位置信息和二级缓存内的位置信息的对应关系,进而得到描述信息。另外,当两者不同时,可以放弃对该数据块的对应关系的恢复。另一方面,参见图2,还包括,步骤13 如果数据库上次运行是正常关闭,则可以从持久化设备内获取描述信息,所述描述信息为数据库在上次运行时建立并在正常关闭后由保存到持久化设备中。在数据库正常关闭后,将描述信息从数据库保存到持久化设备中,持久化设备例如为磁盘或非易失性缓存,这个过程可以称为序列化过程;当数据库重启后,数据库从持久化设备中获取描述信息,这个过程可以称为反序列化过程。进一步地,由于在原来的数据库运行过程中也会有描述信息,因此在如图1所示的建立描述信息,或者,如图2所示的从持久化设备中获取描述信息,都可以理解为是对上次运行时的描述信息的恢复。在描述信息恢复之后,数据库便可以直接从二级缓存内读取数据到主存内而不需要再向磁盘读取。例如,数据访问模块发送的数据请求表明要获取磁盘位置A处的数据,管理模块根据获取的描述信息确定磁盘位置A处的数据已经被保存到二级缓存位置B处,可以直接从二级缓存的位置B处获取数据后发送给主存。现有技术中数据库在重启后,是首先需要预热数据,之后根据预热过程中数据的位置信息建立描述信息,之后再根据描述信息才能应用二级缓存内的数据,预热过程就是将数据从磁盘读入主存,再从主存读入二级缓存,这一预热过程需要耗费较长时间。而本实施例中的上述根据数据块的块头内的信息恢复描述信息的方式可以大大降低所需时间,进而根据描述信息可以较快的应用二级缓存内的数据。本实施例通过在二级缓存内的数据块的块头内保存对应的磁盘位置信息,可以直接根据块头的磁盘位置信息和数据块自身所在的二级缓存的位置信息建立描述信息,而不需要再次读取数据、置换数据和根据置换过程建立描述信息,也就是说,本实施例并不需要较长时间的预热过程,便可以实现描述信息的快速重建,降低了描述信息的恢复时间。图3为本发明数据库内的数据的缓存方法一实施例的流程示意图,包括步骤31 将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;步骤32 将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;具体地,对于置换到二级缓存内的数据,其结构可以参见图4,包括数据头 (PageHeaderData)以及后续的指针(linpU linp2. · ·)、存储内容(tuplel, tuple2. · ·)和索引信息(special space)等。与现有数据的结构不同的是,本发明实施例中的数据头内会包含对应的磁盘内的位置信息。对于数据头的描述可以是
typedef struct PageHeaderData {
XLogRecPtr pdjsn; /*LSN:指向上一次xlog中本页改变记录的位
置*/
....../*不列举所有的字段*/
uintl6 pd—pagesize—version;
TransactionId pd_prune_xid; /*oldest prunable XID, or zero if none*/ ItemIdData pd_linp[l]; /* 记录 Linp 数组的起始位置 */
RelFileNode mode;/*新增字段,用于在块中保存其关系,用于恢复。*/
} PageHeaderData;
typedef PageHeaderData *PageHeader;上述描述中,其中的“RelFileNode rnode”是新增字段,用于保存对应的磁盘的位置信息。例如,二级缓存的B位置处的数据是主存从磁盘的A位置处读取并置换到二级缓存内的,则B位置处的数据的数据头部分的“RelFileNode rnode”字段内保存A位置的信肩、ο步骤33 将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。之后,在恢复时,如果数据库是非正常关闭的,则可以根据数据块的头部内容按照图1所示内容进行描述信息的恢复。进一步地,参见图5,步骤33之后还可以包括步骤34 数据库正常关闭后,将所述描述信息保存到持久化设备内。之后,在恢复时,可以直接从持久化设备中恢复描述信息。
当然,数据库运行过程中,也可以根据描述信息从二级缓存内获取数据,即在数据库运行过程中还可以执行如下步骤管理模块接收到数据访问模块发送的数据请求后,根据所述数据请求中携带的要获取的数据在磁盘内的位置信息,以及所述描述信息确定要获取的数据在二级缓存内的位置信息,并根据所述要获取的数据在二级缓存内的位置信息,从二级缓存内获取数据后发送给主存。当然,如果管理模块通过查询描述信息,没有得到要获取的数据在磁盘内的位置信息对应的二级缓存的位置信息,则从磁盘内的对应位置处获取数据后发送给主存。本实施例在数据库重启后可以从二级缓存内恢复数据,避免长时间预热过程。在数据块的数据头加入对应的磁盘内的位置信息,将原本离散的数据用描述信息进程组织, 为描述信息恢复提供依据,实现在描述信息的恢复时能够加快读取速度,使用预读策略等。图6为本发明数据库内的描述信息的恢复设备一实施例的结构示意图,该设备可以具体为数据库内的管理模块。该设备包括判断单元61和处理单元62 ;判断单元61用于判断数据库在上次运行后是否正常关闭;处理单元62用于在所述判断单元判断出没有正常关闭时,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息; 根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。可选的,所述处理单元62还用于在所述判断单元判断出正常关闭时,从持久化设备内获取描述信息,所述描述信息为数据库在上次运行时建立并在正常关闭后保存到持久化设备中。可选的,还包括第一记录单元,用于在上次运行时,将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。可选的,还包括第二记录单元,用于在上次运行时,将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内;以及,在上次运行正常关闭后,将所述描述信息保存到持久化设备内。本实施例通过在二级缓存内的数据块的块头内保存对应的磁盘位置信息,可以直接根据块头的磁盘位置信息和数据块自身所在的二级缓存的位置信息建立描述信息,而不需要再次读取数据、置换数据和根据置换过程建立描述信息,可以不需要较长的预热时间便可以实现描述信息的快速重建,降低了恢复所需时间。图7为本发明数据库内的数据的缓存设备一实施例的结构示意图,该设备可以具体为数据库内的管理模块。该设备包括读取单元71、置换单元72和记录单元73 ;读取单元 71用于将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;置换单元 72用于将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;记录单元73用于将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。可选的,所述记录单元还用于在数据库正常关闭后,将所述描述信息保存到持久化设备内。本实施例在数据库重启后可以从二级缓存内恢复数据,避免长时间预热过程。在数据块的数据头加入对应的磁盘内的位置信息,将原本离散的数据用描述信息进程组织, 为描述信息的恢复提供依据,实现在描述信息的恢复时能够加快读取速度,使用预读策略寸。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种数据库内的描述信息的恢复方法,其特征在于,包括判断数据库在上次运行后是否正常关闭;如果没有正常关闭,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息;根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。
2.根据权利要求1所述的方法,其特征在于,还包括如果正常关闭,从持久化设备内获取描述信息,所述描述信息为数据库在上次运行时建立并在正常关闭后保存到持久化设备中。
3.根据权利要求1所述的方法,其特征在于,还包括所述数据库在上次运行时,将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。
4.根据权利要求2所述的方法,其特征在于,还包括所述数据库在上次运行时,将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内;所述数据库在上次运行正常关闭后,将所述描述信息保存到持久化设备内。
5.一种数据库内的数据的缓存方法,其特征在于,包括将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。
6.根据权利要求5所述的方法,其特征在于,还包括数据库正常关闭后,将所述描述信息保存到持久化设备内。
7.一种数据库内的描述信息的恢复设备,其特征在于,包括判断单元,用于判断数据库在上次运行后是否正常关闭;处理单元,用于在所述判断单元判断出没有正常关闭时,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息;根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。
8.根据权利要求7所述的设备,其特征在于,所述处理单元还用于在所述判断单元判断出正常关闭时,从持久化设备内获取描述信息,所述描述信息为数据库在上次运行时建立并在正常关闭后保存到持久化设备中。
9.根据权利要求7所述的设备,其特征在于,还包括第一记录单元,用于在上次运行时,将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。
10.根据权利要求8所述的设备,其特征在于,还包括第二记录单元,用于在上次运行时,将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内;以及,在上次运行正常关闭后,将所述描述信息保存到持久化设备内。
11.一种数据库内的数据的缓存设备,其特征在于,包括读取单元,用于将数据块从磁盘内读入主存内,并记录所述数据块在磁盘内的位置信息;置换单元,用于将所述数据块从主存内置换到二级缓存内,并在所述数据块的块头内保存所述数据块在磁盘内的位置信息;记录单元,用于将所述数据块在磁盘内的位置信息和在二级缓存内的位置信息之间的对应关系保存在描述信息内。
12.根据权利要求11所述的设备,其特征在于,所述记录单元还用于在数据库正常关闭后,将所述描述信息保存到持久化设备内。
全文摘要
本发明提供一种数据库内的描述信息的恢复和数据的缓存方法和设备。该方法包括判断数据库在上次运行后是否正常关闭;如果没有正常关闭,遍历二级缓存内的每个数据块,每个数据块的块头内保存对应的磁盘位置信息;根据所述磁盘位置信息获取磁盘内的数据块;当获取的磁盘内的数据块与对应的二级缓存内的数据块相同时,根据数据块在磁盘内的位置信息和在二级缓存内的位置信息建立描述信息,所述描述信息用于描述数据在磁盘内的位置信息与在二级缓存内的位置信息的对应关系。本发明实施例可以降低数据库的描述信息在恢复时所需时间。
文档编号G06F17/30GK102567490SQ201110433019
公开日2012年7月11日 申请日期2011年12月21日 优先权日2011年12月21日
发明者周帅, 张振龙 申请人:华为技术有限公司