MySQL删除数据后,没有释放磁盘空间

问题描述:

MySQL数据库中,做订单日志和权限日志得时候会记录很多信息,导致数据库的磁盘占用越来越多。而对于一些久远的日志数据其实可以清理调来释放磁盘使用空间得。但是清楚日志表数据后,磁盘空间并没有得到释放。

问题出现原因:

删除数据得sql语句如下DELETE FROM ueb_logistics_rule_logs WHERE type=0 LIMIT 100,但凡是这样delete语句带有where条件得,MySQL会将删除的数据做为删除标记,而不是真正做物理删除。当然也也不会释放调磁盘空间。直接delete from table_name 是直接做物理删除,也会释放掉磁盘占用空间。

解决方案:

1、数据量小得情况下可直接用delete from table_name来删除数据,此操作会释放磁盘空间。

2、在数据量庞大得情况下,直接delete from table_name可能会因为MySQL负载而导致崩溃,建议在访问量小得时间段做轮询删除,删除操作执行完成之后再执行如下语句:OPTIMIZE TABLE table_name,官方给出得解释为:优化表/碎片整理/释放表空间。执行此操作后会删除该表下得数据碎片,也就是被标记得已删除数据。这样就释放掉磁盘空间了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容