表空间碎片回收方法、装置、电子设备及存储介质制造方法及图纸

技术编号:22883860 阅读:23 留言:0更新日期:2019-12-21 07:15
本申请公开了表空间碎片回收方法、装置、电子设备及存储介质,涉及数据库管理系统技术领域。具体实现方案为:将数据页中的数据按照物理顺序向前迁移,以在表空间的末尾构造出空闲数据页;所述表空间为多个数据页按照所述物理顺序构成的数据空间;释放所述表空间末尾的空闲数据页。本申请能够在不对磁盘空间带来额外压力的情况下实现对表空间碎片的回收。

Methods, devices, electronic equipment and storage media of debris recovery from surface space

【技术实现步骤摘要】
表空间碎片回收方法、装置、电子设备及存储介质
本申请涉及一种数据领域,尤其涉及一种数据库管理系统

技术介绍
MySQL是一种关系型数据库管理系统,InnoDB是MySQL的数据库引擎之一。在InnoDB引擎中,数据页以B+树(B+Tree)进行组织管理,通过指针确定数据页的逻辑顺序。B+树是一种树形数据结构数据页按照物理顺序构成的数据空间称为表空间。同一个数据页在表空间中的物理顺序与在B+树中的逻辑顺序无关。InnoDB引擎的表空间碎片(以下简称:表空间碎片)是指随着InnoDB引擎不断地运行,在表空间中产生的无法被利用的空闲空间。由于InnoDB引擎对表空间碎片的管理有不足之处,并不能高效地利用这些碎片空间,导致表空间碎片逐渐增多,磁盘空间浪费的现象逐渐加重。目前已有的表空间碎片回收技术一般需要构建新的表,将原始表中的数据插入新表中,导致占用大量的磁盘空间,对磁盘空间的压力较大。
技术实现思路
第一方面,本申请实施例提出一种表空间碎片回收方法,包括:将数据页中的数据按照物理顺序向前迁移,以在表空间的末尾构造出空闲数据页;所述表空间为多个数据页按照所述物理顺序构成的数据空间;释放所述表空间末尾的空闲数据页。本申请实施例首先将数据页中的数据按照物理顺序向前迁移,从而在表空间的末尾构造出空闲数据页,之后释放这些空闲数据页。由于本申请实施例在表空间碎片回收过程中不会创建新表,占用的总磁盘空间不会增加,因此不会对磁盘空间带来新的压力。在一种实施方式中,所述将数据页中的数据按照物理顺序向前迁移之前,还包括:合并不同数据页中的空间碎片,以在树形数据结构中构造出空闲数据页;所述树形数据结构为多个数据页按照逻辑顺序构成的数据空间;释放树形数据结构中的所述空闲数据页。在上述实施例中,在数据迁移之前合并数据页中的空间碎片,能够减少页内碎片空间,同时释放空闲的数据页,供数据迁移使用。在一种实施方式中,所述合并不同数据页中的空间碎片,包括:将数据页中的数据按照所述逻辑顺序向前迁移。由于数据页在树形数据结构中是以逻辑顺序组织管理的,因此,本申请实施例可以在合并数据页中的空间碎片时按照逻辑顺序将数据向前迁移,从而减少页内碎片空间。在一种实施方式中,所述将数据页中的数据按照物理顺序向前迁移,包括:将所述表空间中末尾位置的数据页设置为当前数据页,以将所述不同数据页中的空间碎片集中到所述逻辑顺序的末尾;在所述当前数据页中存在数据的情况下,查找所述表空间中的第一个空闲数据页,在所述第一个空闲数据页位于所述当前数据页之前的情况下,将所述当前数据页中的数据迁移至所述表空间中的第一个空闲数据页;将所述当前数据页的前一个数据页设置为新的当前数据页,返回执行所述在所述当前数据页中存在数据页的情况下,查找所述表空间中的第一个空闲数据页的步骤。本申请实施例采用遍历的方式,从后往前将数据页中的数据迁移至前面的空闲数据页中,从而在表空间的末尾构建空闲数据页,以便从末尾释放空闲数据页,因此避免了构建新的表,避免对磁盘空间造成额外的压力。在一种实施方式中,所述释放所述表空间末尾的空闲数据页,包括:在所述表空间末尾连续的空闲数据页构成一个空闲的数据区域的情况下,对所述表空间添加互斥锁;释放所述空闲的数据区域,移除所述互斥锁。在释放空闲数据页,本申请实施例以数据区域为单位进行释放,并且在释放的过程中使用互斥锁,避免了释放空间过程中对数据文件的损坏。第二方面,本申请实施例提出一种表空间碎片回收装置,包括:数据迁移模块,将数据页中的数据按照物理顺序向前迁移,以在表空间的末尾构造出空闲数据页;所述表空间为多个数据页按照所述物理顺序构成的数据空间;空间回收模块,用于释放所述表空间末尾的空闲数据页。在一种实施方式中,还包括:碎片整理模块,用于合并不同数据页中的空间碎片,以在树形数据结构中构造出空闲数据页;所述树形数据结构为多个数据页按照逻辑顺序构成的数据空间;释放树形数据结构中的所述空闲数据页。在一种实施方式中,所述碎片整理模块,用于将数据页中的数据按照所述逻辑顺序向前迁移,以使所述不同数据页中的空间碎片集中到所述逻辑顺序的末尾。在一种实施方式中,所述数据迁移模块,包括:设置子模块,用于将所述表空间中末尾位置的数据页设置为当前数据页;迁移子模块,用于在所述当前数据页中存在数据的情况下,查找所述表空间中的第一个空闲数据页,在所述第一个空闲数据页位于所述当前数据页之前的情况下,将所述当前数据页中的数据迁移至所述表空间中的第一个空闲数据页;重设置子模块,用于将所述当前数据页的前一个数据页设置为新的当前数据页,并指示所述迁移子模块针对所述新的当前数据页执行数据迁移。在一种实施方式中,所述碎片整理模块用于,在所述表空间末尾连续的空闲数据页构成一个空闲的数据区域的情况下,对所述表空间添加互斥锁;释放所述空闲的数据区域,移除所述互斥锁。第三方面,本申请实施例提出一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面中任一项所述的方法。第四方面,本申请实施例提出一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面中任一项所述的方法。上述申请中的一个实施例具有如下优点或有益效果:本申请实施例首先将数据页中的数据按照物理顺序向前迁移,从而在表空间的末尾构造出空闲数据页,之后释放这些空闲数据页。由于本申请实施例在表空间碎片回收过程中不会创建新表,占用的总磁盘空间不会增加,因此不会对磁盘空间带来新的压力。上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。附图说明附图用于更好地理解本方案,不构成对本申请的限定。其中:图1为根据本申请实施例的一种表空间碎片回收方法实现流程图一;图2为根据本申请实施例的一种表空间碎片回收方法实现流程图二;图3为根据本申请实施例的一种表空间碎片回收方法中,将数据页中的数据按照物理顺序向前迁移的实现流程图;图4为根据本申请实施例的一种表空间碎片回收方法中,释放表空间末尾的空闲数据页的实现流程图;图5A为应用于本申请实施例的一个数据页布局结构示意图;图5B为数据页逻辑顺序与数据迁移顺序示意图;图5C为经过碎片整理后的数据页布局结构示意图;图5D为数据迁移的示意图;图5E为数据迁移后的数据页布局示意图;图5F为数据迁移后的空闲数据页示意图;图5G为空间回收后的表空间布局示意图;图6为根据本申请实施例的一种表空间碎片回收方法实现流程图三;图7为根据本申请实施例的一种表空间碎本文档来自技高网...

