一种数据库多版本的数据清理系统以及清理方法技术方案

技术编号:37678667 阅读:11 留言:0更新日期:2023-05-26 04:44
本发明专利技术提供了一种数据库多版本的数据清理系统以及清理方法,包括:数据块扫描备份与管理模块、数据块扫描模块、并发冲突修正模块、清理执行执行模块;其中,所述数据块扫描备份与管理模块,用于在数据库扫描过程中对命中的数据行进行备份,并发冲突发生时提供纠错的数据基础;所述数据块扫描模块,用于执行数据的扫描流程;所述并发冲突修正模块,用于发生并发冲突时执行基于乐观并发控制策略的“补偿与修正”;所述清理执行执行模块,用于执行老旧数据的MVCC清理。本发明专利技术的数据清理系统,用以解决数据库Backend读写操作和副本清理相互排斥的制约条件,进而能够支持多机共享存储数据库架构下的MVCC清理。架构下的MVCC清理。架构下的MVCC清理。

【技术实现步骤摘要】
一种数据库多版本的数据清理系统以及清理方法


[0001]本专利技术涉及数据库领域,具体而言,涉及一种数据库多版本的数据清理系统以及清理方法。

技术介绍

[0002]现代主流数据库系统采用MVCC(Multi

Version Concurrency Control,多版本并发控制)方法实现对数据库的并发访问。MVCC会保存某个时间点上的数据快照,这意味着事务可以看到一个一致的数据视图,不管它们需要跑多久。这同时也意味着不同的事务在同一个时间点看到的同一个表的数据可能是不同的。为了使在数据库多个不同的连接中,每个链接都能维持各自的数据一致性,数据库对数据的UPDATE、DELETE保留了数据行副本。
[0003]对于数据行副本常见的维护方式,例如在MySQL数据库系统中,使用Undo Log维护数据行副本;在Oracle数据库系统中,使用Undo Segment维护数据行副本;在Postgresql数据库系统中,将数据行副本和数据一起放在数据表文件中。为了使数据库平稳、高效地运转,数据库都需要一种有效的数据行副本维护和清理的办法。
[0004]在Postgresql数据库内核中,因为最新数据行和数据行副本都在数据块文件中,数据行的清理和读写存在冲突关系。可以经常观测到的现象是,如果一个表的数据量小、改动操作频繁,那么该表会产生大量数据行副本,导致的数据膨胀率是很高的。这种现象的原因是Postgresql的数据库Backend读取完数据块后会保留指针,使得Backend能够在不加内存锁的情况下使用数据,但此时也不能对该数据块进行清理。这种情况下如果发生了副本清理将会导致内存错误。Postgresql内核采用Pin(注:Pin为数据块引用计数)的方式互斥读写操作与副本清理,数据块的引用计数意味着有对应数量的Backend正在使用数据块,当还有其他Backend使用数据块时不能执行副本清理。
[0005]另外,原Postgresql的MVCC清理功能不能支持基于共享存储多机的集群架构,例如Oracle RAC实时应用集群。因为Pin的使用十分频繁,如果使用Postgresql来构建基于多机的集群数据库(以下简称“集群数据库”),那么在多机之间进行Pin的全局管理的过程中,网络开销将会带来十分严重的损耗;对于集群数据库,每次执行清理如果都需要全局检测Pin计数也将极大地阻碍了MVCC清理的有效执行。
[0006]有鉴于此,特提出本专利技术。

技术实现思路

