verysu 设计模式 设计模式 响应式编程 百度开发平台 codeforces leetcode usfca

导航

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会锁定表,尽量在不用测试数据库的时候偶操作
 
锁表处理
 
对照正在处理的(processlist)sleep任务和事务表来判断是否锁定了

posted on 2022-04-11 14:27  泳之  阅读(63)  评论(0编辑  收藏  举报

我是谁? 回答错误