一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

行迁移消除方法、装置、计算机设备和存储介质与流程

2022-04-02 03:07:51 来源:中国专利 TAG:


1.本技术涉及云数据技术领域,特别是涉及一种行迁移消除方法、装置、计算机设备、存储介质和计算机程序产品。


背景技术:

2.在oracle(关系数据库管理系统)中修改非行链接的行时,修改后的行长度大于修改前的行长度,且该数据块无法容纳修改后的行时,会将整行的数据迁移到另一个数据块上,并且在原数据块中保留指向该行新位置的指针,这种情况为行迁移。当查询出现行迁移的数据时会引起数据库性能下降,会产生额外的i/o操作。
3.传统的方案是将存在行迁移的数据存入临时表,删除原来表中存在行迁移的数据,再将临时表的数据取出重新插入到原来表后,删除临时表。但这种处理方式没有考虑外键约束的情况,会导致无法删除有外键约束的存在行迁移的数据行,影响数据库性能。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够提高数据库性能的行迁移消除方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种行迁移消除方法。所述方法包括:
6.检测存在行迁移的记录行,确定所述记录行对应的行标识;
7.基于所述行标识,查找所述记录行进行行迁移后所在的当前数据块、以及所述记录行进行行迁移前所在的原始数据块;
8.确定所述原始数据块的剩余空闲空间以及所述记录行所需占用的存储空间;
9.当所述剩余空闲空间不小于所述存储空间时,将所述当前数据块中的记录行迁移到所述原始数据块中,并删除所述原始数据块中指向所述当前数据块的指针。
10.在其中一个实施例中,所述确定所述原始数据块的剩余空闲空间,包括:
11.获取所述原始数据块对应的数据块标识;
12.以所述数据块标识为索引条件,定位数据表中与所述原始数据块对应的记录信息;
13.从所述记录信息中得到所述原始数据块的剩余空闲空间。
14.在其中一个实施例中,所述从所述记录信息中得到所述原始数据块的剩余空闲空间,包括:
15.从所述记录信息中获取所述原始数据块的总存储空间以及所述原始数据块中每一记录行对应的已占用存储空间的空间大小;
16.累加所述记录行对应的已占用存储空间的空间大小,得到所述原始数据块对应的累计占用存储空间;
17.基于所述原始数据块对应的总存储空间和所述累计占用存储空间,得到所述原始数据块的剩余空闲空间。
18.在其中一个实施例中,所述检测存在行迁移的记录行,确定所述记录行对应的行标识,包括:
19.基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表;
20.基于所述目标信息表,确定存在行迁移的记录行以及所述记录行对应的行标识。
21.在其中一个实施例中,所述基于所述目标信息表,确定存在行迁移的记录行以及所述记录行对应的行标识,包括:
22.基于所述目标信息表,将产生行迁移行为的记录行所对应的行标识记录到数据字典表;
23.遍历所述数据字典表,确定存在行迁移的记录行以及所述记录行对应的行标识。
24.在其中一个实施例中,所述方法还包括:
25.按照预设周期,触发针对记录行的行迁移消除任务;
26.当所述剩余空闲空间小于当前记录行的存储空间、且不存在存储空间小于或等于所述剩余空闲空间的记录行时,结束当前周期的行迁移消除任务。
27.第二方面,本技术还提供了一种行迁移消除装置。所述装置包括:
28.检测模块,用于检测存在行迁移的记录行,确定所述记录行对应的行标识;
29.数据库查找模块,用于基于所述行标识,查找所述记录行进行行迁移后所在的当前数据块、以及所述记录行进行行迁移前所在的原始数据块;
30.空间确定模块,用于确定所述原始数据块的剩余空闲空间以及所述记录行所需占用的存储空间;
31.行迁移消除模块,用于当所述剩余空闲空间不小于所述存储空间时,将所述当前数据块中的记录行迁移到所述原始数据块中,并删除所述原始数据块中指向所述当前数据块的指针。
32.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
33.检测存在行迁移的记录行,确定所述记录行对应的行标识;
34.基于所述行标识,查找所述记录行进行行迁移后所在的当前数据块、以及所述记录行进行行迁移前所在的原始数据块;
35.确定所述原始数据块的剩余空闲空间以及所述记录行所需占用的存储空间;
36.当所述剩余空闲空间不小于所述存储空间时,将所述当前数据块中的记录行迁移到所述原始数据块中,并删除所述原始数据块中指向所述当前数据块的指针。
37.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
38.检测存在行迁移的记录行,确定所述记录行对应的行标识;
39.基于所述行标识,查找所述记录行进行行迁移后所在的当前数据块、以及所述记录行进行行迁移前所在的原始数据块;
40.确定所述原始数据块的剩余空闲空间以及所述记录行所需占用的存储空间;
41.当所述剩余空闲空间不小于所述存储空间时,将所述当前数据块中的记录行迁移到所述原始数据块中,并删除所述原始数据块中指向所述当前数据块的指针。
42.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
43.检测存在行迁移的记录行,确定所述记录行对应的行标识;
44.基于所述行标识,查找所述记录行进行行迁移后所在的当前数据块、以及所述记录行进行行迁移前所在的原始数据块;
45.确定所述原始数据块的剩余空闲空间以及所述记录行所需占用的存储空间;
46.当所述剩余空闲空间不小于所述存储空间时,将所述当前数据块中的记录行迁移到所述原始数据块中,并删除所述原始数据块中指向所述当前数据块的指针。
47.上述行迁移消除方法、装置、计算机设备、存储介质和计算机程序产品,通过检测存在行迁移的记录行,确定记录行对应的行标识,便于进行记录行的定位,基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块,确定记录行迁移前后分别所在的位置,确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间,以便进行空间大小的比较,当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针,从而消除了行迁移,减少了额外的i/o操作,从整体上提升了数据库的数据处理性能。
附图说明
48.图1为一个实施例中行迁移消除方法的应用环境图;
49.图2为一个实施例中行迁移消除方法的流程示意图;
50.图3为另一个实施例中行迁移消除方法的流程示意图;
51.图4为又一个实施例中行迁移消除方法的流程示意图;
52.图5为一个实施例中行迁移消除装置的结构框图;
53.图6为一个实施例中计算机设备的内部结构图。
具体实施方式
54.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
55.本技术实施例提供的行迁移消除方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102可以用于配置行迁移消除事件的触发条件,服务器在检测到符合触发条件时,触发行迁移消除事件,进行行迁移消除,服务器104进行行迁移消除处理具体包括:检测存在行迁移的记录行,确定记录行对应的行标识,基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块,确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间,当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针,从而消除对记录行的行迁移。
56.其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器可以是独立的服
务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
57.在一个实施例中,如图2所示,提供了一种行迁移消除方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
58.步骤202,检测存在行迁移的记录行,确定记录行对应的行标识。
59.其中,行迁移是指一个数据行不适合放入当前块而被重新定位到另一个块,但在原始块中保留一个指针,索引的行标识仍然指向原始位置。具体地,oracle 数据库中修改非行链接的记录行时,修改后的记录行长度大于修改前的记录行长度,且该数据块中的空闲空间较小导致无法容纳修改后的记录行时,oracle数据库会将整行的数据迁移到另一个数据块上,并且在原数据块中保留指向该行新位置的指针,其中,oracle数据库可以是存储于云端的云数据库。
60.记录行是oracle数据库中按行进行数据记录的数据单位。与行链接不同的是,记录行所对应的数据是记录在同一个数据块中,而行链接是指当一行数据太大而不能在一个单数据块容纳时,使用多个数据块分成片来存储数据的方式。举例来说,当使用了4kb的oracle数据块大小,而需要插入一行数据是8k,oracle 数据库则需要使用3个数据块分成片来存储该数据。
61.行标识是指oracle数据库的表中的每一行数据所对应的唯一标识符,行标识可以称为rowid,在oracle内部通常使用rowid来访问数据。具体地,rowid 需要10个字节的存储空间,并用字符串来显示,该字符串表明了该行在oracle 数据库中的物理具体位置。其中,字符串包括数据对象编号、对应文件编号、块编号以及行编号。数据对象编号表明此行所属的数据库对象的编号,每个数据对象在数据库建立的时候都被唯一分配一个编号,并且此编号唯一。对应文件编号表明该行所在文件的编号,表空间的每一个文件标号都是唯一的。块编号,表明该行所在文件的块的位置,行编号表明该行在行目录中的具体位置。行标识可以表征物理表中行数据的内部地址,包含两个地址,其一为指向数据表中包含该行的块所存放数据文件的地址,另一个是可以直接定位到数据行自身的这一行在数据块中的地址。
62.具体地,对于记录行进行行迁移,oracle数据库会迁移整行数据到一个能够存储下整行数据的数据块中,迁移的原始指针指向新的存放行数据的新数据块, rowid不变。当数据行发生迁移时,对其访问将会造成i/o性能降低,因为oracle 为获取这些数据行的数据,必须访问更多的数据块。服务器响应于行迁移消除事件的触发,启动对存在行迁移的记录行的检测进程,服务器通过检测并定位发生行迁移的记录行,并存储该些记录行的rowid。
63.步骤204,基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块。
64.其中,记录行在行迁移前后所在的数据块是不同的。记录行进行行迁移后所在的数据块为当前数据块,记录行进行行迁移前所在的数据块为原始数据块。在原始数据块中存储有指向记录行在当前数据块的存储位置的指针,以使得在对该记录行进行数据查找时,能够基于原始数据块中存储的指针确定记录行当前所在的数据块,从而获取到该记录行对应的数据。
65.具体地,原始数据块作为在修改之前未发生行迁移时记录行所在的数据块,在发生行迁移之后,在原始数据块中会存储有当前记录行所在数据块的指针。服务器基于行标识,确定记录行当前所在的当前数据块以及与记录行对应的指向当前数据块的指针,服务器通过定位存储有对应指针的数据块,实现对记录行所对应原始数据块的定位。
66.步骤206,确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间。
67.其中,剩余空闲空间是指数据块中没有存储数据的碎片空闲空间的空间大小的总和。需要说明的是,剩余空闲空间并不要求是连续的存储空间,可以由多个碎片化的存储空间组成。记录行所需占用的存储空间是指记录行在数据块中进行存储所需要占用的空间,记录行所需占用的存储空间与记录行所多对应的数据内容的多少相关,记录行的数据内容越多,记录行所需占用的存储空间越大,记录行的数据内容越少,记录行所需占用的存储空间越小。
68.具体地,服务器可以通过表查询,获取记录行的存储信息,存储信息是指记录行在数据块中所占用的存储空间的大小,通过获取存储信息,确定记录行所需占用的存储空间。服务器可以通过原始数据块的数据块标识,定位到原始数据块所在的位置,查看该原始数据块的剩余空闲空间。
69.步骤208,当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针。
70.其中,记录行在发生行迁移之后,会在当前数据块中存储记录行,在原始数据块中存储有指向当前数据块的指针。服务器比较记录行所需占用的存储空间的大小以及原始数据块的剩余空闲空间的大小,得到比较结果,根据比较结果,执行进一步的数据处理操作。比较结果包括原始数据块的剩余空闲空间大于或等于该记录行所需占用的存储空间的大小、以及原始数据块的剩余空闲空间小于该记录行所需占用的存储空间的大小两种情况,不同比较结果对应不同的数据处理操作,具体的数据处理操作与比较结果的关联关系可以预先设定。
71.具体地,若原始数据块的剩余空闲空间大于或等于该记录行所需占用的存储空间的大小,表征可以将记录行从当前数据块中迁移会原始数据块,实现行迁移的消除。为实现行迁移的消除,需要完成两个步骤,第一是将当前数据块中的记录行迁移到原始数据块中释当前数据块中的空间,实现数据从当前数据块到原始数据块的迁移,第二是删除原始数据块中指向当前数据块的指针,解除两个数据块之间的关联。
72.上述行迁移消除方法,通过检测存在行迁移的记录行,确定记录行对应的行标识,便于进行记录行的定位,基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块,确定记录行迁移前后分别所在的位置,确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间,以便进行空间大小的比较,当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针,不仅解决了传统方案中无法删除有外键约束的存在行迁移的记录,而且无需在维护索引树的平衡上消耗大量的时间。由于数据库长期运行过程中会出现大量的表空间碎片,通过上述方法,将记录行迁移到能够容纳记录行大小的原始数据块中,并删除原始数据块的指针且释放当前数据块的空间。一方面消除了行迁移现象,减少了额外的i/o操作,另一方面填充了表空间空闲碎片空间,缓解了表空间碎片化的现象,
并释放了当前数据块的空间,从整体上提升了数据库的数据处理性能。
73.在一个实施例中,确定原始数据块的剩余空闲空间,包括:获取原始数据块对应的数据块标识;以数据块标识为索引条件,定位数据表中与原始数据块对应的记录信息;从记录信息中得到原始数据块的剩余空闲空间。
74.其中,数据块标识是oracle数据库中的每一数据块所对应的唯一标识符,不同的数据块具有不同的数据块标识。数据表是指oracle数据库中用于记录每一数据块对应信息的表。记录信息是指数据块的属性信息,包括数据块的总存储空间的大小、还包括数据块的已用存储空间的大小或剩余空闲空间的大小等。
75.具体地,服务器通过获取原始数据块对应的数据块标识,以原始数据块的数据块标识为索引条件,从数据表中定位到原始数据块对应的记录信息,根据存储空间所对应的关键词,从原始数据块对应的记录信息中查询到原始数据块的存储空间信息,从而得到原始数据块的剩余空闲空间。
76.在本实施例中,通过以原始数据块对应的数据块标识为索引条件来定位原始数据块的记录信息,得到原始数据块的剩余空闲空间,能够实现对剩余空闲空间的快速准确的获取,提高数据处理速度。
77.在一个实施例中,从记录信息中得到原始数据块的剩余空闲空间,包括:从记录信息中获取原始数据块的总存储空间以及原始数据块中每一记录行对应的已占用存储空间的空间大小;累加记录行对应的已占用存储空间的空间大小,得到原始数据块对应的累计占用存储空间;基于原始数据块对应的总存储空间和累计占用存储空间,得到原始数据块的剩余空闲空间。
78.其中,总存储空间是指一个数据块在未存储任何记录行之前所能够提供的存储空间,不同数据块的总存储空间可以是相同的,也可以是不同的,数据块的总存储空间具体可以根据实际的应用场景进行配置。已占用存储空间是指当前已存储的每一记录行各自占用的存储空间,累计占用存储空间是指当前已存储的各记录行各自占用的存储空间的总和,累计占用存储空间包括存储记录行对应数据的空间以及存储记录行对应指针的空间。
79.具体地,当服务器从数据表中的记录信息获取得到存储信息为数据块的已用存储空间,则通过计算数据块的总存储空间的大小与已用存储空间的大小的差值,得到原始数据块的剩余存储空间。在一个具体的应用中,服务器从数据表中的记录信息获取得到存储信息可以是每一个已存储的记录行对应的已占用存储空间,由于每一个记录行对应的已占用存储空间可能是非连续的,服务器通过累加该数据块中每一个记录行对应的已占用存储空间的大小,得到数据块对应的已占用存储空间的大小,然后通过计算数据块的总存储空间的大小与已用存储空间的大小的差值,得到原始数据块的剩余存储空间。
80.当服务器从数据表中的记录信息获取得到存储信息为剩余存储空间的大小时,可以直接得到原始数据块的剩余空闲空间。其中,原始数据块的剩余空闲空间可以是数据块在每一次完成一次数据存储时进行统计得到,以便于服务器快速得到原始数据块的剩余空闲空间。
81.在本实施例中,通过从记录信息中获取原始数据块的总存储空间并计算各记录行的累计占用存储空间,能够针对已占用存储空间非连续的记录行进行分析,基于总存储空间和累计占用存储空间,准确地得到原始数据块的剩余空闲空间,从而提高后续进行空间
大小对比处理的结果的准确性。
82.在一个实施例中,如图3所示,检测存在行迁移的记录行,确定记录行对应的行标识,包括:
83.步骤302,基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表。
84.步骤304,基于目标信息表,确定存在行迁移的记录行以及记录行对应的行标识。
85.其中,数据存储方式包括将数据存储在同一个数据块的存储方式,还包括通过行链接将数据分别存储不同的数据块的存储方式,还包括通过行迁移将数据迁移到另一个数据块,在迁移前所在的数据块中保留指针的存储方式。信息表是用于记录行对应存储信息的数据表,基于信息表中记录的存储信息,可以确定每一记录行对应数据存储方式,在信息表中记录有相应记录行对应的行标识。
86.具体地,服务器基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表,实现对具有行迁移行为的记录行的筛选,服务器基于目标信息表中记录的行标识,确定存在行迁移的记录行以及记录行对应的行标识。
87.在本实施例中,服务器依据行迁移行为特定的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表,基于目标信息表,能够快速准确地定位存在行迁移的记录行并确定记录行对应的行标识,从而实现对存在行迁移的记录行的准确识别。
88.在一个实施例中,基于目标信息表,确定存在行迁移的记录行以及记录行对应的行标识,包括:
89.基于目标信息表,将产生行迁移行为的记录行所对应的行标识记录到数据字典表;遍历数据字典表,确定存在行迁移的记录行以及记录行对应的行标识。
90.其中,数据字典表由脚本utlchain.sql或脚本utlchn1.sql创建,用于接收对信息表进行分析的数据结果。服务器通过遍历数据字典表,可以查询对信息表进行分析的数据结果,即是否存在行迁移的记录行以及当存在行迁移的记录行时对应的行标识。
91.具体地,服务器通过获取包括记录行信息的信息表,基于行迁移行为对应的数据存储方式,筛选有行迁移的目标信息表,服务器通过创建数据字典表,通过分析有行迁移的表,将产生行迁移的记录行对应的行标识记录到数据字典表中,服务器通过数据字典表中可查询存在行迁移记录行对应的行标识。
92.在本实施例中,服务器通过创建数据字典表来对产生行迁移行为的记录行所对应的行标识进行记录,能够便于快速地获取到存在行迁移的记录行所对应的行标识,提高数据处理效率。
93.在一个实施例中,方法还包括:按照预设周期,触发针对记录行的行迁移消除任务;当剩余空闲空间小于当前记录行的存储空间、且不存在存储空间小于或等于剩余空闲空间的记录行时,结束当前周期的行迁移消除任务。
94.其中,预设周期是指针对记录行的行迁移消除任务的触发周期,预设周期可以根据实际的场景需要进行设定。
95.具体地,服务器在一个预设周期内,会对所有具有行迁移行为的记录行尝试进行行迁移消除,当剩余空闲空间大于或等于当前记录行的存储空间时,服务器将当前记录行迁移至原始数据块,并删除原始数据块中指向当前数据量的指针,当剩余空闲空间小于当
前记录行的存储空间时,服务器跳过该记录行,并将下一未处理的记录行作为当前记录行执行相同的处理,直至不存在存储空间小于或等于剩余空闲空间的记录行,从而结束当前周期的行迁移消除任务,等待下一周期针对记录行的行迁移消除任务的触发。
96.在本实施例中,通过设定针对记录行的行迁移消除任务的触发周期,按周期执行对记录行的行迁移消除任务,能够自动针对数据块中的存储空间的变化,适应性地进行行迁移的消除,从而提高数据库的数据处理性能。
97.在一个具体的应用中,如图4所示,提供了一种行迁移消除方法,具体包括以下处理过程:
98.在oracle中修改非行链接的行时,修改后的行长度大于修改前的行长度,且该数据块中的空闲空间较小导致无法容纳修改后的行时,oracle会将整行的数据迁移到另一个数据块上,并且在原数据块中保留指向该行新位置的指针,这种情况为行迁移。当查询出现行迁移的数据时会引起数据库性能下降,因为发生行迁移的行的rowid不会发生改变,所以访问行迁移的数据行时需要访问2 个数据块,会产生额外的i/o操作。
99.传统的方案是将存在行迁移的数据存入临时表(或称中间表),删除原来表中存在行迁移的数据,再将临时表的数据取出重当前插入到原来表后,删除临时表。由于这种处理方式没有考虑外键约束的情况,会导致无法删除有外键约束的存在行迁移的数据行。并且这种方式在插入和删除时没有对索引进行处理,这会导致在维护索引树的平衡上消耗大量的时间。
100.由于传统方案的使用场景有限且数据库运行一段时间后会产生表空间碎片化的现象,本方法提出将存在行迁移的记录行收集起来,对比这些记录行的原始数据块剩余空闲空间和记录行的大小,当原始数据块能够容纳记录行时迁移到原始数据块中,并删除原始数据块的指针且释放当前数据块的空间。
101.消除行迁移的具体步骤如下:
102.第一步:检测并收集存在行迁移的rowid;
103.服务器通过定位到发生行迁移的记录行,并将这些记录行的rowid收集起。具体地,服务器获取包括记录行信息的表,基于行迁移行为对应的数据存储方式,筛选有行迁移的表,创建数据字典表,通过分析有行迁移的表,将产生行迁移的rowid信息记录到数据字典表中,在数据字典表中可查询存在行迁移的 rowid。
104.第二步:查询该记录行的大小;
105.具体地,服务器通过表查询,获取记录行的存储信息,存储信息是指记录行在数据块中所占用的存储空间的大小,通过获取存储信息,确定记录行的空间大小,以便用来与原始数据块的剩余空闲空间大小对比。
106.第三步:找到该记录行所在的原始数据块;
107.具体地,服务器基于行标识,确定记录行当前所在的当前数据块以及与记录行对应的指向当前数据块的指针,服务器通过定位存储有对应指针的数据块,实现对记录行所对应原始数据块的定位。
108.第四步:查询原始数据块的剩余碎片空闲空间;
109.具体地,服务器通过获取原始数据块对应的数据块标识,以原始数据块的数据块标识为索引条件,从数据表中定位到原始数据块对应的记录信息,根据存储空间所对应的
关键词,当服务器从数据表中的记录信息获取得到存储信息为数据块的已用存储空间,则通过计算数据块的总存储空间的大小与已用存储空间的大小的差值,得到原始数据块的剩余存储空间。在一个具体的应用中,服务器从数据表中的记录信息获取得到存储信息可以是每一个已存储的记录行对应的已占用存储空间,由于每一个记录行对应的已占用存储空间可能是非连续的,服务器通过累加该数据块中每一个记录行对应的已占用存储空间的大小,得到数据块对应的已占用存储空间的大小,然后通过计算数据块的总存储空间的大小与已用存储空间的大小的差值,得到原始数据块的剩余存储空间。
110.第五步:判断原始数据块的剩余碎片空闲空间是否大于该记录行的大小;若是,进入第六步,若否,进入第八步;
111.第六步,将当前数据块中的记录行迁移到原始数据块中;
112.第七步,跳过该记录行,待原始数据块的剩余碎片空闲空间多于记录行的大小时再消除行迁移;
113.第八步:删除原始数据块中指向当前数据块的指针并释当前数据块中的空间。
114.具体地,若原始数据块的剩余空闲空间大于或等于该记录行所需占用的存储空间的大小,表征可以将记录行从当前数据块中迁移会原始数据块,实现行迁移的消除。为实现行迁移的消除,服务器需要完成两个步骤,第一是将当前数据块中的记录行迁移到原始数据块中释当前数据块中的空间,实现数据从当前数据块到原始数据块的迁移,第二是删除原始数据块中指向当前数据块的指针,解除两个数据块之间的关联。
115.上述行迁移消除方法,解决了传统方案中无法删除有外键约束的存在行迁移的记录,也无需在维护索引树的平衡上消耗大量的时间。由于数据库长期运行过程中会出现大量的表空间碎片,基于这一点,本方案将记录行迁移到能够容纳记录行大小的原始数据块中,并删除原始数据块的指针且释放当前数据块的空间。一方面消除了行迁移现象,减少了额外的i/o操作,另一方面填充了表空间空闲碎片空间,缓解了表空间碎片化的现象,并释放了数据块空间,从整体上提升了数据库的数据处理性能。
116.应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
117.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的行迁移消除方法的行迁移消除装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个行迁移消除装置实施例中的具体限定可以参见上文中对于行迁移消除方法的限定,在此不再赘述。
118.在一个实施例中,如图5所示,提供了一种行迁移消除装置,包括:检测模块502、数据库查找模块504、空间确定模块506和行迁移消除模块508,其中:
119.检测模块502,用于检测存在行迁移的记录行,确定记录行对应的行标识;
120.数据库查找模块504,用于基于行标识,查找记录行进行行迁移后所在的当前数据
块、以及记录行进行行迁移前所在的原始数据块;
121.空间确定模块506,用于确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间;
122.行迁移消除模块508,用于当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针。
123.在一个实施例中,空间确定模块还用于获取原始数据块对应的数据块标识;以数据块标识为索引条件,定位数据表中与原始数据块对应的记录信息;从记录信息中得到原始数据块的剩余空闲空间。
124.在一个实施例中,空间确定模块还用于从记录信息中获取原始数据块的总存储空间以及原始数据块中每一记录行对应的已占用存储空间的空间大小;累加记录行对应的已占用存储空间的空间大小,得到原始数据块对应的累计占用存储空间;基于原始数据块对应的总存储空间和累计占用存储空间,得到原始数据块的剩余空闲空间。
125.在一个实施例中,检测模块还用于基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表;基于目标信息表,确定存在行迁移的记录行以及记录行对应的行标识。
126.在一个实施例中,检测模块还用于基于目标信息表,将产生行迁移行为的记录行所对应的行标识记录到数据字典表;遍历数据字典表,确定存在行迁移的记录行以及记录行对应的行标识。
127.在一个实施例中,行迁移消除装置还包括任务触发模块,用于按照预设周期,触发针对记录行的行迁移消除任务;当剩余空闲空间小于当前记录行的存储空间、且不存在存储空间小于或等于剩余空闲空间的记录行时,结束当前周期的行迁移消除任务。
128.上述行迁移消除装置,通过检测存在行迁移的记录行,确定记录行对应的行标识,便于进行记录行的定位,基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块,确定记录行迁移前后分别所在的位置,确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间,以便进行空间大小的比较,当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针,从而消除了行迁移,减少了额外的i/o操作,从整体上提升了数据库的数据处理性能。
129.上述行迁移消除装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
130.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种行迁移消除方法。
131.本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结
构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
132.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
133.检测存在行迁移的记录行,确定记录行对应的行标识;基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块;确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间;当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针。
134.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
135.获取原始数据块对应的数据块标识;以数据块标识为索引条件,定位数据表中与原始数据块对应的记录信息;从记录信息中得到原始数据块的剩余空闲空间。
136.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
137.从记录信息中获取原始数据块的总存储空间以及原始数据块中每一记录行对应的已占用存储空间的空间大小;累加记录行对应的已占用存储空间的空间大小,得到原始数据块对应的累计占用存储空间;基于原始数据块对应的总存储空间和累计占用存储空间,得到原始数据块的剩余空闲空间。
138.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
139.基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表;基于目标信息表,确定存在行迁移的记录行以及记录行对应的行标识。
140.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
141.基于目标信息表,将产生行迁移行为的记录行所对应的行标识记录到数据字典表;遍历数据字典表,确定存在行迁移的记录行以及记录行对应的行标识。
142.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
143.按照预设周期,触发针对记录行的行迁移消除任务;当剩余空闲空间小于当前记录行的存储空间、且不存在存储空间小于或等于剩余空闲空间的记录行时,结束当前周期的行迁移消除任务。
144.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
145.检测存在行迁移的记录行,确定记录行对应的行标识;基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块;确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间;当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针。
146.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
147.获取原始数据块对应的数据块标识;以数据块标识为索引条件,定位数据表中与原始数据块对应的记录信息;从记录信息中得到原始数据块的剩余空闲空间。
148.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
149.从记录信息中获取原始数据块的总存储空间以及原始数据块中每一记录行对应
的已占用存储空间的空间大小;累加记录行对应的已占用存储空间的空间大小,得到原始数据块对应的累计占用存储空间;基于原始数据块对应的总存储空间和累计占用存储空间,得到原始数据块的剩余空闲空间。
150.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
151.基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表;基于目标信息表,确定存在行迁移的记录行以及记录行对应的行标识。
152.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
153.基于目标信息表,将产生行迁移行为的记录行所对应的行标识记录到数据字典表;遍历数据字典表,确定存在行迁移的记录行以及记录行对应的行标识。
154.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
155.按照预设周期,触发针对记录行的行迁移消除任务;当剩余空闲空间小于当前记录行的存储空间、且不存在存储空间小于或等于剩余空闲空间的记录行时,结束当前周期的行迁移消除任务。
156.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
157.检测存在行迁移的记录行,确定记录行对应的行标识;基于行标识,查找记录行进行行迁移后所在的当前数据块、以及记录行进行行迁移前所在的原始数据块;确定原始数据块的剩余空闲空间以及记录行所需占用的存储空间;当剩余空闲空间不小于存储空间时,将当前数据块中的记录行迁移到原始数据块中,并删除原始数据块中指向当前数据块的指针。
158.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
159.获取原始数据块对应的数据块标识;以数据块标识为索引条件,定位数据表中与原始数据块对应的记录信息;从记录信息中得到原始数据块的剩余空闲空间。
160.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
161.从记录信息中获取原始数据块的总存储空间以及原始数据块中每一记录行对应的已占用存储空间的空间大小;累加记录行对应的已占用存储空间的空间大小,得到原始数据块对应的累计占用存储空间;基于原始数据块对应的总存储空间和累计占用存储空间,得到原始数据块的剩余空闲空间。
162.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
163.基于行迁移行为对应的数据存储方式,从信息表中筛选出表征行迁移行为的目标信息表;基于目标信息表,确定存在行迁移的记录行以及记录行对应的行标识。
164.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
165.基于目标信息表,将产生行迁移行为的记录行所对应的行标识记录到数据字典表;遍历数据字典表,确定存在行迁移的记录行以及记录行对应的行标识。
166.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
167.按照预设周期,触发针对记录行的行迁移消除任务;当剩余空闲空间小于当前记录行的存储空间、且不存在存储空间小于或等于剩余空闲空间的记录行时,结束当前周期的行迁移消除任务。
168.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以
通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器 (ferroelectric random access memory,fram)、相变存储器(phase changememory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器 (random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random accessmemory,sram)或动态随机存取存储器(dynamic random access memory, dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
169.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
170.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献