本文主要是介绍mysql碎片化释放,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
清空MySQL测试库慢查询slow.log
数据库数据碎片化处理
参考文档:
https://www.cnblogs.com/wajika/p/6484125.html
https://www.cnblogs.com/xdot/p/5087865.html
问题
使用delete删除的时候,mysql并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会彻底释放空间。被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。即删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间。
解决办法
官方推荐使用 OPTIMIZE TABLE命令来优化表,该命令会重新利用未使用的空间,并整理数据文件的碎片。
Mysql可以使用如下命令查看
show table status [like table_name]
select table_schema, table_name, data_free, engine
from information_schema.tables where table_schema not in ('information_schema', 'mysql') and data_free > 0
如果data_free为0 ,不需要处理,否则运行 optimize table [table_name]
注意:在OPTIMIZE TABLE运行过程中,MySQL会锁定表,尽量在不用测试数据库的时候偶操作
锁表处理
https://blog.csdn.net/zhaofuqiangmycomm/article/details/82150815
对照正在处理的(processlist)sleep任务和事务表来判断是否锁定了
这篇关于mysql碎片化释放的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!