【技术保护点】
1.一种表空间碎片回收方法,其特征在于,包括:/n将数据页中的数据按照物理顺序向前迁移,以在表空间的末尾构造出空闲数据页;所述表空间为多个数据页按照所述物理顺序构成的数据空间;/n释放所述表空间末尾的空闲数据页。/n

【技术特征摘要】
1.一种表空间碎片回收方法,其特征在于,包括:
将数据页中的数据按照物理顺序向前迁移,以在表空间的末尾构造出空闲数据页;所述表空间为多个数据页按照所述物理顺序构成的数据空间;
释放所述表空间末尾的空闲数据页。


2.根据权利要求1所述的方法,其特征在于,所述将数据页中的数据按照物理顺序向前迁移之前,还包括:
合并不同数据页中的空间碎片,以在树形数据结构中构造出空闲数据页;所述树形数据结构为多个数据页按照逻辑顺序构成的数据空间;
释放树形数据结构中的所述空闲数据页。


3.根据权利要求2所述的方法,其特征在于,所述合并不同数据页中的空间碎片,包括:
将数据页中的数据按照所述逻辑顺序向前迁移,以使所述不同数据页中的空间碎片集中到所述逻辑顺序的末尾。


4.根据权利要求1至3任一所述的方法,其特征在于,所述将数据页中的数据按照物理顺序向前迁移,包括:
将所述表空间中末尾位置的数据页设置为当前数据页;
在所述当前数据页中存在数据的情况下,查找所述表空间中的第一个空闲数据页,在所述第一个空闲数据页位于所述当前数据页之前的情况下,将所述当前数据页中的数据迁移至所述表空间中的第一个空闲数据页;
将所述当前数据页的前一个数据页设置为新的当前数据页,返回执行所述在所述当前数据页中存在数据页的情况下,查找所述表空间中的第一个空闲数据页的步骤。


5.根据权利要求1至3任一所述的方法,其特征在于,所述释放所述表空间末尾的空闲数据页,包括:
在所述表空间末尾连续的空闲数据页构成一个空闲的数据区域的情况下,对所述表空间添加互斥锁;
释放所述空闲的数据区域,移除所述互斥锁。


6.一种表空间碎片回收装置,其特征在于,包括:
数据迁移模块,将数据页中的数据按照物理顺序向前迁移,以在表空间的末尾构造出空闲数据页;所述表空间为多个数据页按照所述物理顺序构...

【专利技术属性】
技术研发人员:刘昭毅陈辉秦亚杰余杰汪国辉
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

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

1