本技术涉及数据库,尤其涉及一种数据处理方法以及装置。
背景技术:
1、在数据库系统中,事务日志(transactionlog)被广泛应用,由事务日志记录用户对数据库系统的一系列操作,操作包括但不限于:读数据、写数据、修改数据、删除数据等。当硬件发生不可避免的故障时,事务日志可以用于保证事务的原子性,一致性和持久性。
2、撤消日志(undolog)是一种典型的事务日志,记录了数据库系统变更前的状态。目前,为了将undolog从内存中淘汰到磁盘,要将其维护成8千字节(kb)或者16kb的固定大小的数据页面。当需要利用磁盘中存储的undolog恢复数据时,数据库引擎需要处理多个固定大小的数据页面,产生大量的输入输出(input/output,i/o)开销,降低数据库系统的处理性能。
技术实现思路
1、通常的方案需要多次重复扫描undolog和重做日志(redolog)以获取内存中丢失的数据的版本。比如,对于已提交的事务,从检查点(checkpoint)处开始扫描redolog,将已经提交的redolog应用到数据页面上,直到存储在非易失介质中的所有redolog扫描完成。对于未提交的事务,需要扫描存储在非易失性介质中的每个undolog,以将每个undolog应用到数据页面上。至此完成了获取内存中丢失的数据的版本的任务,即通过执行上述过程获取到的数据页面即为内存中丢失的数据的版本。可见,在通常的方案中,需要多次重复扫描undolog和redolog以获取内存中丢失的数据的版本。本技术提供一种数据处理方法以及装置,利用内存中的undolog和内存中数据的最新版本获取数据的不同历史版本,当内存中的数据丢失时,可以直接从非易失性介质中获取内存中丢失的数据的版本。不再需要执行繁琐的恢复步骤,节约时间,有利于提升数据库系统的处理性能。非易失性介质是不同于内存的存储介质,例如是硬盘(磁盘、磁带、固态硬盘等)。
2、第一方面,本技术提供一种数据处理的方法,包括:获取内存中数据的当前版本和至少一个撤销日志undolog。该至少一个undolog用于记录对该内存中数据的历史操作记录。其中,对内存中数据的历史操作记录包括但不限于:删除、修改、增加。根据数据的当前版本和至少一个undolog得到内存中数据的历史版本。对内存中的数据进行任何操作之前,都会将该数据的当前版本记录在undolog中。所以当获取了数据的最新版本,也即当前版本,再根据内存中全部undolog的记录,就可以获取内存中的数据在任意时刻的状态,也就是获取内存中数据的历史版本。其中,可以根据undolog的记录获取内存中的数据的一个或者多个历史版本。对内存中数据的历史版本进行重删处理和压缩处理,得到压缩数据。本技术实施例对采用何种重删处理和压缩处理的方式并不进行限定,任意一种可以实现重删处理和压缩处理目的方案,本技术实施例都可以采用。示例性的,可以对内存中数据的历史版本进行分块处理后获得各数据块,进而仅保留相互重复的数据块中的一个数据块,其余则用指针替代。采用压缩算法对保留的数据块进行压缩处理,得到压缩数据。将压缩数据写入非易失性介质中。本技术实施例提供的方案可以由数据库管理系统作为执行主体,在一个可能的实施方式中,该数据库管理系统可以体现为一个计算节点。该计算节点用于通过执行事务来进行数据处理,该计算节点可以是一个计算机设备或者由多个计算机设备组成的计算机集群,该计算机设备可以是服务器,例如,该计算节点是一个服务器或者由多个服务器组成的服务器集群。本技术实施例提供的方案,不再将undolog从内存中淘汰落盘。而是由数据管理系统利用undolog和最新数据获取不同历史版本的数据,将不同历史版本的数据以及该历史版本的数据对应的版本信息写入非易失性介质中。此外,为了不在非易失性介质中产生额外的存储开销,可以对该历史版本的数据进行重删处理和压缩处理后,再写入非易失性介质中。本技术实施例提供的方案可以在数据库的不同的数据处理场景下带来不同的优势,可以很好的提升数据库管理系统的处理性能。
3、在第一方面的一种可能的实施方式中,维护undolog对应的存储空间小于维护数据页对应的存储空间,非易失性介质中以数据页为单位保存数据。在这种实施方式中,针对每一次对数据库的数据的操作而产生的undolog,不再统一的记录在固定页面中,而是针对每一次对数据的操作产生的undolog,依据其实际所需的存储空间,进行独立的存储。也可以理解为,本技术实施例提供的方案,减少了数据库引擎由于处理undolog磁盘格式而带来的资源消耗与性能损失。
4、在第一方面的一种可能的实施方式中,该方法还包括:接收事务访问请求。响应于事务访问请求,执行第一操作和第二操作,第一操作包括修改内存中数据的当前版本,第二操作包括修改至少一个undolog。提交重做日志redolog,redolog包括对第一操作的记录,不包括对第二操作的记录。在这种实施方式中,将不同历史版本的数据以及该历史版本的数据对应的版本信息写入非易失性介质中,而不再需要额外将undolog写入非易失性介质中,对应的,也不再需要将基于undolog页面产生的redolog写入非易失性介质中。或者可以理解为,在一个可能的实施方式中,在事务提交时undolog无需持久化,无活跃事务依赖的undolog可直接释放。将基于数据页面产生的redolog持久化后提交就宣告完成。通过这样的方式,降低了将redolog写入非易失性介质中而来带的i/o开销。也可以理解为,这种实施方式降低了事务提交时由于undo页面产生redo并持久化带来的性能损失以及存储空间浪费。
5、在第一方面的一种可能的实施方式中,该方法还包括:接收一致性读请求,一致性读请求中携带查询信息,查询信息指示第一历史版本信息。响应于一致性读请求,根据查询信息从非易失性介质中获取数据的第一历史版本。返回数据的目标历史版本。在这种实施方式中,当接收到一致性读请求时,可以直接从非易失性介质中获取任意版本历史版本的数据,而不再需要通过重复多次访问非易失性介质获取多个历史undolog,以恢复已经提交的数据。或者可以理解为数据管理系统将数据版本范围(比如多个历史版本信息)随读请求下发给存储节点,使用快照度从存储节点一次命中请求历史副本(或者说数据的历史版本)。由此,有利于提升数据库管理系统的处理性能。也可以理解为,本技术实施例提供的方案,解决了一致性读请求非易失性介质上的undo数据时带来的读放大以及处理多个undolog带来的性能损失。
6、在第一方面的一种可能的实施方式中,该方法还包括:检测到数据库重新启动,从非易失性介质存储中获取数据的最新历史版本。将数据的最新历史版本写入内存。在这种实施方式中,当数据库系统运行过程中发生事务故障或者系统故障,可以直接从非易失性介质中获取故障发生之前的历史版本的数据,而不再需要执行繁琐的故障恢复步骤,节约时间。也可以理解为,这种实施方式解决了故障恢复过程中处理undolog回滚带来的性能损失。
7、在第一方面的一种可能的实施方式中,该方法还包括:接收删除请求,删除请求中携带第二历史版本信息。响应于删除请求,从非易失性介质中删除数据的第二历史版本。在这种实施方式中,数据库管理系统对历史版本进行异步清理,不影响新事务提交速度。
8、在第一方面的一种可能的实施方式中,非易失性介质包括固态硬盘ssd或者磁盘或者磁带。
9、第二方面,本技术提供一种数据库系统,数据库系统包括计算节点和存储节点,计算节点,用于:获取内存中数据的当前版本和至少一个撤销日志undolog。根据数据的当前版本和至少一个undolog得到内存中数据的历史版本。对内存中数据的历史版本进行重删处理和压缩处理,得到压缩数据。将压缩数据写入存储节点的非易失性介质中。
10、在第二方面的一种可能的实施方式中,计算节点维护undolog对应的存储空间小于维护数据页对应的存储空间,非易失性介质中以数据页为单位保存数据。
11、在第二方面的一种可能的实施方式中,计算节点还用于接收事务访问请求。响应于事务访问请求,执行第一操作和第二操作,第一操作包括修改内存中数据的当前版本,第二操作包括修改至少一个undolog。提交重做日志redolog,redolog包括对第一操作的记录,不包括对第二操作的记录。
12、在第二方面的一种可能的实施方式中,计算节点还用于接收一致性读请求,一致性读请求中携带查询信息,查询信息指示第一历史版本信息。响应于一致性读请求,根据查询信息从存储节点的非易失性介质中获取数据的第一历史版本。返回数据的目标历史版本。
13、在第二方面的一种可能的实施方式中,计算节点还用于检测到数据库重新启动,从存储节点的非易失性介质存储中获取数据的最新历史版本。将数据的最新历史版本写入内存。
14、在第二方面的一种可能的实施方式中,计算节点还用于接收删除请求,删除请求中携带第二历史版本信息。响应于删除请求,从存储节点的非易失性介质中删除数据的第二历史版本。
15、在第二方面的一种可能的实施方式中,非易失性介质包括固态硬盘ssd或者磁盘或者磁带。
16、第三方面,本技术实施例提供一种数据处理装置,该数据处理装置具有实现上述第一方面数据处理方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
17、第四方面,本技术实施例提供一种数据处理装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的数据处理方法中与处理相关的功能。可选地,该数据处理装置可以是芯片。
18、第五方面,本技术实施例提供了一种数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面中任一可选实施方式中与处理相关的功能。
19、第六方面,本技术实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一可选实施方式中的方法。
20、第七方面,本技术实施例提供了一种包含计算机程序/指令的计算机程序产品,当其被处理器执行时,使得处理器执行上述第一方面中的任一可选实施方式中的方法。
21、其中,本技术第二方面至第七方面以及各种可能的实施方式的具体实现步骤,以及每种实现方式所带来的有益效果,均可以参考第一方面中各种可能的实施方式的描述,此处不再一一赘述。
1.一种数据处理的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,维护所述undolog对应的存储空间小于维护数据页对应的存储空间,所述非易失性介质中以所述数据页为单位保存数据。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1至6任一项所述的方法,其特征在于,所述非易失性介质包括固态硬盘ssd或者磁盘或者磁带。
8.一种数据处理的装置,其特征在于,包括:
9.根据权利要求8所述的装置,其特征在于,维护所述undolog对应的存储空间小于维护数据页对应的存储空间,所述非易失性介质中以所述数据页为单位保存数据。
10.根据权利要求8或9所述的装置,其特征在于,
11.根据权利要求8至10任一项所述的装置,其特征在于,
12.根据权利要求8至11任一项所述的装置,其特征在于,所述处理模块,还用于:
13.根据权利要求8至12任一项所述的装置,其特征在于,
14.根据权利要求8至13任一项所述的装置,其特征在于,所述非易失性介质包括固态硬盘ssd或者磁盘或者云存储介质或者磁带。
15.一种数据库系统,其特征在于,所述数据库系统包括计算节点和存储节点,所述计算节点,用于:
16.一种数据处理装置,其特征在于,包括一个或多个处理器,所述一个或多个处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述一个或多个处理器执行时实现权利要求1至7中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,包括程序,当其被处理单元所执行时,执行如权利要求1至7中任一项所述的方法。
