加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

详解mysql5.7特性--在线回收UNDO表空间

发布时间:2022-10-11 16:30:22 所属栏目:MsSql教程 来源:未知
导读: 概述
undo log回滚日志是保存在共享表空间ibdata1文件里,随着业务的不停运转,ibdata1文件会越来越大,想要回收(收缩空间大小)极其困难和复杂, 必须先mysqldump -A全库的导出,然后删掉

概述

undo log回滚日志是保存在共享表空间ibdata1文件里,随着业务的不停运转,ibdata1文件会越来越大,想要回收(收缩空间大小)极其困难和复杂, 必须先mysqldump -A全库的导出,然后删掉data目录,然后重新初始化安装,最后再把全库的SQL文件导入,采用这种方法进行ibdata1文件的回收。那么有没有什么更好的办法呢?

在线回收UNDO表空间

在MySQL5.6里,可以把undo log回滚日志分离出去,到一个单独的表空间里,但缺点就是不能进行回收(收缩)空间大小。直到MySQL5.7 ,才支持在线收缩。

验证过程

对一张100万的sbtest表,进行全表更新4次,如:

可以发现undo log空间急速增长mssql数据库空间,如:

然后用sysbench做压力测试,让数据库运行起来,观察错误日志,就会自动把undo log空间给回收(收缩),如:

再通过观察物理文件,已经被回收了,默认10M大小。

总结

这个功能出来以后,整体降低了磁盘空间使用率,并且加快了xtrabackup热备份的速度。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!