[0007]有鉴于此,本专利技术公开了一种数据库多版本的数据清理系统,用以解决数据库Backend读写操作和副本清理相互排斥的制约条件,进而能够支持多机共享存储数据库架构下的MVCC清理。
[0008]具体地,本专利技术是通过以下技术方案实现的:
[0009]第一方面,本专利技术公开了数据库多版本的数据清理系统,包括:
[0010]数据块扫描备份与管理模块、数据块扫描模块、并发冲突修正模块、清理执行执行
模块;
[0011]其中,所述数据块扫描备份与管理模块,用于在数据库扫描过程中对命中的数据行进行备份,并发冲突发生时提供纠错的数据基础;
[0012]所述数据块扫描模块,用于执行数据的扫描流程;
[0013]所述并发冲突修正模块,用于发生并发冲突时执行基于乐观并发控制策略的“补偿与修正”;
[0014]所述清理执行执行模块,用于执行老旧数据的MVCC清理。
[0015]第二方面,本专利技术公开了采用上述数据清理系统来实现数据清理的方法。
[0016]第三方面,本专利技术公开了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第二方面所述数据清理方法的步骤。
[0017]第四方面,本专利技术公开了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第二方面所述数据清理方法的步骤。
[0018]对于本专利技术数据清理系统的实现原理,鉴于数据库中的数据块在被使用的过程中与MVCC清理的互斥关系,本专利技术构建的基于数据库扫描与控制的乐观并发控制方法,而非原Postgresql的悲观式的并发控制方法

执行读写操作或清理时不对数据块封锁,而是在并发冲突发生时提供“补偿与修正”的方式,使得数据库读写操作和MVCC清理操作可以无锁地、不互斥地、并发地执行。
附图说明
[0019]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0020]图1为本专利技术实施例提供的数据清理系统的结构示意图;
[0021]图2为本专利技术实施例提供的多机部署示意图;
[0022]图3是本专利技术实施例中数据库写操作的执行流程示意图;
[0023]图4是本专利技术实施例中数据库读操作的执行流程示意图;
[0024]图5为本专利技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0025]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0026]在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0027]应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这
些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0028]如图1所示,本专利技术公开了一种数据库多版本的数据清理系统,包括:数据块扫描备份与管理模块、数据块扫描模块、并发冲突修正模块、清理执行执行模块;
[0029]其中,所述数据块扫描备份与管理模块用于在数据库扫描过程中对命中的数据行进行备份,并发冲突发生时提供纠错的数据基础;
[0030]所述数据块扫描模块用于执行数据的扫描流程;
[0031]所述并发冲突修正模块用于发生并发冲突时执行基于乐观并发控制策略的补偿与修正;
[0032]所述清理执行执行模块用于执行老旧数据的MVC本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库多版本的数据清理系统,其特征在于,包括:数据块扫描备份与管理模块、数据块扫描模块、并发冲突修正模块、清理执行执行模块;其中,所述数据块扫描备份与管理模块用于在数据库扫描过程中对命中的数据行进行备份,并发冲突发生时提供纠错的数据基础;所述数据块扫描模块用于执行数据的扫描流程;所述并发冲突修正模块用于发生并发冲突时执行基于乐观并发控制策略的补偿与修正;所述清理执行执行模块用于执行老旧数据的MVCC清理。2.根据权利要求1所述的数据清理系统,其特征在于,所述数据基础属于Backend私有空间,由每个Backend生成私有内存进行管理,每个Backend最多维护8个数据块内的数据行拷贝。3.根据权利要求2所述的数据清理系统,其特征在于,所述数据行拷贝的方法包括:拷贝的数据行以数据块为单位进行划分,依据提供的拷贝执行接口,在数据扫描过程中为扫描命中的数据行申请内存空间,将数据行拷贝到指定位置形成拷贝内存;当Backend做最终ReleaseBuffer动作时,执行所述拷贝内存释放动作,Free掉目标数据块内全部的Tuple拷贝。4.根据权利要求3所述的数据清理系统,其特征在于,所述补偿与修正的方法包括:每次数据块被施加完毕独占封锁而需要进行写操作时,通过使用拷贝内存对数据块内的数据进行比对,如果待修改的数据块被执行了MVCC清理而使得数据行的偏移位置发生...

【专利技术属性】
技术研发人员:赵宗鹏张震阳张争刘海峰李勇
申请(专利权)人:北京优炫软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1