一种存储方法、装置及设备与流程

文档序号:20029666发布日期:2020-02-28 10:14阅读:117来源:国知局
本申请涉及计算机领域,尤其是涉及一种存储方法、装置及设备。
背景技术
::随着信息技术的发展,出现了海量的数据,可以利用数据库来对数据进行存储以及管理。数据库对数据进行存储以及管理时,可以由数据库服务器接收客户端发送的数据处理请求例如结构化查询语言(structuredquerylanguage,sql)请求,根据该数据处理请求确定该数据处理请求对应的数据页文件(也称为page文件),并根据对该数据页文件进行操作的操作记录写入事务日志文件,以便根据该事务日志文件执行下一步操作(例如,当数据库发生数据丢失时,利用事务日志文件进行数据恢复;又如,向客户端返回针对该数据处理请求的响应消息;再如,提交对数据页文件执行的操作)。其中,数据页文件是指数据库中存放数据的文件。在本申请中,将对数据页文件进行操作的操作记录称为事务记录。目前,将事务记录写入事务日志文件时,是将所有的事务记录写入到一个事务日志文件中。具体地,可以先将事务记录存储到缓存池中,然后将缓存池中的事务记录写入到事务日志文件中。可以理解的是,随着互联网技术的发展,数据库可能会面临大量并发的数据处理请求,也就是说,缓存池中可能存储有大量的事务记录,而将缓存池中的事务记录写入到该事务日志文件中时,需要逐个写入。从而导致将大量事务记录写入事务日志文件中所耗费的时间可能比较长,即将事务记录写入到事务日志文件中的效率比较低。因此,需要提出一种方案,能够解决现有技术中将事务记录写入到事务日志文件的效率比较低的问题。技术实现要素:本申请实施例提供了一种存储方法、装置及设备,用于解决现有技术中将事务记录写入到事务日志文件的效率比较低的问题。第一方面,本申请实施例提供了一种存储方法,首先获取对数据页文件进行操作的操作记录,即事务记录,该事务记录中携带有数据页文件的标识。获取事务记录之后,对该事务记录进行解析,得到该事务记录中的数据页文件的标识。根据该数据页文件的标识,确定该存储该数据页文件的缓存池将事务记录存储在该缓存池中。在本申请实施例中,并不是如现有技术中那样,仅存在一个事务日志文件,而是存在多个事务日志文件,事务日志文件与缓存池之间具有对应关系,在将事务记录写入事务日志文件中时,可以将缓存池中的事务记录写入到与该缓存池对应的事务日志文件中。由于在同一时刻一个缓存池不能同时将其存储的事务日志文件写入多个事务日志文件中,故而为了有效提升将事务记录写入事务日志文件的效率,在本申请中,不同的事务日志文件对应的缓存池不同,即一个缓存池仅可以与一个事务日志文件对应。这样一来,在将缓存池中的事务记录写入到事务日志文件中时,多个事务日志文件可以并行写入,从而有效提高了将事务记录写入事务日志文件的效率。另外,在本申请中,由于存在多个事务日志文件,且不同的事务日志文件对应的缓存池不同,因此,也存在多个缓存池,这样一来,当待存储的事务记录比较多时,多个缓存池也可以并行存储,从而提高了将事务记录存储到缓存池中的效率。在一种可能的实现方式中,当同一时刻存在多个待存储的事务记录时,同一个缓存池可能对应多条事务记录,对于这种情况,将事务记录存储在对应的缓存池中时,可以按照对数据页文件的操作顺序,将多条事务记录依次存储在该对应的缓存池中。由于将事务记录写入事务日志文件之后,可以根据该事务日志文件执行下一步操作,例如,提交对数据页文件执行的操作,又如,当数据库发生数据丢失时,可以利用事务日志文件进行数据恢复。一般来讲,为了保证数据恢复时,数据的修改顺序与提交对数据页文件执行的操作的提交顺序是一致的,因此,可以按照对数据页文件进行操作的操作顺序,由早到晚将多条事务记录依次存储在该对应的缓存池中。在一种可能的实现方式中,由于事务日志序列号是一个递增的数值,故而,事务日志序列号可以用于唯一标识事务记录。而且,事务日志序列号可以表征对数据页文件进行操作的操作顺序。一般而言,对数据页文件进行操作的时间早,则对应的事务记录的事务日志序列号的数值比较小,对数据页文件进行操作的时间晚,则对应的事务记录的事务日志序列号的数值比较大。因此,事务记录中可以携带该事务记录的事务日志序列号,“按照对数据页文件进行操作的操作顺序,由早到晚将多条事务记录依次存储在该对应的缓存池中”在具体实现时,可以按照多条事务记录中分别携带的事务日志序列号由小到大的顺序,将多条事务记录依序存储在该对应的缓存池中。在一种可能的实现方式中,所述根据所述数据页文件的标识,确定与所述事务记录对应的缓存池包括:根据所述数据页文件的标识,按照预设规则计算得到目标缓存池标识,所述目标缓存池标识为与所述事务记录对应的缓存池的标识;若存在与所述目标缓存池标识对应的缓存池,则将与所述目标缓存池标识对应的缓存池确定为与所述事务记录对应的缓存池。从而确定该事务记录对应的缓存池,从而将该事务记录存储至该缓存池中。在一种可能的实现方式中,缓存池中的事务记录最终要写入到与该缓存池对应的事务日志文件中。而由于新增缓存池并没有对应的事务日志文件,从而使得无法确定将该新增缓存池中的事务记录写入到哪一个事务日志文件中。因此,生成新增缓存池之后,还可以确定与该新增缓存池对应的事务日志文件。在本申请实施例中,确定与该新增缓存池对应的事务日志文件,至少存在两种实现方式。第一种方式:建立新增缓存池与事务日志文件之间的对应关系。第二种方式:生成与新增缓存池对应的事务日志文件。确定与该新增缓存池对应的事务日志文件之后,即可将新增缓存池中事务记录写入到对应的事务日志文件中。在一种可能的实现方式中,数据页文件的标识例如可以包括该数据页文件的编号(英文:pagenumber)和该数据页文件所处的表空间的标识(英文:tablespaceid)中的任意一个或多个。在一种可能的实现方式中,还可以将事务记录从事务日志文件中提取出来,以便于数据库管理员查看事务记录。具体地,可以接收事务记录查询请求,所述事务记录查询请求中携带有待查询标识,所述待查询标识为待查询的数据页文件的标识;若预先建立的所述数据页文件的标识与所述事务日志文件的标识之间的对应关系中包括所述待查询标识,则根据所述对应关系得到与所述待查询标识对应的事务日志文件的标识,并从与所述事务日志文件的标识对应的事务日志文件中提取与所述待查询标识对应的事务记录。在一种可能的实现方式中,将事务记录从事务日志文件中提取出来时,若预先建立的所述数据页文件的标识与所述事务日志文件的标识之间的对应关系不包括所述待查询标识,则根据所述事务日志文件中存储的事务记录更新所述对应关系,并根据所述待查询标识,从更新后的对应关系中查找与所述待查询标识对应的事务日志文件的标识,以及从与所述事务日志文件的标识对应的事务日志文件中提取与所述待查询标识对应的事务记录。从而将事务记录从事务日志文件中提取出来。在一种可能的实现方式中,数据页文件的标识与事务日志文件的标识之间的对应关系,是预先建立的。但是,考虑到实际应用中,若数据库服务器接收到事务记录查询请求时,该对应关系还并未建立。也就是说,数据库服务器解析该事务记录查询请求得到待查询数据页文件的标识之后,由于不存在预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系,故而无法确定与该待查询页文件的标识对应的事务日志文件的标识。对于这种情况,服务器可以根据事务日志文件中存储的事务记录,生成数据页文件的标识与事务日志文件的标识之间的对应关系。从而根据待查询标识,从生成的数据页文件的标识与事务日志文件的标识之间的对应关系中,查找与待查询标识对应的事务日志文件的标识,以及从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。在一种可能的实现方式中,考虑到在实际应用中,数据库服务器接收到事务记录查询请求之后,要以数据页文件的形式要向客户端反馈该事务记录查询请求对应的事务记录。因此,提取到与待查询标识对应的事务记录之后,还可以生成与该事务记录对应的数据页文件,以便以数据页文件的形式向客户端反馈该事务记录查询请求对应的事务记录。第二方面,本申请实施例提供了一种存储装置,所述装置包括:获取单元,用于获取事务记录,所述事务记录为对数据页文件进行操作的操作记录,所述事务记录中携带有所述数据页文件的标识;存储单元,用于根据所述数据页文件的标识,确定与所述事务记录对应的缓存池,并将所述事务记录存储在所述对应的缓存池中;写入单元,用于将所述对应的缓存池中的所述事务记录写入与所述对应的缓存池对应的事务日志文件中,其中,不同的事务日志文件对应的缓存池不同。在一种可能的实现方式中,若同一个缓存池对应多条事务记录,则将所述事务记录存储在所述对应的缓存池中包括:按照对所述数据页文件进行操作的操作顺序,将所述多条事务记录依次存储在所述对应的缓存池中。在一种可能的实现方式中,所述按照对所述数据页文件进行操作的操作顺序,将所述多条事务记录依序存储在所述对应的缓存池中包括:按照所述多条事务记录中分别携带的事务日志序列号由小到大的顺序,将所述多条事务记录依序存储在所述对应的缓存池中。在一种可能的实现方式中,所述根据所述数据页文件的标识,确定与所述事务记录对应的缓存池包括:根据所述数据页文件的标识,按照预设规则计算得到目标缓存池标识,所述目标缓存池标识为与所述事务记录对应的缓存池的标识;若存在与所述目标缓存池标识对应的缓存池,则将与所述目标缓存池标识对应的缓存池确定为与所述事务记录对应的缓存池。在一种可能的实现方式中,所述根据所述数据页文件的标识,确定与所述事务记录对应的缓存池还包括:若不存在与所述目标缓存池标识对应的缓存池,则生成与所述目标缓存池标识对应的缓存池;所述装置还包括:对应关系建立单元,用于建立所述与所述目标缓存池标识对应的缓存池与所述事务日志文件之间的对应关系;或,事务日志文件生成单元,用于生成与所述目标缓存池标识对应的缓存池所对应的事务日志文件。在一种可能的实现方式中,所述数据页文件的标识至少包括以下其中一种:所述数据页文件的编号和所述数据页文件所处的表空间的标识。在一种可能的实现方式中,所述装置还包括:接收单元,用于接收事务记录查询请求,所述事务记录查询请求中携带有待查询标识,所述待查询标识为待查询的数据页文件的标识;第一提取单元,用于若预先建立的所述数据页文件的标识与所述事务日志文件的标识之间的对应关系中包括所述待查询标识,则根据所述对应关系得到与所述待查询标识对应的事务日志文件的标识,并从与所述事务日志文件的标识对应的事务日志文件中提取与所述待查询标识对应的事务记录。在一种可能的实现方式中,所述装置还包括:更新查询单元,用于若预先建立的所述数据页文件的标识与所述事务日志文件的标识之间的对应关系不包括所述待查询标识,则根据所述事务日志文件中存储的事务记录更新所述对应关系,并根据所述待查询标识,从更新后的对应关系中查找与所述待查询标识对应的事务日志文件的标识,以及从与所述事务日志文件的标识对应的事务日志文件中提取与所述待查询标识对应的事务记录;第二提取单元,用于若不存在预先建立的所述对应关系,则根据所述事务日志文件中存储的事务记录生成所述对应关系,并根据所述待查询标识,从生成的所述对应关系中查找与所述待查询标识对应的事务日志文件的标识,以及从与所述事务日志文件的标识对应的事务日志文件中提取与所述待查询标识对应的事务记录。在一种可能的实现方式中,所述装置还包括:数据页文件生成单元,用于根据所述待查询标识对应的事务记录,生成与所述待查询标识对应的数据页文件。第三方面,本申请实施例提供了一种存储设备,所述设备包括:处理器和存储器;所述存储器,用于存储指令;所述处理器,用于执行所述存储器中的所述指令,执行以上第一方面任意一项所述的方法。第四方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上第一方面任意一项所述的方法。第五方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行以上第一方面任意一项所述的方法。附图说明图1为本申请实施例提供的一个应用场景的示意图;图2为本申请实施例提供的一种存储方法的流程示意图;图3为本申请实施例提供的一种确定与事务记录对应的缓存池的标识的方法的流程示意图;图4为本申请实施例提供的一种提取事务记录的方法的流程示意图;图5为本申请实施例提供的一个应用场景的示意图;图6为本申请实施例提供的一种存储方法的流程示意图;图7为本申请实施例提供的一种存储装置的结构示意图;图8为本申请实施例提供的一种存储设备的结构示意图。具体实施方式本申请实施例提供了一种存储方法、装置及设备,能够解决现有技术中将事务记录写入事务日志文件效率比较低的问题,可以提高将事务记录写入事务日志文件的效率。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。目前,将事务记录写入事务日志文件时,是将所有的事务记录写入到一个事务日志文件中。具体地,可以先将事务记录存储到缓存池中,然后将缓存池中的事务记录写入到事务日志文件中。可以理解的是,随着互联网技术的发展,数据库可能会面临大量并发的数据处理请求,也就是说,缓存池中可能存储有大量的事务记录,而将缓存池中的事务记录写入到该事务日志文件中时,需要逐个写入。从而导致将大量事务记录写入事务日志文件中所耗费的时间可能比较长,即将事务记录写入到事务日志文件中的效率比较低。例如,可以结合图1进行理解,该图为本申请实施例提供的一个应用场景的示意图。该图中第一客户端100同时向第一数据库200中的第一数据库服务器210发送了三条sql请求。第一数据库服务器210接收到这三条sql请求之后,对这三条sql请求进行解析,并获得这三条sql请求对应的事务记录,分别为事务记录1220a、事务记录2220b和事务记录3220c。然后将这三条事务记录均存储到缓存池230中,最后将换存池中的事务记录写入到事务日志文件240中。如前文所述,将缓存池中的事务记录写入到该事务日志文件中时,需要逐个写入。在图1所示的场景中,缓存池230中存储有事务记录1220a、事务记录2220b和事务记录3220c,则将这三个事务记录写入到事务日志文件240中时,需要逐个写入。例如,先将事务记录1220a写入到事务日志文件240中,再将事务记录2220b写入到事务日志文件240中,最后将事务记录3220c写入到事务日志文件240中。当待写入到事务日志文件240中的事务记录数量过多时,这种将事务记录写入到事务日志文件中的方式效率比较低。鉴于此,本申请实施例提供了一种存储方法、装置及设备,能够解决现有技术中将事务记录写入事务日志文件效率比较低的问题,可以提高将事务记录写入事务日志文件的效率。参见图2,该图为本申请实施例提供的一种存储方法的流程示意图。本申请实施例提供的存储方法,例如可以通过如下步骤201-203实现。步骤201:获取事务记录,事务记录为对数据页文件进行操作的操作记录,事务记录中携带有数据页文件的标识。需要说明的是,本申请实施例中提及的事务记录,是指对数据页文件进行操作的操作记录。本申请实施例不具体限定对数据页文件进行操作的操作类型,作为一种示例,对数据页文件可以进行新增、修改以及删除等操作。对应的,事务记录是指对数据页文件进行新增、修改以及删除等操作的操作记录。本申请实施例不具体限定获取事务记录的具体实现方式,获取事务记录的具体实现方式可以根据实际情况确定。如前文所述,数据库对数据进行管理时,数据库服务器可以接收客户端发送的数据处理请求例如sql请求。数据库服务器接收到数据处理请求之后,可以对该数据处理请求进行解析,确定该数据处理请求对应的数据页文件,从而获取对该数据页文件进行操作的操作记录,即获取事务记录。需要说明的是,本申请实施例中提及的数据页文件的标识,可以用于唯一标识数据页文件。需要说明的是,本申请实施例不具体限定数据页文件的标识,作为一种示例,数据页文件的标识例如可以包括该数据页文件的编号(英文:pagenumber)和该数据页文件所处的表空间的标识(英文:tablespaceid)中的任意一个或多个。关于数据页文件所处的表空间的标识,需要说明的是,表空间是关系型数据库的逻辑划分,一个表空间只能属于一个数据库。数据库中所有的数据库对象都存放在指定的表空间中。每个表空间拥有唯一表空间的标识。关于数据页文件的编号,需要说明的是,数据页文件是关系型数据库中,数据实际存放的文件,一个表空间可以包含一个或者多个数据页文件,一个数据页文件只能属于一个表空间。在一个表空间中,每个数据页文件拥有唯一的数据页文件的编号;但不同表空间中的数据页文件的编号有可能重复。也就是说,仅利用数据页文件所处的表空间的标识可能不能唯一标识一个数据页文件,仅利用数据页文件的编号也可能不能唯一标识一个数据页文件。利用数据页文件所处的表空间的标识和数据页文件的编号可以唯一标识一个数据页文件。步骤202:根据数据页文件的标识,确定与事务记录对应的缓存池,并将事务记录存储在对应的缓存池中。需要说明的是,在本申请实施例中,存在多个缓存池,当获取到事务记录之后,则根据该事务记录中携带的数据页文件的标识,确定该事务记录对应的缓存池的标识,从而将该事务记录存储在该缓存池的标识对应的缓存池中。需要说明的是,本申请实施例中提及的缓存池的标识,可以用于唯一标识缓存池。本申请实施例不具体限定缓存池的标识,作为一种示例,缓存池的标识可以为缓存池的编号。可以理解的是,当同一时刻存在多个待存储的事务记录时,同一个缓存池可能对应多条事务记录,对于这种情况,将事务记录存储在对应的缓存池中时,可以按照对数据页文件的操作顺序,将多条事务记录依次存储在该对应的缓存池中。如前文所述,将事务记录写入事务日志文件之后,可以根据该事务日志文件执行下一步操作,例如,提交对数据页文件执行的操作,又如,当数据库发生数据丢失时,可以利用事务日志文件进行数据恢复。一般来讲,为了保证数据恢复时,数据的修改顺序与提交对数据页文件执行的操作的提交顺序是一致的,因此,可以按照对数据页文件进行操作的操作顺序,由早到晚将多条事务记录依次存储在该对应的缓存池中。需要说明的是,每一个事务记录对应一个事务日志序列号(logsequencenumber,lsn),该事务日志序列号用于表示该事务记录写入到事务日志文件中之后,事务日志文件中的事务记录的字节总量。由于事务日志序列号是一个递增的数值,因此,事务日志序列号可以用于唯一标识事务记录。而且,事务日志序列号可以表征对数据页文件进行操作的操作顺序。一般而言,对数据页文件进行操作的时间早,则对应的事务记录的事务日志序列号的数值比较小,对数据页文件进行操作的时间晚,则对应的事务记录的事务日志序列号的数值比较大。在本申请实施例中,事务记录中可以携带该事务记录的事务日志序列号,因此,上文提及的“按照对数据页文件进行操作的操作顺序,由早到晚将多条事务记录依次存储在该对应的缓存池中”在具体实现时,可以按照多条事务记录中分别携带的事务日志序列号由小到大的顺序,将多条事务记录依序存储在该对应的缓存池中。步骤203:将对应的缓存池中的事务记录写入与该对应的缓存池对应的事务日志文件中,其中,不同的事务日志文件对应的缓存池不同。需要说明的是,在本申请实施例中,包含多个事务日志文件。缓存池与事务日志文件之间具有对应关系。将事务记录存储到对应的缓存池中之后,进一步地,需要确定与该对应的缓存池对应的事务日志文件,从而将该缓存池中的事务记录写入到与该缓存池对应的事务日志文件中。需要说明的是,在本申请实施例中,不同的事务日志文件对应的缓存池不同。也就是说,同一个缓存池只可以与一个事务日志文件对应。换言之,一个事务日志文件可以对应一个缓存池,一个事务日志文件也可以对应多个缓存池,但是,一个缓存池不能对应多个事务日志文件。举例说明,数据库中包含两个缓存池(第一缓存池和第二缓存池)和两个事务日志文件(第一事务日志文件和第二事务日志文件),则,第一缓存池中的事务记录不能既写入到第一事务日志文件中,又写入到第二事务日志文件中。但是,可以将第一缓存池中的事务记录写入到第一事务日志文件中,将第二缓存池中的事务记录写入到第二事务日志文件中(或者将第一缓存池中的事务记录写入到第二事务日志文件中,将第二缓存池中的事务记录写入到第一事务日志文件中);也可以将第一缓存池中的事务记录和第二缓存池中的事务记录可以均写入到第一事务日志文件(或者第二事务日志文件)中。由此可见,利用本申请实施例提供的存储方法,首先获取对数据页文件进行操作的操作记录,即事务记录,该事务记录中携带有数据页文件的标识。获取事务记录之后,对该事务记录进行解析,得到该事务记录中的数据页文件的标识。根据该数据页文件的标识,确定该存储该数据页文件的缓存池将事务记录存储在该缓存池中。在本申请实施例中,并不是如现有技术中那样,仅存在一个事务日志文件,而是存在多个事务日志文件,事务日志文件与缓存池之间具有对应关系,在将事务记录写入事务日志文件中时,可以将缓存池中的事务记录写入到与该缓存池对应的事务日志文件中。由于在同一时刻一个缓存池不能同时将其存储的事务日志文件写入多个事务日志文件中,故而为了有效提升将事务记录写入事务日志文件的效率,在本申请中,不同的事务日志文件对应的缓存池不同,即一个缓存池仅可以与一个事务日志文件对应。这样一来,在将缓存池中的事务记录写入到事务日志文件中时,多个事务日志文件可以并行写入,从而有效提高了将事务记录写入事务日志文件的效率。另外,在本申请中,由于存在多个事务日志文件,且不同的事务日志文件对应的缓存池不同,因此,也存在多个缓存池,这样一来,当待存储的事务记录比较多时,多个缓存池也可以并行存储,从而提高了将事务记录存储到缓存池中的效率。在本申请实施例的一个示例中,步骤202中的:“根据数据页文件的标识,确定与事务记录对应的缓存池的标识”在具体实现时,可以通过如下步骤301-302实现。步骤301:根据数据页文件的标识,按照预设规则计算得到目标缓存池标识。需要说明的是,如前文所述,数据页文件的标识可以包括数据页文件的编号和数据页文件所处的表空间的标识中的任意一种或多种。目标缓存池标识例如可以为目标缓存池的编号。需要说明的是,本申请实施例不具体限定预设规则。作为一种示例,可以预先确定一个整数x,对数据页文件的编号与该整数x做求余运算,将该运算结果确定为目标缓存池标识。例如,x取5,数据页文件的编号为9,则9和5做求余运算得到的运算结果为4,即目标缓存池标识为4。需要说明的是,以上对计算得到目标缓存池标识的描述仅是示意性说明,并不构成对本申请实施例的限定。步骤302:若存在与目标缓存池标识对应的缓存池,则将与目标缓存池标识对应的缓存池确定为与事务记录对应的缓存池。需要说明的是,由于数据库中存在的缓存池的数量有限,因此,利用预设规则计算得到的目标缓存池标识,并不一定是实际存在的缓存池的标识,因此,确定目标缓存池标识之后,可以根据数据库中存在的缓存池的标识,确定是否存在与该目标缓存池标识对应的缓存池。若存在该缓存池,则说明目标缓存池标识是实际存在的缓存池的标识,则可以将与目标缓存池标识对应的缓存池确定为与事务记录对应的缓存池。举例说明:目标缓存池标识为4,而数据库中存在5个缓存池,这5个缓存池的标识分别为1、2、3、4和5,则目标缓存池标识即为实际存在的缓存池的标识,此时可以将与目标缓存池标识4对应的缓存池确定为与事务记录对应的缓存池。若不存在该缓存池,说明目标缓存池标识并非是实际存在的缓存池的标识。对于这种情况,在本申请实施例的一种可能的实现方式中,还可以生成与该目标缓存池标识对应的缓存池,从而将该生成的与该目标缓存池标识对应的缓存池作为与事务记录对应的缓存池。为方便描述,将生成的与目标缓存池标识对应的缓存池,称为新增缓存池。举例说明:目标缓存池标识为4,而数据库中存在3个缓存池,这3个缓存池的标识分别为1、2和3,则目标缓存池标识并非是实际存在的缓存池的标识,此时可以生成缓存池的标识为4的新增缓存池。如前文,缓存池中的事务记录最终要写入到与该缓存池对应的事务日志文件中。而由于新增缓存池并没有对应的事务日志文件,从而使得无法确定将该新增缓存池中的事务记录写入到哪一个事务日志文件中。鉴于此,在本申请实施例的一种可能的实现方式中,生成新增缓存池之后,还可以确定与该新增缓存池对应的事务日志文件。在本申请实施例中,确定与该新增缓存池对应的事务日志文件,可以多种实现方式,以下介绍两种可能的实现方式。第一种方式:建立新增缓存池与事务日志文件之间的对应关系。关于第一种方式,需要说明的是,生成新增缓存池之后,从当前数据库中存在的事务日志文件中,选择一个与新增缓存池对应的事务日志文件,从而建立该新增缓存池与事务日志文件之间的对应关系。以便于将该新增缓存池中的事务记录写入到与新增缓存池对应的事务日志文件中。第二种方式:生成与新增缓存池对应的事务日志文件。关于第二种方式,需要说明的是,生成新增缓存池之后,对应的也生成与该新增缓存池对应的事务日志记录。以便于将该新增缓存池中的事务记录写入到与新增缓存池对应的事务日志文件中。考虑到实际应用中,用户例如数据库管理员可能需要查看事务记录,鉴于此,在本申请实施例中,还可以将事务记录从事务日志文件中提取出来,以便于数据库管理员查看事务记录。在本申请实施例的一种可能的实现方式中,可以通过如下步骤401-403实现从事务日志文件中提取事务记录。步骤401:接收事务记录查询请求,事务记录查询请求中携带有待查询标识,待查询标识为待查询的数据页文件的标识。若预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系中包括待查询标识,执行步骤402,若预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系不包括待查询标识,执行步骤403。需要说明的是,在本申请实施例中,服务器可以接收客户端发送的特定数据传输协议的事务记录查询请求,事务记录查询请求所采用的数据传输协议可以根据实际情况确定,本申请实施例不做具体限定。关于数据页文件的标识,可以参考上文步骤201中关于数据页文件的标识的描述部分,此处不再赘述。关于数据页文件的标识与事务日志文件的标识之间的对应关系,本申请实施例不做具体限定。作为一种示例,数据页文件的标识与事务日志文件的标识之间的对应关系,可以是如下表所示的对应关系。表1数据页文件的标识(数据页文件的编号)事务日志文件的标识(事务日志文件的编号)1-314-627-93在表1中,数据页文件的标识为数据页文件的编号,事务日志文件的标识为事务日志文件的编号。需要说明的是,表1只是示例性的说明,并不构成对本申请实施例的限定。可以理解的是,接收到事务记录查询请求之后,可以对该事务记录查询请求进行解析,得到该事情记录查询请求中携带的待查询标识,即待查询数据页文件的标识。步骤402:根据对应关系得到与待查询标识对应的事务日志文件的标识,并从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。如前文所述,在本申请实施例中,存在多个事务日志文件。因此,若需要将事务记录从事务日志文件中提取出来,首先要确定事务记录存储在哪一个事务日志文件中。由于数据库中存储有数据页文件的标识与事务日志文件的标识之间的对应关系,因此,若预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系中包括待查询标识。可以利用该对应关系确定与待查询数据页文件的标识对应的事务日志文件的标识。确定与待查询数据页文件的标识对应的事务日志文件的标识之后,即可确定存储事务记录的事务日志文件,从而从该存储事务记录的事务日志文件中提取与待查询标识对应的事务记录。步骤403:根据事务日志文件中存储的事务记录更新对应关系,并根据待查询标识,从更新后的对应关系中查找与待查询标识对应的事务日志文件的标识,以及从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。可以理解的是,若预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系不包括待查询标识,则说明该待查询标识对应的事务记录可能是新增的,即数据页文件的标识与事务日志文件的标识之间的对应关系中,可能还并未包括该事务记录对应的数据页文件标识与存储该事务记录的事务日志文件的标识之间的对应关系。鉴于此,在本申请实施例中,可以根据事务日志文件中存储的事务记录更新对应关系。具体地,可以遍历事务日志文件,确定出事务日志文件中新增的事务记录,在数据页文件的标识与事务日志文件的标识之间的对应关系中,增加该新增的事务记录对应的数据页文件的标识与存储该新增的事务记录的事务日志文件的标识之间的对应关系。更新该对应关系之后,即可根据待查询标识,从更新后的对应关系中查找与待查询标识对应的事务日志文件的标识,以及从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。可以理解的是,若从更新后的对应关系中依然查找不到与待查询标识对应的事务日志文件的标识,则表明该待查询标识不存在。此时,可以向客户端返回用于表征请求错误的消息。需要说明的是,上文提及的数据页文件的标识与事务日志文件的标识之间的对应关系,是预先建立的。但是,考虑到实际应用中,若数据库服务器接收到事务记录查询请求时,该对应关系还并未建立。也就是说,数据库服务器解析该事务记录查询请求得到待查询数据页文件的标识之后,由于不存在预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系,故而无法确定与该待查询页文件的标识对应的事务日志文件的标识。对于这种情况,服务器可以根据事务日志文件中存储的事务记录,生成数据页文件的标识与事务日志文件的标识之间的对应关系。从而根据待查询标识,从生成的数据页文件的标识与事务日志文件的标识之间的对应关系中,查找与待查询标识对应的事务日志文件的标识,以及从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。需要说明的是,在实际应用中,数据库服务器接收到事务记录查询请求之后,要以数据页文件的形式要向客户端反馈该事务记录查询请求对应的事务记录。鉴于此,在本申请实施例中,提取到与待查询标识对应的事务记录之后,还可以生成与该事务记录对应的数据页文件,以便以数据页文件的形式向客户端反馈该事务记录查询请求对应的事务记录。需要说明的是,虽然在本申请实施例中,是在数据库服务器接收到事务记录查询请求并提取到该事务记录查询请求对应的事务记录之后,生成与事务记录对应的数据页文件的,但是在实际应用中,也可以定期将事务日志文件中的事务记录生成数据页文件。只是,采用本申请实施例的方案,可以节省一些生成数据页文件的资源,减轻了数据库服务器的负担。以上对本申请实施例提供的存储方法进行了介绍,以下结合具体场景对本申请实施例提供的存储方法进行介绍。参见图5,该图为本申请实施例提供的一个应用场景的示意图。图5所示的应用场景,包括第二客户端300和第二数据库400。其中,第二客户端300可以向第二数据库400中的第二数据库服务器410发送sql请求以请求存储事务记录,第二客户端300可以向第二数据库400中的第二数据库服务器410发送事务记录查询请求以请求读取事务记录。第二数据库中包括三个缓存池,分别为缓存池420a、缓存池420b和缓存池420c。第二数据库中还包括三个事务日志文件,分别为事务日志文件430a、事务日志文件430b和事务日志文件430c。其中,缓存池和事务日志文件之间的对应关系如下表2所示。表2缓存池事务日志文件缓存池420a事务日志文件430a缓存池420b事务日志文件430b缓存池420c事务日志文件430c参见图6,该图为本申请实施例提供的一种存储方法的流程示意图。图6所示的存储方法,可以由第二数据库服务器410执行。该方法例如可以通过如下步骤601-607实现。步骤601:获取第一事务记录和第二事务记录。第二数据库服务器可以接收第二客户端发送的第一sql请求和第二sql请求,并解析第一sql请求和第二sql请求,得到第一sql请求对应的第一数据页文件,以及第二sql请求对应的第二数据页文件,从而获得第一事务记录和第二事务记录。步骤602:根据第一数据页文件的标识,计算得到第一数据页文件对应的缓存池标识为缓存池420a的标识。而第二数据页文件对应的缓存池标识并不是实际存在的缓存池的标识。需要说明的是,第二数据页文件对应的缓存池标识并不是实际存在的缓存池的标识,标识,第二数据页文件对应的缓存池标识并不是缓存池420a的标识,也不是缓存池420b的标识,也不是缓存池420c的标识。步骤603:将第一事务记录存储到与缓存池420a中。步骤604:确定缓存池420a对应的事务日志文件为430a,将第一事务记录从缓存池420a中写入到事务日志文件430a中。步骤605:生成与第二数据页文件对应的缓存池标识对应的缓存池,即生成缓存池420d(图5中未示出)。步骤606:建立缓存池420d与事务日志文件430a之间的对应关系。关于步骤606,需要说明的是,在本申请实施例的另一种可能的实现方式中,还可以生成一个新的事务日志文件作为与缓存池420d对应的事务日志文件。步骤607:将第二事务记录存储到与缓存池420d中,并将第二事务记录从缓存池420d中写入到事务日志文件430a中。关于步骤605执行顺序,需要说明的是,步骤605可以和步骤603同时执行,步骤605也可以在步骤602和步骤603之间执行,步骤605还可以与步骤604同时执行。另外,步骤604只需要在步骤603之后执行即可,无需限定为图6所示的执行顺序。需要说明的是,图6所示的方法仅是对本申请实施例提供的存储方法的一种示例性说明,并不构成对本申请实施例的限定。为便于更好的实施本申请实施例的上述方案,下面还提供用于实施上述存储方法的相关装置。请参考图7所示,本申请实施例提供的一种存储装置700,该存储装置700具体对应于上述提供的存储方法的功能。该存储装置700的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的单元,单元可以是软件和/或硬件。该装置700可以包括:获取单元710、存储单元720和写入单元730。获取单元710,用于获取事务记录,事务记录为对数据页文件进行操作的操作记录,事务记录中携带有数据页文件的标识;存储单元720,用于根据数据页文件的标识,确定与事务记录对应的缓存池,并将事务记录存储在对应的缓存池中;写入单元730,用于将对应的缓存池中的事务记录写入与对应的缓存池对应的事务日志文件中,其中,不同的事务日志文件对应的缓存池不同。在一种可能的实现方式中,若同一个缓存池对应多条事务记录,则将事务记录存储在对应的缓存池中包括:按照对数据页文件进行操作的操作顺序,将多条事务记录依次存储在对应的缓存池中。在一种可能的实现方式中,按照对数据页文件进行操作的操作顺序,将多条事务记录依序存储在对应的缓存池中包括:按照多条事务记录中分别携带的事务日志序列号由小到大的顺序,将多条事务记录依序存储在对应的缓存池中。在一种可能的实现方式中,根据数据页文件的标识,确定与事务记录对应的缓存池包括:根据数据页文件的标识,按照预设规则计算得到目标缓存池标识,目标缓存池标识为与事务记录对应的缓存池的标识;若存在与目标缓存池标识对应的缓存池,则将与目标缓存池标识对应的缓存池确定为与事务记录对应的缓存池。在一种可能的实现方式中,根据数据页文件的标识,确定与事务记录对应的缓存池还包括:若不存在与目标缓存池标识对应的缓存池,则生成与目标缓存池标识对应的缓存池;相应的,该装置700还包括:对应关系建立单元,用于建立与目标缓存池标识对应的缓存池与事务日志文件之间的对应关系;或,事务日志文件生成单元,用于生成与目标缓存池标识对应的缓存池所对应的事务日志文件。在一种可能的实现方式中,数据页文件的标识至少包括以下其中一种:数据页文件的编号和数据页文件所处的表空间的标识。在一种可能的实现方式中,该装置700还包括:接收单元,用于接收事务记录查询请求,事务记录查询请求中携带有待查询标识,待查询标识为待查询的数据页文件的标识;第一提取单元,用于若预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系中包括待查询标识,则根据对应关系得到与待查询标识对应的事务日志文件的标识,并从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。在一种可能的实现方式中,该装置700还包括:更新查询单元,用于若预先建立的数据页文件的标识与事务日志文件的标识之间的对应关系不包括待查询标识,则根据事务日志文件中存储的事务记录更新对应关系,并根据待查询标识,从更新后的对应关系中查找与待查询标识对应的事务日志文件的标识,以及从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录;第二提取单元,用于若不存在预先建立的对应关系,则根据事务日志文件中存储的事务记录生成对应关系,并根据待查询标识,从生成的对应关系中查找与待查询标识对应的事务日志文件的标识,以及从与事务日志文件的标识对应的事务日志文件中提取与待查询标识对应的事务记录。在一种可能的实现方式中,该装置700还包括:数据页文件生成单元,用于根据待查询标识对应的事务记录,生成与待查询标识对应的数据页文件。需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请实施例方法实施例基于同一构思,其带来的技术效果与本申请实施例方法实施例相同,具体内容可参见本申请实施例前述所示的方法实施例中的叙述,此处不再赘述。接下来介绍本申请实施例中的存储设备。请参阅图8所示,通信设备800包括:处理器810、通信接口820和和存储器830。其中通信设备800中的处理器810的数量可以一个或多个,图8中以一个处理器为例。本申请实施例中,处理器810、通信接口820和存储器830可通过总线系统或其它方式连接,其中,图8中以通过总线系统840连接为例。处理器810可以是中央处理器(centralprocessingunit,cpu),网络处理器(networkprocessor,np)或者cpu和np的组合。处理器810还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)或其任意组合。存储器830可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(random-accessmemory,ram);存储器830也可以包括非易失性存储器(英文:non-volatilememory),例如快闪存储器(英文:flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器830还可以包括上述种类的存储器的组合。存储器830可以用于存储事务日志文件和缓存池池的对应关系等信息。可选地,存储器830存储有操作系统和程序、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,程序可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。处理器810可以读取存储器830中的程序,实现本申请实施例提供的存储方法。总线系统840可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线系统840可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。本申请实施例还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上方法实施例提供的存储方法。本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行以上方法实施例提供的存储方法。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1