一种自适应删除数据库表物理文件的方法与流程

文档序号:37437742发布日期:2024-03-25 19:37阅读:9来源:国知局
本发明涉及数据库领域,尤其涉及一种自适应删除数据库表物理文件的方法。
背景技术
::1、在数据库系统中,当通过drop table或者truncate table来删除独立表空间的表时,对应的表文件会直接从磁盘中删除。尤其表文件非常大的情况下,删除过程会占用大量的io,造成磁盘io开销飙升,甚至有可能造成io阻塞,尤其是在数据库高负载、业务压力很大时,可能会导致长时间的业务无法访问数据库,甚至可能会导致数据库崩溃、宕机。为了避免数据库系统在删除大表或者数据库系统压力很大时删表可能会造成数据库系统不稳定以及可能导致数据库崩溃的情况,当前业内删除表的方法:要么直接删除表文件;要么将所有的表文件都延迟删除;要么将大表的删除单独进行处理,业内删大表的方法如下:第一种,删除表的操作由dba在业务低峰期进行手动删除。第二种,通过创建硬链接文件。在删除表之前,先创建表文件的硬链接,然后再登录数据库删除表,最后再删除物理文件。在真正删除物理文件时,还是同样会造成io冲击,采用的对策是使用truncate来对数据文件进行分批次删除。第三种,在清理大文件时,数据库会启动一个后台线程来异步清理数据文件。当开启这个功能时,先设置一系列的参数,执行drop table或者truncate table时,对应的数据文件会被重命名为临时文件,然后文件异步清理线程根据设置的参数情况进行异步、平缓地清理。2、以上三种方法是目前业内删除数据库独立表空间的大表的方法,这三种方法都有一定的弊端。第一种方法要删除的所有表都得在业务低峰期进行删除,这种方法不但会额外增加运维的负担,对业务也不友好,要删除的表只有在业务低峰期才能进行删除,不会进行立马删除,而且如果在业务低峰期之前,也就是在删除这些需要删除的表之前,如果创建大量表或者大表时,很有可能导致因为存储空间不够而创建失败,很有可能进一步影响业务。第二种方法,在删除表之前,需要人为判断要删除的表是否是大表,以及这个表是否会影响客户业务以及是否会影响数据库系统,如果是大表才会创建表文件的硬链接。这样做会给客户或者dba带来运维的难度,增加额外的负担。第三种方法,首先,使用该功能要设置的参数过多,不方便客户和dba操作;其次,不够灵活,不能根据业务的繁忙情况以及系统资源情况自适应地逐步删除表物理文件,只能通过手动设置一系列的参数来控制每次清理文件的大小以及清理的时间间隔。3、如申请公开号为cn107679171a的专利公开了一种数据库删除表优化算法,包括如下步骤:当需要删除表时,调用预设的删除表接口,删除表接口根据预设打开数据库,如果打开失败,执行失败操作,结束,如果打开成功,检测数据库表是否创建,在检测数据库表是否创建时,如果表存在,则执行删除表操作,如果表不存在,执行关闭数据库操作,结束。该发明能够根据预设信息,将删除表的操作标准化,流程化,形成通用性强的删除表标准化模块,提高算法的兼容性和可靠性,提高代码编写速度和效率。4、以上技术都存在本
背景技术
:提出的问题:在数据库高负载、业务压力很大时可能会造成数据库系统不稳定。5、公开于该
背景技术
:部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域普通技术人员所公知的现有技术。技术实现思路1、本发明所要解决的技术问题是克服现有技术的缺陷,提供一种自适应删除表物理文件的方法,旨在提高数据库系统响应,维持数据库系统稳定性,减少运维难度和负担,提升数据库使用体验。2、为解决上述技术问题,本发明提供如下技术方案:3、一种自适应删除表物理文件的方法,包括以下步骤:4、s1:判断当前i/o的忙闲程度;5、s2:根据当前i/o的忙闲程度为阈值参数赋值;6、s3:根据所述阈值参数判断待删除文件是否是大文件;7、s4:根据是否是大文件的判断结果对待删除文件执行删除操作:若待删除文件是大文件,则进行平滑删除;若待删除文件不是大文件,则进行直接删除。作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:所述判断当前i/o的忙闲程度的规则如下:8、若缓冲池中脏页的比例小于等于50%,innodb数据待读取次数等于0,则当前i/o没有压力;9、若缓冲池中脏页的比例大于50%,小于等于脏页比例的上限值,innodb数据待读取次等于0,则当前i/o压力小;10、若缓冲池中脏页的比例大于脏页比例的上限值,innodb数据待读取次等于0,则当前i/o压力大;11、若innodb数据待读取次数大于0,则当前i/o阻塞。12、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:若innodb数据待fsync操作次数、innodb数据待写入次数、innodb操作系统日志待fsync操作次数、innodb操作系统日志待写入次数中任意一项或多项大于0,则当前i/o阻塞。13、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:为阈值参数赋值的规则如下:14、若当前i/o没有压力,则阈值参数的取值范围为[16g,64g];15、若当前i/o压力小,则阈值参数的取值范围为[4g,16g];16、若当前i/o压力大,则阈值参数的取值范围为[512m,4g];17、若当前i/o阻塞,则阈值参数取值为0。18、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:判断待删除文件是否是大文件的方法为:若待删除文件的大小大于等于阈值参数,则待删除文件为大文件;若待删除文件的大小小于阈值参数,则待删除文件不是大文件。19、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:所述平滑删除的方法如下:将待删除文件的文件名添加到异步清理后台线程的隐藏目录中,并在添加成功后启动异步清理后台线程。20、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:所述异步清理后台线程在启动后对所述隐藏目录下的文件进行删除,方法如下:21、s100:读取隐藏目录下的一个文件;22、s200:判断当前i/o的忙闲程度;23、s300:根据当前i/o的忙闲程度为步长参数和间隔参数赋值;24、s400:对读取的文件进行删除操作;25、s500:重复s100~s400,直至隐藏目录下所有文件均被删除;26、s600:异步清理后台线程进入睡眠状态。27、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:所述步长参数和间隔参数的赋值规则如下:28、若当前i/o没有压力,则步长参数的取值范围为[4g,16g],间隔参数的取值范围为[0.5s,1s];29、若当前i/o压力小,则步长参数的取值范围为[1g,4g],间隔参数的取值范围为[1s,2s];30、若当前i/o压力大,则步长参数的取值范围为[128m,512m],间隔参数的取值范围为[2s,4s];31、若当前i/o阻塞,则将步长参数的值设为0,间隔参数的取值范围为[4s,8s]。32、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:异步清理后台线程对读取的文件进行删除操作的方法如下:若读取的文件大小小于等于步长参数,则直接删除读取的文件;若读取的文件大小大于步长参数,则分多次删除读取的文件,每次删除的大小等于步长参数,任意两次删除的时间间隔等于间隔参数。33、作为本发明所述自适应删除表物理文件的方法的一种优选方案,其中:若补偿参数的值为0,则进行等待后执行s200,所述等待的时长等于间隔参数。34、与现有技术相比,本发明所达到的有益效果如下:35、当数据库负载很高、压力很大时,表相关物理文件会进行延迟删除,不会进一步加大i/o的压力,防止长时间的删除操作导致业务无法访问数据库、数据库崩溃、宕机的情况;36、根据i/o负载情况自适应调整系统参数,且无需将删除表的操作集中在业务低峰期进行,使客户和dba操作简便、易于维护,能够提升数据库使用体验;37、异步清理的后台线程通过信号去唤醒,当隐藏目录下的所有文件都彻底从磁盘删除,然后该线程会再次进入睡眠,避免造成cpu的浪费。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1