[发明专利]数据库表空间的在线重组方法、装置、设备和介质在审
申请号: | 202310249231.5 | 申请日: | 2023-03-10 |
公开(公告)号: | CN116226201A | 公开(公告)日: | 2023-06-06 |
发明(设计)人: | 孙迪;刘嘉健;梁昊然;何思阳 | 申请(专利权)人: | 中国工商银行股份有限公司 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455;G06F16/22;G06F16/23 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 赵婷 |
地址: | 100140 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 空间 在线 重组 方法 装置 设备 介质 | ||
本公开提供了一种数据库表空间的在线重组方法,涉及数据库、智能运维技术领域。该方法包括:建立与目标原表结构一致的目标新表;将目标原表中的存量活元组和增量数据复制到目标新表;在目标原表和目标新表中的增量数据的同步延时满足预定条件后,触发更名事务;向该更名事务分配与目标表名关联的排他咨询锁,其中,目标表名为目标原表更名前的表名;在更名事务获取到排他咨询锁后,利用排他咨询锁锁定具有目标表名的数据表,并执行更名事务,其中,在目标原表和目标新表增量数据完全同步后,进行表名变更;以及在更名事务执行完成后,释放排他咨询锁。本公开还提供了一种数据库表空间的在线重组装置、设备、存储介质和程序产品。
技术领域
本公开涉及智能运维技术领域,具体地涉及数据库技术领域,更具体地涉及一种数据库表空间的在线重组方法、装置、设备、介质和程序产品。
背景技术
应用用户通过用户指令对数据库(例如,PostgresSQL数据库)中的数据执行Delete、Update操作之后,在数据库中相应数据会被标记为删除,对任何事务均不可见,但并不会移除,这样会引起数据库表空间的碎片问题。这样导致的结果包括:数据表占用空间大于实际需要的空间,有可能一个数据表中的数据被分散地存在很多地方,导致访问性能下降。严重的情况下甚至会引起空间膨胀导致数据库接变为只读状态,无法对外提供服务。
相关技术中对数据库碎片问题的解决方案主要是:通过手工执行完整清理(Vacuum Full)释放磁盘空间,其中,完整清理往往需要停机操作,对要清理的表创建新的表文件,再将原表活元组复制到新表,最后删除旧文件,并重建索引、更新相关信息,最后清理、重组磁盘物理空间等。停机清理会导致应用侧无法访问(读/写)表,清理期间数据库无法对外服务;当系统表过大或碎片过多时,往往需要长时间停机,严重影响联机交易。
发明内容
鉴于上述问题,本公开提供了可以在数据库对外服务期间进行表空间碎片问题清理的数据库表空间的在线重组方法、装置、设备、介质和程序产品。
本公开实施例的第一方面,提供了一种数据库表空间的在线重组方法。所述方法包括:建立与目标原表结构一致的目标新表;将所述目标原表中的存量活元组和增量数据复制到所述目标新表;在所述目标原表和所述目标新表中的增量数据的同步延时满足预定条件后,触发用于更改所述目标原表和所述目标新表的表名的更名事务;向所述更名事务分配与目标表名关联的排他咨询锁,其中,所述目标表名为所述目标原表更名前的表名;在所述更名事务获取到所述排他咨询锁后,利用所述排他咨询锁锁定具有所述目标表名的数据表,并执行所述更名事务,包括:在所述目标原表被所述排他咨询锁锁定期间,先将所述目标原表中尚未复制到所述目标新表的增量数据同步到所述目标新表,然后修改所述目标原表的表名;接着将所述目标新表的表名修改为所述目标表名,其中,更名后的所述目标新表被所述排他咨询锁锁定;以及在所述更名事务执行完成后,释放所述排他咨询锁。
根据本公开的实施例,在所述向所述更名事务分配与目标表名关联的排他咨询锁之前,所述方法还包括:若存在基于所述目标表名进行数据表访问的且尚未执行的至少一个第一类事务时,每个所述第一类事务在获取到与所述目标表名关联的N个共享咨询锁其中之一后,执行所述第一类事务,其中N为大于或等于1的整数;所述第一类事务为包含DML操作的事务;以及每个所述第一类事务执行完成后释放所述共享咨询锁。
根据本公开的实施例,所述向所述更名事务分配与目标表名关联的排他咨询锁包括:获取对所述目标表名进行运算而得到信号量;所述更名事务基于所述目标表名访问所述信号量;以及基于所述更名事务对所述信号量的访问,向所述更名事务分配所述排他咨询锁。
根据本公开的实施例,在所述执行所述第一类事务之前,所述方法还包括:所述第一类事务基于所述目标表名访问所述信号量;以及基于所述第一类事务对所述信号量的访问,当所述N个共享咨询锁未被全部占用时,向所述第一类事务分配所述共享咨询锁。
根据本公开的实施例,所述获取对所述目标表名进行运算而得到信号量包括:对所述目标表名进行哈希运算,得到所述信号量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国工商银行股份有限公司,未经中国工商银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310249231.5/2.html,转载请声明来源钻瓜专利网。