数据库存储日志方法及装置与流程
未命名
09-02
阅读:122
评论:0

1.本技术涉及计算机技术领域,尤其涉及一种数据库存储日志方法及装置。
背景技术:
2.关系数据库(relational database)是创建在关系模型基础上的数据库,服务器借助于集合代数等数学概念和方法来处理数据库中的数据。为提高联机事务处理(on-line transaction processing,oltp)业务中列数据的查询效率,oltp业务常采用列存模式的关系数据库来管理数据;其中,列存模式是指数据以列(column)为逻辑存储单元进行存储。
3.在列存模式的关系数据库插入一行数据,日志库会记录该行数据涉及的所有列对应的复现日志(redo log),该redo log用于恢复数据库中与前述的列关联的数据页面(page)存储的数据。由于一行数据涉及多个列,日志库会记录每个列关联的page的redo log,产生的redo log数量较多,导致日志库存储这些redo log所需的存储空间较大,进而,数据库的数据访问性能受到影响。因此,如何提供一种更有效的存储日志方法成为目前亟需解决的问题。
技术实现要素:
4.本技术提供一种数据库存储日志方法及装置,解决了数据插入过程中,产生的redo log数量较多、日志库存储这些redo log所需的存储空间较大,进而,导致数据库的数据访问性能受到影响的问题。
5.本技术采用如下技术方案。
6.第一方面,本技术的实施例提供了一种数据库存储日志方法,该方法可应用于数据处理系统,或者支持数据处理系统实现该方法的计算设备,如该计算设备包括芯片或芯片系统。示例的,该计算设备用于提供有数据库,该数据库包括多个存储列,一个存储列的存储空间是由一个或多个列存储单元(column unit,cu)提供的,该方法包括:首先,计算设备为数据库提供了隐藏列,该隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状态。其次,计算设备根据状态信息确定第一数据所在的第一行处于可访问状态,前述的第一cu位于该第一行。此外,计算设备获取第一cu的位置标识,以及,第一cu所关联的数据页面(page)的复现日志(redo log)。最后,计算设备将前述的redo log、位置标识和第一数据写入日志库;该日志库用于恢复第一行关联的多个page。
7.在本技术的实施例中,数据库具有用于指示多个存储列的访问状态的隐藏列,并在隐藏列中第一cu记录有与第一数据所在的第一行的状态信息;若第一行为可访问状态,则计算设备记录第一cu的位置标识和第一cu关联的page的redo log,并将该redo log、位置标识以及第一数据写入日志库。由于日志库仅需记录第一cu关联的page的redo log,避免了日志库存储该第一行所关联的多个cu所关联的多个page的redo log,减少了日志库的存储空间开销,提高了日志库的存储资源利用率;而且,日志库中记录的信息可用于恢复第
一数据所在的page,大大减少数据插入过程中产生的redo log,提高了数据库的访问性能。
8.在一种可能的示例中,前述的位置标识包括:第一cu的列标识和第一行的行标识。由于一个列存表对应的多个列中,每个列对应的用于存储数据的cu的编排方式一致,因此,对于属于同一行的多个cu来说,这多个cu的列标识(cu_id)是相同的。此外,对于属于同一行的多个cu来说,这多个cu的行标识(row_id)也是相同的。如此,在确定一个列中的cu的cu_id和row_id之后,即可确定与该cu属于同一行的其他cu的cu_id和row_id。
9.在一种可选的实现方式中,在计算设备根据状态信息确定第一数据所在的第一行处于可访问状态之前,本实施例提供的数据库存储日志方法还包括:第一,计算设备获取数据插入请求,该数据插入请求包括第一数据。第二,计算设备依据数据插入请求包括的目的地址,将数据库中目的地址指示的行作为前述的第一行。第三,计算设备在隐藏列的第一cu中写入状态信息。计算设备可通过隐藏列中记录的状态信息来确定数据即将被存储的行的访问状态,并在数据即将被存储的行处于可访问状态的情况下,将数据插入请求包括的数据写入该行,避免了数据被写入数据库中不可访问的行,提高了数据库的数据访问准确率。而且,由于在日志存储的过程中,日志库无需存储处于不可访问状态的行的日志,因此,减少了日志库存储该不可访问状态的行的日志的存储空间,提高了日志库的存储性能。
10.在另一种可选的实现方式中,计算设备将redo log、位置标识和第一数据写入日志库,包括:计算设备将redo log写入日志库包括的物理日志库;以及,计算设备将位置标识和第一数据写入日志库包括的逻辑日志库,该逻辑日志库用于存储物理日志库中redo log所对应的位置标识和数据。本技术的实施例采用混合日志(物理日志和逻辑日志)的方式来存储日志,即物理日志库只记录隐藏列的redo log,以及整条行记录对应的逻辑日志(包括前述的位置标识以及第一数据本身),如此,物理日志库不用记录每一个存储列对应的数据页面的redo log,大大减少数据插入过程中产生的redo log,提高了数据库的插入性能。
11.在一种可能的情形中,前述的逻辑日志库还包括:第一行关联的多个cu的列标记,一个列标记对应一个存储列。在逻辑日志库中存储有第一行关联的列标记,依据该列标记确定每个存储列所存储的数据,避免了在数据恢复的过程中,存储列1所存储的数据被恢复到其他存储列(如存储列2),提高了数据恢复的准确率。
12.在另一种可选的实现方式中,本实施例提供的数据库存储日志方法还包括:第一,计算设备获取数据恢复请求,该数据恢复请求用于指示恢复第一数据所在的page。第二,计算设备依据数据恢复请求,读取物理日志库存储的redo log。第三,计算设备依据数据恢复请求,读取逻辑日志库存储的位置标识,以及从逻辑日志库中读取第一数据和第一数据对应的所有列标记。第四,计算设备依据redo log、位置标识和所有列标记,恢复第一数据所在的page。示例的,计算设备可依据位置标识包括的行标识确定第一数据在数据库中的行位置,并依据该行位置、前述的列标记以及位置标识包括的列标识确定第一数据存储的目标地址,该目标地址与数据页面的物理地址对应,进而,计算设备将第一数据写入物理地址指示的数据页面,从而实现对该数据页面的恢复。
13.第二方面,提供了一种数据库存储日志装置,该装置应用于数据处理系统,或者支持数据处理系统实现该方法的计算设备,如该计算设备包括芯片或芯片系统。该数据库存储日志装置包括用于执行第一方面或第一方面任一种可能实现方式中的数据库存储日志
方法的各个模块。示例的,计算设备用于提供数据库,该数据库包括多个存储列,一个存储列的存储空间是由一个或多个cu提供的,该应用于计算设备的数据库存储日志装置包括:状态单元、确定单元、获取单元和访问单元。
14.状态单元用于提供隐藏列。该隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状态。确定单元用于根据状态信息确定第一数据所在的第一行处于可访问状态,该第一cu位于第一行。获取单元用于获取第一cu的位置标识,以及,第一cu所关联的数据页面page的复现日志redo log。访问单元用于将redo log、位置标识和第一数据写入日志库。该日志库用于恢复第一行关联的多个page。
15.有益效果可以参见第一方面中任一方面的描述,此处不再赘述。所述数据库存储日志装置具有实现上述第一方面中任一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
16.示例的,前述的位置标识包括:第一cu的列标识和第一行的行标识。
17.在一种可选的实现方式中,该数据库存储日志装置还包括:接收单元。该接收单元,用于接收数据插入请求,该数据插入请求包括第一数据。前述的确定单元,还用于:依据数据插入请求包括的目的地址,将数据库中目的地址指示的行作为第一行;以及,在隐藏列的第一cu中写入状态信息。
18.在另一种可选的实现方式中,前述的访问单元,具体用于:将redo log写入日志库包括的物理日志库;以及,将位置标识和第一数据写入日志库包括的逻辑日志库,该逻辑日志库用于存储物理日志库中redo log所对应的位置标识和数据。
19.在一种可能的情形中,逻辑日志库还包括:第一行关联的多个cu的列标记,一个列标记对应一个存储列。
20.在又一种可选的实现方式中,接收单元,还用于接收数据恢复请求,该数据恢复请求用于指示恢复第一数据所在的page。访问单元,还用于:依据数据恢复请求,读取物理日志库存储的redo log,以及,读取逻辑日志库存储的位置标识,以及从逻辑日志库中读取第一数据和第一数据对应的所有列标记。该数据库存储日志装置还包括:恢复单元,该恢复单元用于依据redo log、位置标识和所有列标记,恢复第一数据所在的page。
21.第三方面,提供了一种计算设备,包括:存储器和处理器。存储器用于存储程序代码;处理器用于调用程序代码实现第一方面中任一方面的方法的操作步骤。
22.第四方面,提供了一种数据处理系统,包括:日志库和第三方面提供的计算设备。该计算设备用于提供数据库,数据库包括多个存储列,一个存储列的存储空间是由一个或多个cu提供的。示例性的,计算设备还提供隐藏列,隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状态。计算设备根据状态信息确定第一数据所在的第一行处于可访问状态,第一cu位于第一行。计算设备获取第一cu的位置标识,以及,第一cu所关联的数据页面page的复现日志redo log。计算设备将redo log、位置标识和第一数据写入日志库。日志库用于恢复第一行关联的多个page。有益效果可以参见第一方面中任一方面的描述,此处不再赘述。
23.第五方面,提供了一种计算机可读存储介质,存储介质中存储有计算机程序或指
令,当计算机程序或指令被计算设备执行时,实现第一方面中任一方面的方法的操作步骤。
24.第六方面,提供了一种存储设备,该存储设备可用于提供上述任一方面中的日志库。
25.第七方面,提供了一种计算机程序产品,该计算程序产品包括指令,当计算机程序产品在处理器或计算设备上运行时,使得处理器或计算设备执行该指令,以实现第一方面和第一方面中任一种可能实现方式中的方法。
26.第八方面,本技术提供一种芯片,包括:接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的数据并传输至控制电路,或将来自控制电路的数据发送给处理器之外的其它设备,控制电路通过逻辑电路或执行代码指令用于实现第一方面中任一方面中任一种可能实现方式的方法。有益效果可以参见第一方面中任一方面的描述,此处不再赘述。本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
27.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
28.图1为本技术提供的一种数据处理系统的架构示意图;
29.图2为本技术提供的一种数据库的架构示意图;
30.图3为本技术提供的一种日志库的结构示意图;
31.图4为本技术提供的一种数据库存储日志方法的流程示意图一;
32.图5为本技术提供的一种数据库存储日志方法的流程示意图二;
33.图6为本技术提供的一种数据库存储日志方法的流程示意图三;
34.图7为本技术提供的不同数据库存储日志方法的对比示意图;
35.图8为本技术提供的一种数据库存储日志装置的结构示意图;
36.图9为本技术提供的一种计算设备的结构示意图。
具体实施方式
37.本技术的实施例提供了一种数据库存储日志方法,该数据库包括多个存储列,一个存储列的存储空间是由一个或多个cu提供的。该方法包括:首先,计算设备为数据库提供了隐藏列,该隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状态。其次,计算设备根据状态信息确定第一数据所在的第一行处于可访问状态,前述的第一cu位于该第一行。此外,计算设备获取第一cu的位置标识,以及,第一cu所关联的数据页面(page)的复现日志(redo log)。最后,计算设备将前述的redo log、位置标识和第一数据写入日志库;该日志库用于恢复第一行关联的多个page。在本技术的实施例中,数据库提供了用于指示多个存储列的访问状态的隐藏列,并在隐藏列中第一cu记录有与第一数据所在的第一行的状态信息;若第一行为可访问状态,则计算设备记录第一cu的位置标识和第一cu关联的page的redo log,并将该redo log、位置标识以及第一数据写入日志库。由于日志库仅需记录第一cu关联的page的redo log,避免了日志库存储该第一行所关联的多个cu所关联的多个page的redo log,减
少了日志库的存储空间开销,提高了日志库的存储资源利用率;而且,日志库中记录的信息可用于恢复第一数据所在的page,大大减少数据插入过程中产生的redo log,提高了数据库的访问性能。
38.为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍。
39.图1为本技术提供的一种数据处理系统的架构示意图,该数据处理系统100包括:计算设备110和存储设备120。在图1所示的应用场景中,用户通过应用程序来存取数据。运行这些应用程序的计算机可以被称为“计算设备”。计算设备110可以是物理机,也可以是虚拟机。物理机可以包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。
40.在一种可能的示例中,计算设备110通过网络访问存储设备120以存取日志或日志关联的其他数据等。如该网络可以包括交换机、路由器或者其他网络设备等。
41.在另一种可能的示例中,计算设备110也可以通过有线连接与存储设备120通信,例如,通用串行总线(universal serial bus,usb)或快捷外围部件互连标准(peripheral component interconnect express,pcie)总线、融合总线(unified bus,ub或ubus)等。
42.在一种可行的实现方式中,图1所示的数据处理系统100可以是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎。引擎是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现,如引擎可包括控制器、前段接口和后端接口等。如计算设备110可通过pcie总线访问存储设备120,该存储设备120的存储空间可以是由集中式存储系统中的存储器提供的,该存储器可以是,但不限于:随机存取存储器。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,dram),或者存储级存储器(storage class memory,scm)。dram是一种半导体存储器,与大部分随机存取存储器(random access memory,ram)一样,属于一种易失性存储器(volatile memory)设备。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比dram慢,在成本上也比dram更为便宜。然而,dram和scm在本实施例中只是示例性的说明,存储器还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。
43.在另一种可行的实现方式中,图1所示的数据处理系统100还可以是一个分布式存储系统,该分布式存储系统包括计算设备集群和存储设备集群,计算设备集群包括一个或多个计算设备,各个计算设备之间可以相互通信。计算设备可以是一种物理机,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,计算设备可以包括处理器、内存和网卡等。其中,处理器是一个中央处理单元(central processing unit,cpu),用于处理来自计算设备外部的数据访问请求,或者计算设备内部生成的请求。示例性的,处理器接收用户发送的数据插入请求时,会将这些数据插入请求中的数据暂时保存在内存中。当内存中的数据总量达到一定阈值时,处理器将内存中存储的数据发送给存储设备进行持久化存储。除此之外,处理器还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间、地址转换以及存取复现日志(redo log)等。在一种示例中,任意一个计算设备可通过网络访问存储设备集群中的任意一个存储设备。存储设备集群包括多个存储设备。一个存储设备包括一个或多个控制器、网卡与多个硬盘,该网卡用于与计算设备通信。在本技术的实施例中,存储设备可用于提供存储设备120的存储空间,存储设备还可用于提
供数据库所需的存储空间。
44.值得注意的是,以上仅为本实施例提供的应用场景或数据处理系统的示例,不应理解为对本技术的限定。
45.在一种可能的实现方式中,该计算设备110可用于提供数据库的存储空间,存储设备120可用于提供记录有该数据库的日志的日志库的存储空间。
46.示例性的,计算设备110可用于提供关系型数据库的存储空间。关系数据库(relational database)是创建在关系模型基础上的数据库,服务器借助于集合代数等数学概念和方法来处理数据库中的数据,如甲骨文(oracle)数据库、结构化查询语言(structured query language,sql)数据库和mysql数据库等。通常,关系数据库采用行存模式来存储数据,行存模式是指数据以行(row)为逻辑存储单元进行存储,或称基于行的存储(row-based storage)方式,即一整行数据在存储介质中连续存放。随着大数据(big data)、人工智能(artificial intelligence,ai)和云计算的技术的发展,关系数据库中存储的数据量急剧增加,在oltp业务中,行存模式的关系数据库访问目标数据的速度较低。因此,列存模式的关系数据库应运而生,列存模式是指数据以列(column)为逻辑存储单元进行存储,或称基于列的存储(column-based storage)方式,即一整列数据在存储介质中连续存放。
47.如图2所示,图2为本技术提供的一种数据库的架构示意图,该数据库200的存储空间可以是由图1所示出的计算设备110提供的。该数据库200可以采用双模式(行存模式+列存模式)的数据存放方式(column store),即计算设备提供的磁盘上的数据以行存模式的方式进行存储,而计算设备提供的内存里有两块独立的存储区域:列式存储区210和数据高速缓冲区220。
48.数据高速缓冲区(database buffer cache)220以行存模式的方式存储数据,数据以行(row)为逻辑存储单元进行存储,即一整行数据在存储介质中连续存放。示例的,在数据高速缓冲区220中,计算设备110执行数据操纵语言(data manipulation language,dml)操作是较为便捷的。例如,一个dml操作可以完成整条记录的处理,如插入(insert)行、更新(update)行,以及删除(delete)行等,从而实现数据库的原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)等特性。
49.列式存储区(in-memory)210以列存模式的方式存储数据,数据则以列(column)为逻辑存储单元进行存储,即一整列数据在存储介质中连续存放。因此,该数据库200可满足olap业务的数据访问需求,如数据查询、数据插入等。
50.在本技术的实施例中,列式存储区210包括多个存储列,如图2所示出的列1至列n,n为正整数。例如,n为500、1000或者其他等,不予限定。在数据库中,多个存储列是由列存表来管理的。在列存表中,每列的长度是固定的,因此,同一行记录中的所有列,存储的逻辑位置是一致的。本技术的实施例以前述n个存储列由一个列存表进行管理为例进行说明,但数据库中可包括多个列存表,一个列存表管理数据库的一个或多个存储列。一个存储列的存储空间是由一个或多个列存储单元(cu)提供的,如cu1和cu2。一个cu对应计算设备的存储器中一个或多个数据页面(page)。一个page可用于提供一个原子单位的存储空间,原子单位是指计算设备进行数据访问操作的最小读写单元,如4千字节(kilo bytes,kb)、8kb或其他等。在一些可行的实现方式中,一个cu用于存储该cu所在存储列中固定数量(比如8192
个/条数据记录)的字段。
51.如图2所示,该数据库200还具有隐藏列,该隐藏列的存储空间也是由一个或多个cu提供的。例如,该隐藏列对应的一个或多个cu中,第一cu记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状态。如访问状态包括:可访问状态、不可访问状态。在一些情形中,访问状态也可以称为行的可见性:如该行处于可访问状态,则称该行可见;如该行处于不可访问状态,则称该行不可见。
52.由于隐藏列可以用于指示数据库中存储列的访问状态,且该访问状态确定了计算设备对存储列所对应的数据访问操作是否有效,因此,该隐藏列也可以被称为独立于数据库中存储列的有效列(valid column)。
53.在每个列(如前述的隐藏列和存储列)中,cu的编排方式是一致的,如隐藏列对应cu1和cu2,多个存储列中的列1也对应了cu1和cu2,为了区分不同列中的cu,则还可添加cu所在列的列标记(tag),或称列标签。例如,隐藏列对应的cu1记为cu1_valid,列1对应的cu1记为cu1_column1。另外,在多个列(如前述的隐藏列和存储列)中,多个行的编排方式也是一致的,例如,cu的序号为1对应的多个列中,行的序号依次为1至8。
54.值得注意的是,由于一个列存表对应的多个列中,每个列对应的用于存储数据的cu的编排方式一致,因此,对于属于同一行的多个cu来说,这多个cu的列标识(cu_id)是相同的。此外,对于属于同一行的多个cu来说,这多个cu的行标识(row_id)也是相同的。如此,在确定一个列中的cu的cu_id和row_id之后,即可确定与该cu属于同一行的其他cu的cu_id和row_id。在一种可选的情形中,该包括cu的cu_id和row_id的信息可以称为该cu的位置标识。
55.图2为本技术的实施例提供的一种数据库的实现方式,不应理解为对本技术的限定。示例的,本技术所提供的数据库可以是仅包括列式存储区的数据库。
56.下面在图1所示出的存储设备120的基础上,针对于存储设备120提供的日志库,本技术的实施例提供一种可能的实现方式,如图3所示,图3为本技术提供的一种日志库的结构示意图,该日志库300的存储空间可以是由存储设备120提供的,还可以是由与计算设备110通信的其他存储设备提供的,这里以日志库300的存储空间是由存储设备120提供的为例进行说明,该日志库300用于记录图2所示出的数据库200的日志,如该日志为复现日志(redo log)。
57.如图3所示,该日志库300包括物理日志库310和逻辑日志库320。
58.物理日志库310用于存储数据库200所关联的page的redo log。其中,物理日志库310中存储的物理日志(包括前述的redo log),用于描述计算设备对数据页面(page)的修改。
59.示例性的,redo log以块为单位进行存储,该存储redo log的块可以称为复现日志块(redo log block),一个块占512字节。在一种可行的方式中,一个块包括:日志块头、日志块尾和日志主体。其中日志块头占用12字节,日志块尾占用8字节,所以每个redo log block的日志主体部分只有512-12-8=492字节。因为redo log记录的是数据页面的变化,当一个数据页面产生的变化需要使用超过492字节的redo log来记录时,则使用多个redo log block来记录该数据页面的变化。
60.另外,当物理日志库310存储有多个redo log时,每个redo log可以用日志的逻辑
序列号(log sequence number,lsn)来进行区分。该lsn可用于指示数据页面的版本信息、写入物理日志库的日志总量(如通过lsn开始号码和结束号码可以计算出写入的日志量),以及查询检查点(checkpoint)的位置等。
61.lsn不仅存在于redo log中,还存在于数据页面中,如数据页面的头部记录了当前页面最终的lsn值是多少。通过数据页面的lsn值和redo log中的lsn值比较,如果数据页面中的lsn值小于redo log中lsn值,则表示数据页面所存储的数据丢失了一部分,这时候可以通过redo log的记录来恢复到redo log中记录的lsn值时的状态。
62.与物理日志对应的逻辑日志用于描述某个数据访问操作,不关联数据访问操作所关联的物理的页面(page)。示例性的,如该逻辑日志为undo log,该undo log用于提供回滚和多个行版本控制的功能。如在数据修改的时候,日志库不仅记录了redo log,还记录了相对应的undo log,如果因为某些原因导致事务失败或回滚了,可以借助该undo log进行回滚。当删除(delete)一条记录时,undo log中会记录一条对应的插入(insert)记录,反之亦然,当更新(update)一条记录时,undo log记录一条对应相反的update记录。
63.如图3所示,逻辑日志库320用于存储物理日志库中redo log对应的位置标识和数据。
64.当计算设备获取到数据恢复请求时,计算设备可从日志库300中读取数据恢复请求所指示的数据、位置标识以及相应的redo log,从而对该数据恢复请求指示的page进行恢复。关于数据恢复的过程可参考下述附图6相应的实施例,不予赘述。
65.可选的,逻辑日志库320中还存储有数据关联的所有列的列标记(tag)。示例的,该数据存储在数据库200的第一行中,该第一行为数据库200中的任意一行,该逻辑日志库320存储有该第一行所关联的多个存储列的列标记。如此,逻辑日志库320可用于存储第一行中的数据、第一行中第一cu的位置标识,以及第一行关联的多个cu的列标记。其中,第一cu为数据库200中隐藏列和第一行所匹配的cu。
66.首先,由于属于同一行的多个cu的位置标识相同,因此,逻辑日志库320中仅需保存该第一cu的位置标识,无需存储属于同一行的多个cu的位置标识,节省了逻辑日志库320的存储空间。
67.其次,在日志存储的过程中,计算设备无需记录第一行所关联的所有cu的位置标识,降低了记录位置标识所需的时间,提高了日志存储的效率。
68.最后,在数据恢复的过程中,计算设备可以依据逻辑日志库320中存储的所有列标记来将数据恢复到对应的多个page,避免了数据被恢复到错误的page(如将数据的a部分恢复到了b部分所存储的page),提高了数据恢复的准确率。
69.下面将结合附图4至图7,对本实施例提供的数据库存储日志方法的具体实现方式进行详细描述。
70.如图4所示,图4为本技术提供的一种数据库存储日志方法的流程示意图一,该数据库存储日志方法可应用在图1所示出的数据处理系统100,该数据库可以是指图2所示出的数据库200,该数据库对应的日志可存储在图3所示出的日志库300中,这里以图1所示出的计算设备110执行本实施例的方法为例进行说明。
71.如图4所示,数据库200具有隐藏列,该隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状
态。
72.s410,计算设备获取数据插入请求。
73.其中,该数据插入请求包括第一数据。可选的,该第一数据将以行的方式插入数据库200。
74.在一种情形中,该数据插入请求是由计算设备生成的写输入/输出(input/output,i/o)请求。
75.在另一种情形中,该数据插入请求是计算设备根据本地执行的业务生成的写i/o请求。
76.可选的,该数据插入请求还可以包括第一数据的目的地址,该目的地址指示了第一数据在数据库中的存储位置。如图4所示,该存储位置可以是指数据库200包括的行,一个行记录的数据可以由多个存储列对应的cu来存储。
77.s420,计算设备依据数据插入请求包括的目的地址,将数据库中目的地址指示的行作为第一行。
78.如图4所示,第一行对应了数据库包括多个存储列;隐藏列对应的一个或多个cu中,与该第一行的行标识一致的cu为第一cu。示例性的,该第一行可以是指第一数据将要存储的目标行或者目标存储行等。
79.例如,由于该第一行是数据插入请求携带的第一数据所要存储的行,因此,计算设备需将该第一行标记为可访问状态,请参见图4所示出的s430。
80.s430,计算设备在隐藏列的第一cu中写入状态信息。
81.该状态信息用于指示第一cu所在的行(第一行)的访问状态。
82.在一种示例中,状态信息为“1”指示了该第一行为可访问状态,状态信息为“2”指示了该第一行为不可访问状态。例如,若第一行为可访问状态,则该第一行可以被写入数据,或者计算设备可从该第一行读取数据。如此,该可访问状态也可以称为该行处于有效状态。例如,若第一行为不可访问状态,则该第一行不能被写入数据,以及计算设备不可从该第一行读取数据。如此,该不可访问状态也可以称为该行处于无效状态。
83.在本实施例中,第一数据将被写入第一行,且计算设备需记录该第一数据的相关日志,则计算设备在第一cu中写入的状态信息可以是“1”。应理解,上述状态信息的数值或字段仅为本技术提供的示例,不应理解为对本技术的限定。
84.另外,若数据库包括的与第一行不同的第二行为该第一行的数据备份行或者校验行,在一些可能的情形中,计算设备可在隐藏列中与该第二行对应的cu中写入不可访问的状态信息,该状态信息用于指示第二行处于不可访问状态。
85.在本技术的实施例中,计算设备可通过隐藏列中记录的状态信息来确定数据即将被存储的行的访问状态,并在数据即将被存储的行处于可访问状态的情况下,将数据插入请求包括的数据写入该行,避免了数据被写入数据库中不可访问的行,提高了数据库的数据访问准确率。而且,由于在日志存储的过程中,日志库无需存储处于不可访问状态的行的日志,因此,减少了日志库存储该不可访问状态的行的日志的存储空间,提高了日志库的存储性能。
86.下面在图4所示出的实施例的基础上,本技术的实施例提供的数据库存储日志方法还包括存储日志的过程,如图5所示,图5为本技术提供的一种数据库存储日志方法的流
程示意图二,本技术的实施例提供的数据库存储日志方法包括以下步骤s510至s530。
87.s510,计算设备根据状态信息确定第一数据所在的第一行处于可访问状态。
88.该第一行对应隐藏列包括的一个或多个cu中的第一cu。
89.s520,计算设备获取第一cu的位置标识,以及,第一cu所关联的数据页面的复现日志。
90.其中,该位置标识包括:第一cu的列标识和第一行的行标识。在一种可能的具体示例中,该位置标识是指记录有前述状态信息的字段的标识,该字段也位于第一行,且该字段的存储空间是由第一cu提供的。关于位置标识更多详细的内容可参考图2和图3的相关阐述,不予赘述。
91.可选的,计算设备还可获取第一cu所关联的数据页面的undo log,以避免在redo log无法对第一数据所在的page进行恢复的情况下,计算设备利用该undo log恢复第一数据所在的page,提高了数据库的访问性能。
92.在一种可能的情形中,第一cu可关联一个或多个page,该一个或多个page用于为第一cu提供存储空间。如图5所示,该第一cu的存储空间是由一个或多个数据页面提供的。
93.s530,计算设备将复现日志(redo log)、位置标识和第一数据写入日志库300。
94.示例性的,日志库300用于恢复第一行关联的多个page。该第一行关联了多个page包括第一行对应的多个cu中,每个cu所关联的page。如图5所示,第一行对应的多个cu包括:第一cu,以及多个存储列中与第一cu同属于第一行的cu。
95.在本技术的实施例中,数据库提供了用于指示多个存储列的访问状态的隐藏列,并在隐藏列中第一cu记录有与第一数据所在的第一行的状态信息。若第一行为可访问状态,则计算设备记录第一cu的位置标识和第一cu关联的page的redo log,并将该redo log、位置标识以及第一数据写入日志库。由于日志库仅需记录第一cu关联的page的redo log,避免了日志库存储该第一行所关联的多个cu所关联的多个page的redo log,减少了日志库的存储空间开销,提高了日志库的存储资源利用率。而且,日志库中记录的信息可用于恢复第一数据所在的page,即数据插入过程中无需产生大量的redo log,提高了数据库的访问性能。
96.可选的,当日志库300包括物理日志库310和逻辑日志库320时,上述的s530可包括以下过程:
①
,计算设备将redo log写入日志库包括的物理日志库310;
②
,计算设备将位置标识和第一数据写入日志库包括的逻辑日志库320。该逻辑日志库320用于存储物理日志库中redo log所对应的位置标识和数据。
97.本技术的实施例采用混合日志(物理日志和逻辑日志)的方式来存储日志,即物理日志库只记录隐藏列的redo log,以及整条行记录对应的逻辑日志(包括前述的位置标识以及第一数据本身),如此,物理日志库不用记录每一个存储列对应的数据页面的redo log,大大减少数据插入过程中产生的redo log,提高了数据库的插入性能。
98.在日志库中存储有redo log,以及该redo log所对应的位置标识、数据后,计算设备还可以依据该日志库存储的各个信息对数据页面进行恢复,如图6所示,图6为本技术提供的一种数据库存储日志方法的流程示意图三,该数据库存储日志方法在上述图4和图5所示出的实施例的基础上,还包括以下步骤s610至s640。
99.s610,计算设备获取数据恢复请求。
100.该数据恢复请求用于指示恢复第一数据所在的page。如图6所示,由于该第一数据存储在第一行所关联的多个cu中,一个cu由一个或多个page提供存储空间,因此,该第一数据所在的page是指该第一行所关联的cu对应的page。
101.s620,计算设备依据数据恢复请求,读取物理日志库310存储的第一数据对应的redo log。
102.示例的,该数据恢复请求携带有该第一数据的元数据,或者第一数据所在数据页面记录的lsn。如计算设备可依据该数据页面记录的lsn读取物理日志库310,并将物理日志库310存储的多个redo log中,与该数据页面记录的lsn相同的redo log作为第一数据对应的redo log。
103.s630,计算设备依据数据恢复请求,读取逻辑日志库320存储的位置标识,以及从逻辑日志库320中读取第一数据和第一数据对应的所有列标记。
104.示例的,计算设备可以依据redo log的lsn查询逻辑日志库320中与该lsn相同的其他信息。如redo log指示的第一cu所对应的位置标识,以及该位置标识中行标识指示的第一行所存储的第一数据,以及该第一行所关联的存储列的所有列标记等。
105.s640,计算设备依据redo log、位置标识和所有列标记,对s610中数据恢复请求指示的第一数据所在的数据页面进行数据恢复。
106.在数据恢复的过程中,计算设备可依据位置标识包括的行标识确定第一数据在数据库中的行位置,并依据该行位置、前述的列标记以及位置标识包括的列标识确定第一数据存储的目标地址,该目标地址与数据页面的物理地址对应,进而,计算设备将第一数据写入物理地址指示的数据页面,从而实现对该数据页面的恢复。
107.另外,若数据恢复过程中,若日志库中存储有修改日志(如该修改日志用于指示数据库提供存储空间的数据页面和cu发生了变化),计算设备可暂时不用考虑该修改日志,从而保证数据恢复请求指示的业务的准确性,并在数据恢复之后,对数据页面所存储的数据进行其他操作(如修改数据的存储位置),使得数据符合前述修改日志的记录,提高了数据恢复的准确率。
108.首先,在一次的行记录插入过程中,由于物理日志库仅需存储一个cu所关联的page的redo log,避免了物理日志库存储该行记录所关联的多个cu所关联的多个page的redo log,减少了物理日志库的存储空间开销,提高了物理日志库的存储资源利用率。
109.其次,通过逻辑日志库来存储与redo log关联的行记录信息(包括位置标识以及第一数据),且逻辑日志库无需与数据页面直接关联,减少了数据恢复过程中对该逻辑日志库包括的行记录进行地址转换所需的计算资源,提高了数据恢复的效率。
110.最后,本技术的实施例采用混合日志(物理日志和逻辑日志)的方式来存储日志,即物理日志库只记录隐藏列的redo log,以及整条行记录对应的逻辑日志(包括前述的位置标识以及第一数据本身),如此,物理日志库不用记录每一个存储列对应的数据页面的redo log,大大减少数据插入过程中产生的redo log,提高了数据库的插入性能。
111.在通常的技术方案中,列存模式的关系数据库不包括隐藏列,每一个存储列是由多个数据页面提供的存储空间,数据访问(如插入、更新或删除等)过程中,若在数据库中插入一行数据,则会记录该行对应的所有存储列所关联的页面的复现日志(redo log),导致数据插入的性能降低;由于产生的redo log较多,redo log占据的存储空间较大,导致数据
库的数据访问效率降低。
112.如图7所示,图7为本技术提供的不同数据库存储日志方法的对比示意图,在图7中的通常技术方案中,数据库包括n个存储列(列1至列n,n为大于1的正整数)。在一行数据的插入过程中,日志库会记录n个存储列中每个存储列所关联的page的redo log,若一个存储列关联m个page,m为正整数,则日志库至少需要记录m
×
n个redo log,日志库的存储资源开销较大。
113.相比之下,如图7所示出的本方案中,在一行数据的插入过程中,日志库仅需记录隐藏列中第一cu所关联的page的redo log,以及一个逻辑日志(用于指示该第一cu的位置标识和该行数据),避免了物理日志库存储该行记录所关联的多个cu所关联的多个page的redo log,减少了物理日志库的存储空间开销,提高了物理日志库的存储资源利用率。
114.在数据量急剧增长以及olap业务快速发展的情况下,列存模式的数据库的使用频次大幅上升,本技术实施例提供的数据库存储日志方法数据库提供了用于指示多个存储列的访问状态的隐藏列,并在隐藏列中第一cu记录有与第一数据所在的第一行的状态信息。若第一行为可访问状态,则计算设备记录第一cu的位置标识和第一cu关联的page的redo log,并将该redo log、位置标识以及第一数据写入日志库。由于日志库仅需记录第一cu关联的page的redo log,避免了日志库存储该第一行所关联的多个cu所关联的多个page的redo log,减少了日志库的存储空间开销,提高了日志库的存储资源利用率。
115.而且,日志库中记录的信息可用于恢复第一数据所在的page,大大减少数据插入过程中产生的redo log,提高了数据库的访问性能。示例的,在数据插入过程中,本技术实施例提供的数据库存储日志方法,由于计算设备无需记录大量的redo log,节省了数据插入过程中的日志存储时间,能够有效提升数据的插入速度。
116.值得注意的是,图4至图7仅为本技术示出的可能实现方式,不应理解为本技术提供的数据库存储日志方法仅能应用于图1至图3所示出的应用场景中。在一些可选的情形中,本技术提供的数据库存储日志方法可以应用在包括列存模式的存储空间的任意数据库,不予限定。
117.可以理解的是,为了实现上述实施例中功能,计算设备和存储设备包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本技术中所公开的实施例描述的各示例的单元及方法步骤,本技术能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
118.如图8所示,图8为本技术提供的一种数据库存储日志装置的结构示意图,该数据库存储日志装置800可以用于实现上述方法实施例中网络设备的功能,因此也能实现上述方法实施例所具备的有益效果。在本技术的实施例中,该数据库存储日志装置800可以是计算设备,如上述图1所示出的计算设备110,还可以是应用于计算设备的模块(如芯片)。
119.如图8所示,数据库存储日志装置800包括:状态单元810、确定单元820、获取单元830、访问单元840、接收单元850和恢复单元860。该数据库存储日志装置800用于实现上述附图中所示的方法实施例中网络设备的功能。在一种可能的示例中,该数据库存储日志装置800用于实现上述数据库存储日志方法,下面具体说明数据库存储日志装置800的各组成部分的功能。
120.状态单元810用于提供隐藏列。该隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:多个存储列对应的所有cu中,与第一cu属于同一行的cu的访问状态。
121.确定单元820用于根据状态信息确定第一数据所在的第一行处于可访问状态,该第一cu位于第一行。
122.获取单元830用于获取第一cu的位置标识,以及,第一cu所关联的数据页面page的复现日志redo log。
123.访问单元840用于将redo log、位置标识和第一数据写入日志库。该日志库用于恢复第一行关联的多个page。
124.当数据库存储日志装置800用于实现图4所示的方法实施例时,接收单元850用于执行s410,确定单元820用于执行s420和s430。
125.当数据库存储日志装置800用于实现图5所示的方法实施例时,确定单元820用于执行s510,获取单元830用于执行s520,访问单元840用于执行s530。
126.当数据库存储日志装置800用于实现图6所示的方法实施例时,接收单元850用于执行s610,访问单元840用于执行s620和s630,恢复单元860用于执行s640。
127.关于上述数据库存储日志装置800执行前述附图提供的实施例中方法的操作步骤时,有益效果可以参见前述实施例的描述,此处不再赘述。
128.数据库存储日志装置800通过软件实现前述附图中任一所示的数据库存储日志方法时,数据库存储日志装置800及其各个模块也可以为软件模块。通过处理器调用该软件模块实现上述的数据库存储日志方法。该处理器可以是中央处理单元(central processing unit,cpu),特定应用集成电路(application-specific integrated circuit,asic)实现,或可编程逻辑器件(programmable logic device,pld),上述pld可以是复杂程序逻辑器件(complex programmable logical device,cpld)、现场可编程门阵列(field programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
129.有关上述数据库存储日志装置800更详细的描述可以参考前述附图所示的实施例中相关描述,这里不加赘述。
130.当数据库存储日志装置800通过硬件实现时,该硬件可以通过处理器或芯片实现。芯片包括接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的数据并传输至控制电路,或将来自控制电路的数据发送给处理器之外的其它设备。
131.控制电路通过逻辑电路或执行代码指令用于实现上述实施例中任一种可能实现方式的方法。有益效果可以参见上述实施例中任一方面的描述,此处不再赘述。
132.可选的,当数据库存储日志装置800还可以通过计算设备实现,如图9所示,图9为本技术提供的一种计算设备的结构示意图,该计算设备900包括通信接口910以及处理器920。可以理解的是,通信接口910可以为收发器或输入输出(input/output,i/o)接口。可选的,计算设备900还可以包括存储器930,用于存储处理器920执行的指令或存储处理器920运行指令所需要的输入数据,或存储处理器920运行指令后产生的数据。该计算设备900可以是指前述实施例中的计算设备110。
133.当计算设备900用于实现前述附图所示的实施例时,处理器920、通信接口910和存储器930还可以协同实现数据处理系统中计算设备、存储设备执行的数据库存储日志方法
中的各个操作步骤。计算设备900还可以执行图9所示出的数据库存储日志装置800的功能,此处不予赘述。
134.本技术实施例中不限定上述通信接口910、处理器920以及存储器930之间的具体连接方式。
135.存储器930可用于存储软件程序及模块,如本技术实施例所提供的数据库存储日志方法对应的程序指令/模块,处理器920通过执行存储在存储器930内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口910可用于与其他设备进行信令或数据的通信。在本技术中该计算设备900可以具有多个通信接口910。
136.可以理解的是,本技术的实施例中的处理器920可以是中央处理单元(central processing unit,cpu)、神经处理器(neural processing unit,npu)或图形处理器(graphic processing unit,gpu),还可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
137.本技术的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
138.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,dvd);还可以是半导体介质,例如,固态硬盘(solid state drive,ssd)。
139.在本技术的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的
逻辑关系可以组合形成新的实施例。在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
技术特征:
1.一种数据库存储日志方法,其特征在于,所述数据库包括多个存储列,一个存储列的存储空间是由一个或多个列存储单元cu提供的,所述方法包括:提供隐藏列,所述隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:所述多个存储列对应的所有cu中,与所述第一cu属于同一行的cu的访问状态;根据所述状态信息确定第一数据所在的第一行处于可访问状态,所述第一cu位于所述第一行;获取所述第一cu的位置标识,以及,所述第一cu所关联的数据页面page的复现日志redo log;将所述redo log、所述位置标识和所述第一数据写入日志库;所述日志库用于恢复所述第一行关联的多个page。2.根据权利要求1所述的方法,其特征在于,在所述根据所述状态信息确定第一数据所在的第一行处于可访问状态之前,所述方法还包括:获取数据插入请求,所述数据插入请求包括所述第一数据;依据所述数据插入请求包括的目的地址,将所述数据库中所述目的地址指示的行作为所述第一行;在所述隐藏列的第一cu中写入状态信息。3.根据权利要求1或2所述的方法,其特征在于,所述位置标识包括:所述第一cu的列标识和所述第一行的行标识。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述redo log、所述位置标识和所述第一数据写入日志库,包括:将所述redo log写入所述日志库包括的物理日志库;将所述位置标识和所述第一数据写入所述日志库包括的逻辑日志库,所述逻辑日志库用于存储所述物理日志库中redo log所对应的位置标识和数据。5.根据权利要求4所述的方法,其特征在于,所述逻辑日志库还包括:所述第一行关联的多个cu的列标记,一个列标记对应一个存储列。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:获取数据恢复请求,所述数据恢复请求用于指示恢复所述第一数据所在的page;依据所述数据恢复请求,读取所述物理日志库存储的所述redo log;依据所述数据恢复请求,读取所述逻辑日志库存储的所述位置标识,以及从所述逻辑日志库中读取所述第一数据和所述第一数据对应的所有列标记;依据所述redo log、所述位置标识和所述所有列标记,恢复所述第一数据所在的page。7.一种数据库存储日志装置,其特征在于,所述数据库包括多个存储列,一个存储列的存储空间是由一个或多个列存储单元cu提供的,所述装置包括:状态单元,用于提供隐藏列,所述隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:所述多个存储列对应的所有cu中,与所述第一cu属于同一行的cu的访问状态;确定单元,用于根据所述状态信息确定第一数据所在的第一行处于可访问状态,所述第一cu位于所述第一行;
获取单元,用于获取所述第一cu的位置标识,以及,所述第一cu所关联的数据页面page的复现日志redo log;访问单元,用于将所述redo log、所述位置标识和所述第一数据写入日志库;所述日志库用于恢复所述第一行关联的多个page。8.根据权利要求7所述的装置,其特征在于,所述装置还包括:接收单元,用于接收数据插入请求,所述数据插入请求包括所述第一数据;所述确定单元,还用于依据所述数据插入请求包括的目的地址,将所述数据库中所述目的地址指示的行作为所述第一行;所述确定单元,还用于在所述隐藏列的第一cu中写入状态信息。9.根据权利要求7或8所述的装置,其特征在于,所述位置标识包括:所述第一cu的列标识和所述第一行的行标识。10.根据权利要求7至9中任一项所述的装置,其特征在于,所述访问单元,具体用于:将所述redo log写入所述日志库包括的物理日志库;所述访问单元,还具体用于:将所述位置标识和所述第一数据写入所述日志库包括的逻辑日志库,所述逻辑日志库用于存储所述物理日志库中redo log所对应的位置标识和数据。11.根据权利要求10所述的装置,其特征在于,所述逻辑日志库还包括:所述第一行关联的多个cu的列标记,一个列标记对应一个存储列。12.根据权利要求11所述的装置,其特征在于,所述装置还包括:接收单元,用于接收数据恢复请求,所述数据恢复请求用于指示恢复所述第一数据所在的page;所述访问单元,还用于依据所述数据恢复请求,读取所述物理日志库存储的所述redo log;所述访问单元,还用于依据所述数据恢复请求,读取所述逻辑日志库存储的所述位置标识,以及从所述逻辑日志库中读取所述第一数据和所述第一数据对应的所有列标记;恢复单元,用于依据所述redo log、所述位置标识和所述所有列标记,恢复所述第一数据所在的page。13.一种计算设备,其特征在于,包括:存储器和处理器;所述存储器用于存储程序代码;所述处理器用于调用所述程序代码实现权利要求1-6中任意一项所述的方法。14.一种数据处理系统,其特征在于,包括:日志库和权利要求13所述的计算设备;所述计算设备用于提供数据库,所述数据库包括多个存储列,一个存储列的存储空间是由一个或多个列存储单元cu提供的;所述计算设备还提供隐藏列,所述隐藏列对应至少一个cu,其中,第一cu中记录的状态信息用于指示:所述多个存储列对应的所有cu中,与所述第一cu属于同一行的cu的访问状态;所述计算设备根据所述状态信息确定第一数据所在的第一行处于可访问状态,所述第一cu位于所述第一行;所述计算设备获取所述第一cu的位置标识,以及,所述第一cu所关联的数据页面page
的复现日志redo log;所述计算设备将所述redo log、所述位置标识和所述第一数据写入所述日志库;所述日志库用于恢复所述第一行关联的多个page。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机软件指令;当所述计算机软件指令在计算设备中运行时,使得计算设备实现权利要求1-6中任意一项所述的方法。
技术总结
一种数据库存储日志方法及装置,涉及计算机技术领域。数据库提供了用于指示多个存储列的访问状态的隐藏列,并在隐藏列中第一CU记录有与第一数据所在的第一行的状态信息。若第一行为可访问状态,则计算设备记录第一CU的位置标识和第一CU关联的page的redo log,并将该redo log、位置标识以及第一数据写入日志库。由于日志库仅需记录第一CU关联的page的redo log,避免了日志库存储该第一行所关联的多个CU所关联的多个page的redo log,减少了日志库的存储空间开销,提高了日志库的存储资源利用率;而且,日志库中记录的信息可用于恢复第一数据所在的page,大大减少数据插入过程中产生的redo log,提高了数据库的访问性能。提高了数据库的访问性能。提高了数据库的访问性能。
技术研发人员:王伟 史玉玲 霍强
受保护的技术使用者:华为技术有限公司
技术研发日:2022.02.18
技术公布日:2023/8/31
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/