CN103699681B - 数据回滚的处理方法和装置 - Google Patents
数据回滚的处理方法和装置 Download PDFInfo
- Publication number
- CN103699681B CN103699681B CN201310754233.6A CN201310754233A CN103699681B CN 103699681 B CN103699681 B CN 103699681B CN 201310754233 A CN201310754233 A CN 201310754233A CN 103699681 B CN103699681 B CN 103699681B
- Authority
- CN
- China
- Prior art keywords
- roll
- back segment
- list
- affairs
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据回滚的处理方法和装置,该方法包括:当数据库系统接收到第一事务时,在所述数据库系统的各个列表所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段;所述回滚段用于存储事务访问数据文件产生的回滚数据;针对所述第一事务,记录第一回滚段的使用情况;根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中。通过该数据回滚的处理方法和装置,可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据回滚的处理方法和装置。
背景技术
数据库中包含大量的数据,用户可以通过数据库事务(DatabaseTransaction,下述简称为事务)访问该数据库,以获得所需的结果。通常事务对数据库的访问,会使数据库中的一些数据发生更新,出现新版本的数据。但现有的数据库中,多个事务会同时执行,则一个事务的访问造成了数据库中数据的更新,导致另一个事务所使用的数据前后不一致,影响数据库对用户的服务。举例来说,事务1在数据库内的一个数据文件中获取了数据A,随后事务2访问了该数据文件,并将该数据文件中的数据A更新为数据B,即此时数据A为旧版本数据,而数据B为新版本数据;若事务1需要再次访问该数据空间时,则为了保证事务1前后获取的数据一致,在事务2更新上述数据文件时,需要将数据A作为回滚数据另行存储,以供事务1再次访问。
常见的,Sql Server可使用临时数据库(Tempdb)的方式存储回滚数据。Tempdb是一个临时数据库,可被多个数据库共享,则回滚数据被存储至tempdb中。其中,Sql Server使用了内部对象(Append-Only Store)以管理tempdb中的数据;即tempdb中的回滚数据被存储至一个Append-Only Store中,每隔一段时间或Append-Only Store中积累一定数量的数据后,就会创建一个新的Append-Only Store,以继续存储回滚数据。
但采用上述方案时发现,多个事务会使用同一个Append-Only Store,使得多个事务的并发效率降低,影响各个事务访问回滚数据的效率,从而降低了数据库的工作性能。
发明内容
本发明实施例提供一种数据回滚的处理方法和装置,用于合理的对各个回滚段进行管理,保证了多个事务的并发特性,提高了数据库系统的工作性能。
第一方面,本发明实施例提供一种数据回滚的处理方法,包括:
当数据库系统接收到第一事务时,在所述数据库系统的各个列表所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段;所述回滚段用于存储事务访问数据文件产生的回滚数据;
针对所述第一事务,记录第一回滚段的使用情况;
根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中;
其中,所述各个列表包括重用列表、空闲列表和完成列表,所述重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,所述空闲列表中的每个回滚段中无回滚数据,所述完成列表中的每个回滚段中不具有剩余存储空间。
结合第一方面,在第一实施方式中,所述在所述数据库系统的各个列表中所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段,包括:
若所述重用列表中包括至少一个回滚段,则确定重用列表中最先存储的回滚段为所述第一回滚段,并在所述重用列表中删除该最先存储的回滚段;
若所述重用列表中不包括所述回滚段,则在所述空闲列表中确定所述第一回滚段。
结合第一方面第一实施方式,在第二实施方式中,所述在所述空闲列表中确定所述第一回滚段,包括:
若所述空闲列表包括至少一个回滚段,则将所述空闲列表中的一个回滚段作为所述第一回滚段,并将所述空闲列表中的该回滚段删除;
若所述空闲列表不包括回滚段,则判断所述数据库系统中的全部回滚段的数量是否已达到上限;
若否,创建新增回滚段作为所述第一回滚段;
若是,则进行清理算法,并在进行了所述清理算法之后的空闲列表中,确定任意一个回滚段作为所述第一回滚段。
结合第一方面第二实施方式,在第三实施方式中,所述清理算法包括:
由所述完成列表中最先存储的回滚段开始,依照存储的先后顺序,依次判断出所述完成列表中可回收的回滚段;
将所述可回收的回滚段由所述完成列表中删除,并存储至所述空闲列表中,获得所述进行了所述清理算法之后的空闲列表。
结合第一方面第三实施方式,在第四实施方式中,所述判断出所述完成列表中可回收的回滚段,包括:
根据所述完成列表中的待判断回滚段对应的最新使用情况,确定所述最新使用情况对应的第二事务;
若所述第二事务的访问时间不滞后于所述数据库系统中的当前事务的访问时间,则确定所述待判断回滚段为所述可回收的回滚段。
结合第一方面或第一方面第四实施方式,在第五实施方式中,所述根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的管理库中,包括:
若所述使用后的第一回滚段中不具有剩余存储空间,则将所述使用后的第一回滚段存储至所述完成列表,所述完成列表中的所述使用后的第一回滚段具有末位存储顺序;
若所述使用后的第一回滚段中具有剩余存储空间,则将所述第一回滚段存储至所述重用列表,所述重用列表中的所述使用后的第一回滚段具有末位存储顺序。
结合第一方面第五实施方式,在第六实施方式中,所述处理方法还包括:
若数据库系统的空闲存储空间小于预设阈值,则删除所述空闲列表中的各个回滚段,并释放所述空闲列表中的各个回滚段对应的文件。
在删除了所述空闲列表中的各个回滚段之后,若数据库系统的空闲存储空间仍小于预设阈值,则释放所述重用列表中的可删除回滚段。
第二方面,本发明提供一种数据回滚的处理装置,其特征在于,包括:
确定模块,用于当数据库系统接收到第一事务时,在所述数据库系统的各个列表所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段;所述回滚段用于存储事务访问数据文件产生的回滚数据;
记录模块,用于针对所述第一事务,记录第一回滚段的使用情况;
存储模块,用于根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中;
其中,所述各个列表包括重用列表、空闲列表和完成列表,所述重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,所述空闲列表中的每个回滚段中无回滚数据,所述完成列表中的每个回滚段中不具有剩余存储空间。
结合第二方面,在第一实施方式中,所述确定模块包括:
第一处理单元,用于若所述重用列表中包括至少一个回滚段,则确定重用列表中最先存储的回滚段为所述第一回滚段,并在所述重用列表中删除该最先存储的回滚段;
第二处理单元,若所述重用列表中不包括所述回滚段,则在所述空闲列表中确定所述第一回滚段。
结合第二方面第一实施方式,在第二实施方式中,所述第二处理单元具体用于
若所述空闲列表包括至少一个回滚段,则将所述空闲列表中的一个回滚段作为所述第一回滚段,并将所述空闲列表中的该回滚段删除;
若所述空闲列表不包括回滚段,则所述第二处理单元触发判断模块;
所述判断模块用于判断所述数据库系统中的全部回滚段的数量是否已达到上限;
若否,创建新增回滚段作为所述第一回滚段;
若是,则进行清理算法,并在进行了所述清理算法之后的空闲列表中,确定任意一个回滚段作为所述第一回滚段。
结合第二方面第二实施方式,在第三实施方式中,所述清理算法包括:
由所述完成列表中最先存储的回滚段开始,依照存储的先后顺序,依次判断出所述完成列表中可回收的回滚段;
将所述可回收的回滚段由所述完成列表中删除,并存储至所述空闲列表中,获得所述进行了所述清理算法之后的空闲列表。
结合第二方面第三实施方式,在第四实施方式中,所述判断模块具体用于
根据所述完成列表中的待判断回滚段对应的最新使用情况,确定所述最新使用情况对应的第二事务;
若所述第二事务的访问时间不滞后于所述数据库系统中的当前事务的访问时间,则确定所述待判断回滚段为所述可回收的回滚段。
结合第二方面或第一方面第四实施方式,在第五实施方式中,所述存储模块具体用于
若所述使用后的第一回滚段中不具有剩余存储空间,则将所述使用后的第一回滚段存储至所述完成列表,所述完成列表中的所述使用后的第一回滚段具有末位存储顺序;
若所述使用后的第一回滚段中具有剩余存储空间,则将所述第一回滚段存储至所述重用列表,所述重用列表中的所述使用后的第一回滚段具有末位存储顺序。
结合第二方面第五实施方式,在第六实施方式中,所述处理装置还包括释放模块,用于
若数据库系统的空闲存储空间小于预设阈值,则删除所述空闲列表中的各个回滚段,并释放所述空闲列表中的各个回滚段对应的文件。
在删除了所述空闲列表中的各个回滚段之后,若数据库系统的空闲存储空间仍小于预设阈值,则释放所述重用列表中的可删除回滚段。
本发明实施例提供的数据回滚的处理方法和装置,通过向每一个有需要的事务分配回滚段,并记录分配的回滚段的使用情况,则可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据回滚的处理方法实施例一的流程图;
图2为本发明数据回滚的处理方法实施例二的流程图;
图3为本发明数据回滚的处理方法实施例三的流程图;
图4为本发明数据回滚的处理装置实施例一的结构图;
图5为本发明数据回滚的处理装置实施例二的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明数据回滚的处理方法实施例一的流程图。如图1所示,本实施例的执行主体为数据回滚的处理装置,该处理装置可以采用软件和/或硬件的方式实现,优选的,该处理装置可以集成在数据库系统中,具体的,该方法包括:
S101、当数据库系统接收到第一事务时,在数据库系统的各个列表所存储的各个回滚段中,确定分配于该第一事务的第一回滚段。
上述回滚段(undo segment)用于存储事务访问数据文件产生的回滚数据;一个回滚段对应于磁盘上的一个文件,各文件是在回滚段创建时生成,且各个文件所具有的存储空间一定,例如一个回滚段在创建时,对应生成的文件所占用的存储地址为0001~0025,无论该文件是否存储了回滚数据,该文件都占用存储地址0001~0025;当回滚数据需要存储在回滚段中时,各个回滚数据则存储在存储地址对应的存储空间中;而当回滚段被释放后,对应的文件所占用的存储地址也被释放。其中回滚段的信息(如文件名,文件大小等)存放在系统表中,当系统关闭或异常时,回滚段信息不会丢失,而数据库系统启动之后,该系统表会加载到共享内存中,而且针对每一个回滚段来说,其使用情况(例如使用回滚段的事务的标号、该事务使用的具体的存储地址)也是被记录的,则上述各个列表所存储的各个回滚段,是指各个列表保存着各个回滚段的文件名(或其他用于指代回滚段的标识信息),及各个回滚段的使用情况。
S102、针对第一事务,记录第一回滚段的使用情况。
第一事务在访问数据文件时,使该数据文件中的数据发生更新,即数据文件中发生更新的各项数据为新版本数据,而发生更新之前的各项数据为旧版本数据;在本实施例中,为了不影响其他已经获取了旧版本数据的事务的正常执行,因此将旧版本数据作为回滚数据存储至分配于第一事务的第一回滚段中,同时新版本数据中记录了旧版本数据在回滚段中的位置,这样其他访问旧版本数据的事务再次访问数据文件,以期获得旧版本数据时,就可以根据上述新版本数据中所记录的旧版本数据在回滚段中的位置,从第一回滚段中获取到旧版本数据,而不是被第一事务所更新的新版本数据,从而保证数据库访问的一致性。同时对于该第一回滚段来说,该第一回滚段的使用信息,即该第一回滚段被事务使用的具体信息(如使用第一回滚段的事务的编号,访问时间等)也被记录,以用于后续判断该第一回滚段是否可以回收或清理。
S103、根据第一回滚段的使用情况,将第一回滚段存储至对应的列表中。
其中,各个列表包括重用列表、空闲列表和完成列表,上述重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,上述空闲列表中的每个回滚段中无回滚数据,上述完成列表中的每个回滚段中不具有剩余存储空间。例如一个回滚段占用的存储地址为0001~0025,该回滚段中存储了回滚数据,而回滚数据仅占用了存储地址0001~0005,则存储地址0006~0025则为上述剩余存储空间;另外,回滚段中存储地址0001~0025没有存储回滚数据,则该回滚段所拥有的全部存储地址所对应的存储空间,也可被理解为该回滚段的剩余存储空间。
根据第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中,则便于向下一个事务分配合适的回滚段,例如回滚段中已无剩余存储空间,则该回滚段被存储至完成列表中,从而当数据库系统接收到另一个事务时,不会向所述另一个事务分配上述无剩余存储空间的回滚段,而是在重用列表或空闲列表中确定具有剩余存储空间的回滚段,与此同时,若数据库系统接收的事务需要获取已有的回滚数据,且该回滚数据被存储在上述无剩余存储空间的回滚段内,则该无剩余存储空间的回滚段也可同时被其他事务使用,以获取已有的回滚数据,保证了多个事务的并发特性。
另外需要说明的是,本实例中的第一事务为包含更新操作的事务。插入、删除操作由于不会造成新版本数据和旧版本的更替,因而不需要在回滚段中记录旧版本数据。本实施例中,向每一个有需要的事务分配回滚段,并记录分配的回滚段的使用情况,则可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
图2为本发明数据回滚的处理方法实施例二的流程图。如图2所示,本实施例是在图1所示的实施例的基础上做出进一步描述,具体的,该方法包括:
S201、当数据库系统接收到第一事务时,判断重用列表中是否包括至少一个回滚段。若是,则执行S202;若否,执行S203。
由于重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,则数据回滚的处理装置在确定第一回滚段时(即执行前述S101),需要先查看重用列表,并判断重用列表中是否包括至少一个回滚段。
S202、确定重用列表中最先存储的回滚段为第一回滚段,并在重用列表中删除该最先存储的回滚段。
若所述重用列表中包括至少一个回滚段,即重用列表中存储的各个回滚段有剩余存储空间,可以继续存储回滚数据;而且重用列表中最先存储的回滚段中已有的回滚数据相较于重用列表中其他回滚段中的回滚数据来说,被再次使用的概率较低,则该最先存储的回滚段被分配给第一事务以后并在第一事务使用的过程中,其他事务需要使用该最先存储的回滚段中已有的回滚数据的可能性也较小,则可有效避免发生事务争抢同一个回滚段的冲突,从而可保证各个事务之间的并发特性。例如,重用列表中最先存储的回滚段1中存储了回滚数据01,则说明该回滚段1对应的数据文件1发生更新的时间较早,则当前访问该数据文件1的各个事务大部分或全部已经是按照更新后的数据文件1在执行,而其他使用了数据文件1中旧版本的数据的事务,也在当前时刻之前通过使用回滚段1中的回滚数据01,以数据的一致性执行完成,则在当前时刻,数据库系统中需要再次使用回滚数据01的事务的概率较小,则将该回滚段1分配给第一事务后,其他事务与第一事务争抢回滚段1的概率也是极小的,因此可以保证第一事务与其他事务之间的并发效率;而且在确定重用列表中最先存储的回滚段为第一回滚段之后,在重用列表中删除该最先存储的回滚段,避免将同一个回滚段分配给其他需要存储新增回滚数据的事务。
通常来说,重用列表中各个回滚段可以按照存储的先后顺序依次排列,则最先存储的回滚段被排在重用列表的头部,而最新存储的回滚段则存储在重用列表中尾部;可选的,各个回滚段可以不用排序,则数据回滚的处理装置可以根据各个回滚段对应的使用信息中的时间信息,判断出先存储的回滚段。
S203、判断空闲列表中是否存在至少一个回滚段。若是,执行S204;若否,执行S205。
即重用列表中不包括回滚段,则需在空闲列表中确定第一回滚段;但空闲列表中也不存在回滚段时,则需执行S203。
S204、将空闲列表中的一个回滚段作为第一回滚段,并将空闲列表中的该回滚段删除。
与S202中的重用列表类似,将空闲列表中的一个回滚段作为第一回滚段之后,需将空闲列表中的该回滚段删除,避免将同一个回滚段分配给不同的事务。
S205、判断数据库系统中的全部回滚段的数量是否已达到上限。若否,执行S206;若是,则执行S207。
数据库系统中的全部回滚段的数量是指各个列表中存储的回滚段的数量和已被分配出去的回滚段的数量。
S206、创建新增回滚段作为第一回滚段。
即针对第一事务,直接创建一个回滚段,并分配给该第一事务。
S207、进行清理算法,并在进行了清理算法之后的空闲列表中,确定任意一个回滚段作为第一回滚段。
当数据库系统中的全部回滚段的数量已达到上限,说明数据库系统中已经不存在可以使用的回滚段以供第一事务存储其产生的回滚数据,因此,需要对各个列表中各个回滚段中的回滚数据进行清理,即将那些不再被使用的回滚数据进行清理,以便第一事务可获得具有剩余存储空间的回滚段,从而可以存储该第一事务产生的回滚数据。
具体的,该清理算法包括:
C1、由完成列表中最先存储的回滚段开始,依照存储的先后顺序,依次判断出该完成列表中可回收的回滚段;
C2、将可回收的回滚段由所述完成列表中删除,并存储至所述空闲列表中,获得所述进行了清理算法之后的空闲列表。其中进行了清理算法之后的空闲列表中的各个回滚段中的回滚数据可以不被清空,这些回滚段分配给各个事务后,各个事务可以在存储新增回滚数据时,直接存储进空闲列表中的各个回滚段中,将已有的回滚数据覆盖;可以理解为任意一个回滚段被存储至空闲列表后,数据回滚的处理装置则认定该空闲列表中的各个回滚段中不存在回滚数据,可直接将其分配给事务,事务产生的回滚数据直接存储进回滚段中。
其中,判断出上述完成列表中可回收的回滚段,具体包括:根据完成列表中的待判断回滚段对应的最新使用情况,确定最新使用情况对应的第二事务;
若第二事务的访问时间不滞后于数据库系统中的当前所执行事务的访问时间,则确定该待判断回滚段为可回收的回滚段。
举例来说,按照事务访问数据库系统的先后顺序,数据库系统依次接收到事务9和事务10(事务按照访问数据库系统的先后顺序,则具有对应的标号“9”和“10”),事务9访问了数据文件2,获得数据02后继续运行,且未对数据文件2进行更新,随后事务10访问了数据文件2,并对该数据文件2进行了更新,将数据02更新为03,则数据回滚的处理装置将数据02作为回滚数据存储至回滚段2中之后,事务10的运行结束,且随后无事务使用回滚段2,则该回滚段2的最新使用情况对应的第二事务为事务10,而此时事务9作为当前事务仍然被运行,则事务9有可能会再次访问数据文件2,则为了保证事务9两次访问数据文件2所获得的数据具有一致性,则事务9需使用回滚段2以获取旧版本数据,即回滚数据02;由此可知,在完成列表中判断作为待判断回滚段的回滚段2是否为可回收的回滚段时,作为当前事务的事务9的访问时间先于作为第二事务的事务10,说明当前事务9存在使用回滚段2的可能性,因此回滚段2不可作为可回收的回滚段;相反的,若第二事务的访问时间不滞后于所述数据库系统中的当前事务的访问时间,则确定上述作为待判断回滚段的回滚段2为可回收的回滚段。
另外,需要说明的是,在进行清理算法时,不需要将完成列表中所有的回滚段清理掉,可以清理部分回滚段,即获得了足够的用于分配的回滚段后,便可停止清理算法。
本实施例中,向每一个有需要的事务分配回滚段,并记录分配的回滚段的使用情况,则可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
图3为本发明数据回滚的处理方法实施例三的流程图。如图3所示,本实施例是在前述图1或图2所示的实施例的基础上,进一步补充描述,本实施例包括:
S301、当数据库系统接收到第一事务时,在数据库系统的各个列表中所存储的各个回滚段中,确定分配于第一事务的第一回滚段。
S302、针对第一事务,记录第一回滚段的使用情况。
上述S301和S302具体参照前述图1或图2所示的实施例,在此不再赘述。
S303、根据第一回滚段的使用情况,判断使用后的第一回滚段是否具有剩余存储空间。若否,则执行S304;若是,则执行S305。
S304、将使用后的第一回滚段存储至完成列表。
若使用后的第一回滚段中不具有剩余存储空间,则将使用后的第一回滚段存储至完成列表中时,完成列表中的使用后的第一回滚段具有末位存储顺序;即使用后的第一回滚段相对于完成列表中的其他回滚段来说,按照存储的时间顺序,该使用后的第一回滚段具有末位存储顺序。具体的,该末位存储顺序可以采用标号、时间信息或者将使用后的第一回滚段存储至完成列表的尾部,以体现该使用后的第一回滚段具有末位存储顺序。在存储时考虑了回滚段的存储的先后顺序,则数据回滚的处理装置在清理回滚段时,可以合理的选择合适的回滚段,避免发生清理了事务仍然需要的回滚段。
S305、将第一回滚段存储至重用列表。
由于使用后的第一回滚段中具有剩余存储空间,该使用后的第一回滚段仍然可以供其他事务存储新增回滚数据,因此,将第一回滚段存储至重用列表,且与S304类似,重用列表中的使用后的第一回滚段具有末位存储顺序,则数据回滚的处理装置在分配回滚段时,根据回滚段的存储顺序判断出回滚段中已有的回滚数据被使用的概率,则可以合理的选择合适的回滚段,避免发生回滚段使用冲突的情况,例如第一回滚段中被存储了回滚数据,该使用后的第一回滚段中的回滚数据在近期被使用的概率较高,若此时将使用后的第一回滚段分配给事务1以存储新增回滚数据,而事务2需要使用上述使用后的第一回滚段中已存储的回滚数据的概率较高,则事务1和事务2之间会出现争抢上述使用后的第一回滚段;因此将使用后的第一回滚段具有末位存储顺序,则数据回滚的处理装置不会优先将该使用后的第一回滚段分配于其他事务,以避免出现事务对回滚段之间的争抢。
需要补充说明的是,各个回滚段在物理逻辑上对应一段文件,即该文件中即使没有写入数据,但该文件所占用的存储空间除了存储回滚数据以外,则不可用于存储其他数据;因此,数据库系统中过多的回滚段占用了数据库系统的较多的存储空间;则数据库系统中可以另作他用的空闲存储空间则不足,因此需要彻底删除部分回滚段;具体的,若数据库系统的空闲存储空间小于预设阈值,则删除空闲列表中的各个回滚段,并释放所述空闲列表中的各个回滚段对应的文件;例如,一个回滚段对应的文件占用的存储空间为地址0001至地址0008,则地址0001至地址0008所对应的存储空间仅用于存储回滚数据;而将文件释放后,地址0001至地址0008所对应的存储空间则作为上述空闲存储空间,可根据数据库系统的需要,做出任意分配。
进一步的,在删除了空闲列表中的各个回滚段之后,若数据库系统的空闲存储空间仍小于预设阈值,则释放重用列表中的可删除回滚段。其中,在确定重用列表中的可删除回滚段时,可以参考上述确定可回收的回滚段的各个步骤。
本实施例中,向每一个有需要的事务分配回滚段,并记录分配的回滚段的使用情况,则可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
图4为本发明数据回滚的处理装置实施例一的结构图。如图4所示,该处理装置包括:
确定模块51,用于当数据库系统接收到第一事务时,在所述数据库系统的各个列表所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段;所述回滚段用于存储事务访问数据文件产生的回滚数据;
记录模块52,用于针对所述第一事务,记录第一回滚段的使用情况;
存储模块53,用于根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中;
其中,所述各个列表包括重用列表、空闲列表和完成列表,所述重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,所述空闲列表中的每个回滚段中无回滚数据,所述完成列表中的每个回滚段中不具有剩余存储空间。
本实施例中,数据回滚的处理装置向每一个有需要的事务分配回滚段,并记录分配的回滚段的使用情况,则可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
图5为本发明数据回滚的处理装置实施例二的结构图。如图5所示,本实施例是在图4所示的实施例的基础上,做出进一步的描述,该处理装置中的确定模块51具体包括:
第一处理单元511,用于若所述重用列表中包括至少一个回滚段,则确定重用列表中最先存储的回滚段为所述第一回滚段,并在所述重用列表中删除该最先存储的回滚段;
第二处理单元512,若所述重用列表中不包括所述回滚段,则在所述空闲列表中确定所述第一回滚段。
进一步的,上述第二处理单元512具体用于若所述空闲列表包括至少一个回滚段,则将所述空闲列表中的一个回滚段作为所述第一回滚段,并将所述空闲列表中的该回滚段删除;
具体的,上述确定模块51在执行上述在数据库系统的各个列表所存储的各个回滚段中,确定分配于第一事务的第一回滚段时,上述第一处理单元511会先判断重用列表中是否存在回滚段,若存在,则上述第一处理单元511确定重用列表中最先存储的回滚段为所述第一回滚段;若不存在,则上述第一处理单元511触发第二处理单元512,则第二处理单元512会判断空闲列表中是否存在回滚段,若存在,第二处理单元512在空闲列表中确定第一回滚段;若所述空闲列表不包括回滚段,则所述第二处理单元触发判断模块54;
该判断模块54用于判断所述数据库系统中的全部回滚段的数量是否已达到上限;
若否,创建新增回滚段作为所述第一回滚段;
若是,则进行清理算法,并在进行了所述清理算法之后的空闲列表中,确定任意一个回滚段作为所述第一回滚段。
具体的,上述判断模块54所执行的清理算法包括:
由所述完成列表中最先存储的回滚段开始,依照存储的先后顺序,依次判断出所述完成列表中可回收的回滚段;
将所述可回收的回滚段由所述完成列表中删除,并存储至所述空闲列表中,获得所述进行了所述清理算法之后的空闲列表。
进一步的,上述判断模块54具体用于
根据所述完成列表中的待判断回滚段对应的最新使用情况,确定所述最新使用情况对应的第二事务;
若所述第二事务的访问时间不滞后于所述数据库系统中的当前事务的访问时间,则确定所述待判断回滚段为所述可回收的回滚段。
在事务使用了回滚段之后,上述存储模块53具体用于
若所述使用后的第一回滚段中不具有剩余存储空间,则将所述使用后的第一回滚段存储至所述完成列表,所述完成列表中的所述使用后的第一回滚段具有末位存储顺序;
若所述使用后的第一回滚段中具有剩余存储空间,则将所述第一回滚段存储至所述重用列表,所述重用列表中的所述使用后的第一回滚段具有末位存储顺序。
另外,为了优化数据库系统对数据回滚的处理过程,上述处理装置还包括释放模块55,用于若数据库系统的空闲存储空间小于预设阈值,则删除所述空闲列表中的各个回滚段,并释放所述空闲列表中的各个回滚段对应的文件。
在删除了所述空闲列表中的各个回滚段之后,若数据库系统的空闲存储空间仍小于预设阈值,则释放所述重用列表中的可删除回滚段。
本实施例中,数据回滚的处理装置向每一个有需要的事务分配回滚段,并记录分配的回滚段的使用情况,则可合理的对各个回滚段进行管理,即在针对一个事务进行回滚数据的存储时,不影响另一个事务对回滚数据的获取,保证了多个事务的并发特性,提高了数据库系统的工作性能。
需要补充的是,上述各个装置实施例中的各个模块用于执行前述各个方法实施例中的各个步骤,具体实现过程及技术效果请参照前述各个方法实施例,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种数据回滚的处理方法,其特征在于,包括:
当数据库系统接收到第一事务时,在所述数据库系统的各个列表所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段;所述回滚段用于存储事务访问数据文件产生的回滚数据;
针对所述第一事务,记录第一回滚段的使用情况;
根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中;
其中,所述各个列表包括重用列表、空闲列表和完成列表,所述重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,所述空闲列表中的每个回滚段中无回滚数据,所述完成列表中的每个回滚段中不具有剩余存储空间。
2.根据权利要求1所述的处理方法,其特征在于,所述在所述数据库系统的各个列表中所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段,包括:
若所述重用列表中包括至少一个回滚段,则确定重用列表中最先存储的回滚段为所述第一回滚段,并在所述重用列表中删除该最先存储的回滚段;
若所述重用列表中不包括所述回滚段,则在所述空闲列表中确定所述第一回滚段。
3.根据权利要求2所述的处理方法,其特征在于,所述在所述空闲列表中确定所述第一回滚段,包括:
若所述空闲列表包括至少一个回滚段,则将所述空闲列表中的一个回滚段作为所述第一回滚段,并将所述空闲列表中的该回滚段删除;
若所述空闲列表不包括回滚段,则判断所述数据库系统中的全部回滚段的数量是否已达到上限;
若否,创建新增回滚段作为所述第一回滚段;
若是,则进行清理算法,并在进行了所述清理算法之后的空闲列表中,确定任意一个回滚段作为所述第一回滚段。
4.根据权利要求3所述的处理方法,其特征在于,所述清理算法包括:
由所述完成列表中最先存储的回滚段开始,依照存储的先后顺序,依次判断出所述完成列表中可回收的回滚段;
将所述可回收的回滚段由所述完成列表中删除,并存储至所述空闲列表中,获得所述进行了所述清理算法之后的空闲列表。
5.根据权利要求4所述的处理方法,其特征在于,所述判断出所述完成列表中可回收的回滚段,包括:
根据所述完成列表中的待判断回滚段对应的最新使用情况,确定所述最新使用情况对应的第二事务;
若所述第二事务的访问时间不滞后于所述数据库系统中的当前事务的访问时间,则确定所述待判断回滚段为所述可回收的回滚段。
6.根据权利要求1或5所述的处理方法,其特征在于,所述根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的管理库中,包括:
若所述使用后的第一回滚段中不具有剩余存储空间,则将所述使用后的第一回滚段存储至所述完成列表,所述完成列表中的所述使用后的第一回滚段具有末位存储顺序;
若所述使用后的第一回滚段中具有剩余存储空间,则将所述第一回滚段存储至所述重用列表,所述重用列表中的所述使用后的第一回滚段具有末位存储顺序。
7.根据权利要求6所述的处理方法,其特征在于,所述处理方法还包括:
若数据库系统的空闲存储空间小于预设阈值,则删除所述空闲列表中的各个回滚段,并释放所述空闲列表中的各个回滚段对应的文件;
在删除了所述空闲列表中的各个回滚段之后,若数据库系统的空闲存储空间仍小于预设阈值,则释放所述重用列表中的可删除回滚段。
8.一种数据回滚的处理装置,其特征在于,包括:
确定模块,用于当数据库系统接收到第一事务时,在所述数据库系统的各个列表所存储的各个回滚段中,确定分配于所述第一事务的第一回滚段;所述回滚段用于存储事务访问数据文件产生的回滚数据;
记录模块,用于针对所述第一事务,记录第一回滚段的使用情况;
存储模块,用于根据所述第一回滚段的使用情况,将使用后的第一回滚段存储至对应的列表中;
其中,所述各个列表包括重用列表、空闲列表和完成列表,所述重用列表中的每个回滚段中存储了回滚数据,且具有剩余存储空间,所述空闲列表中的每个回滚段中无回滚数据,所述完成列表中的每个回滚段中不具有剩余存储空间。
9.根据权利要求8所述的处理装置,其特征在于,所述确定模块包括:
第一处理单元,用于若所述重用列表中包括至少一个回滚段,则确定重用列表中最先存储的回滚段为所述第一回滚段,并在所述重用列表中删除该最先存储的回滚段;
第二处理单元,若所述重用列表中不包括所述回滚段,则在所述空闲列表中确定所述第一回滚段。
10.根据权利要求9所述的处理装置,其特征在于,所述第二处理单元具体用于
若所述空闲列表包括至少一个回滚段,则将所述空闲列表中的一个回滚段作为所述第一回滚段,并将所述空闲列表中的该回滚段删除;
若所述空闲列表不包括回滚段,则所述第二处理单元触发判断模块;
所述判断模块用于判断所述数据库系统中的全部回滚段的数量是否已达到上限;
若否,创建新增回滚段作为所述第一回滚段;
若是,则进行清理算法,并在进行了所述清理算法之后的空闲列表中,确定任意一个回滚段作为所述第一回滚段。
11.根据权利要求10所述的处理装置,其特征在于,所述清理算法包括:
由所述完成列表中最先存储的回滚段开始,依照存储的先后顺序,依次判断出所述完成列表中可回收的回滚段;
将所述可回收的回滚段由所述完成列表中删除,并存储至所述空闲列表中,获得所述进行了所述清理算法之后的空闲列表。
12.根据权利要求11所述的处理装置,其特征在于,所述判断模块具体用于
根据所述完成列表中的待判断回滚段对应的最新使用情况,确定所述最新使用情况对应的第二事务;
若所述第二事务的访问时间不滞后于所述数据库系统中的当前事务的访问时间,则确定所述待判断回滚段为所述可回收的回滚段。
13.根据权利要求8或12所述的处理装置,其特征在于,所述存储模块具体用于
若所述使用后的第一回滚段中不具有剩余存储空间,则将所述使用后的第一回滚段存储至所述完成列表,所述完成列表中的所述使用后的第一回滚段具有末位存储顺序;
若所述使用后的第一回滚段中具有剩余存储空间,则将所述第一回滚段存储至所述重用列表,所述重用列表中的所述使用后的第一回滚段具有末位存储顺序。
14.根据权利要求13所述的处理装置,其特征在于,所述处理装置还包括释放模块,用于
若数据库系统的空闲存储空间小于预设阈值,则删除所述空闲列表中的各个回滚段,并释放所述空闲列表中的各个回滚段对应的文件;
在删除了所述空闲列表中的各个回滚段之后,若数据库系统的空闲存储空间仍小于预设阈值,则释放所述重用列表中的可删除回滚段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754233.6A CN103699681B (zh) | 2013-12-31 | 2013-12-31 | 数据回滚的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754233.6A CN103699681B (zh) | 2013-12-31 | 2013-12-31 | 数据回滚的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699681A CN103699681A (zh) | 2014-04-02 |
CN103699681B true CN103699681B (zh) | 2017-01-04 |
Family
ID=50361209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310754233.6A Active CN103699681B (zh) | 2013-12-31 | 2013-12-31 | 数据回滚的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699681B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095016B (zh) * | 2014-05-16 | 2018-05-18 | 北京云巢动脉科技有限公司 | 一种磁盘快照回滚方法及装置 |
CN104021043B (zh) * | 2014-06-23 | 2017-09-15 | 中国银行股份有限公司 | 批量应用程序的中断重入方法及系统 |
CN109829678B (zh) * | 2017-11-23 | 2023-07-21 | 阿里巴巴集团控股有限公司 | 一种回滚处理方法、装置以及电子设备 |
CN111476670B (zh) * | 2020-04-08 | 2023-05-30 | 杭州复杂美科技有限公司 | 区块链回滚保险方法、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996855A (zh) * | 2006-12-22 | 2007-07-11 | 中国建设银行股份有限公司 | 一种保持数据一致性的方法及系统 |
CN101082929A (zh) * | 2007-06-27 | 2007-12-05 | 腾讯科技(深圳)有限公司 | 一种构建内存树的方法及系统 |
CN101957823B (zh) * | 2009-07-20 | 2012-10-10 | 北京数码大方科技有限公司 | 用于数据库的事务控制方法 |
-
2013
- 2013-12-31 CN CN201310754233.6A patent/CN103699681B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996855A (zh) * | 2006-12-22 | 2007-07-11 | 中国建设银行股份有限公司 | 一种保持数据一致性的方法及系统 |
CN101082929A (zh) * | 2007-06-27 | 2007-12-05 | 腾讯科技(深圳)有限公司 | 一种构建内存树的方法及系统 |
CN101957823B (zh) * | 2009-07-20 | 2012-10-10 | 北京数码大方科技有限公司 | 用于数据库的事务控制方法 |
Non-Patent Citations (2)
Title |
---|
《A Dependence-Based Transaction Model in Workflow》;shaofei Wu;《Industrial and Information Systems,2009.IIS"09.International Conference on Date of Conference》;20090425;全文 * |
《Oracle8i 回滚段的配置》;齐红心;《微型机与应用》;20030630(第6期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103699681A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105589812B (zh) | 磁盘碎片整理方法、装置及主机 | |
CN104461390B (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
CN103514249B (zh) | 一种数据自精简方法和系统及存储装置 | |
CN101354681B (zh) | 存储器系统、非易失性存储器的磨损均衡方法及装置 | |
US20080016121A1 (en) | Method, an apparatus and a system for managing a snapshot storage pool | |
CN103207839B (zh) | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
CN106662981A (zh) | 存储设备、程序和信息处理方法 | |
US20070162506A1 (en) | Method and system for performing a redistribute transparently in a multi-node system | |
CN103631940A (zh) | 一种应用于hbase数据库的数据写入方法及系统 | |
CN103558992A (zh) | 堆外直接内存数据存储器,创建和/或管理堆外直接内存数据存储器的方法,和/或包括堆外直接内存数据存储器的系统 | |
CN103699681B (zh) | 数据回滚的处理方法和装置 | |
CN103294675A (zh) | 一种分布式存储系统中的数据更新方法及装置 | |
CN1936859A (zh) | 一种内存监控方法 | |
CN105787037B (zh) | 一种重复数据的删除方法及装置 | |
CN107632791A (zh) | 一种存储空间的分配方法及系统 | |
CN104462389A (zh) | 基于分级存储的分布式文件系统实现方法 | |
US8898677B2 (en) | Data arrangement calculating system, data arrangement calculating method, master unit and data arranging method | |
CN101763415B (zh) | 一种数据库的b树索引的生成方法及装置 | |
CN105718217A (zh) | 一种精简配置存储池数据一致性维护的方法及装置 | |
CN106484906A (zh) | 一种分布式对象存储系统闪回方法及装置 | |
CN106775496A (zh) | 一种存储数据处理方法及装置 | |
CN105095016B (zh) | 一种磁盘快照回滚方法及装置 | |
CN107239412A (zh) | 基于Thin‑LUN的存储空间配置方法、数据写入方法及存储设备 | |
CN103559139A (zh) | 一种数据存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |