失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Mysql delete删除表数据之后 表空间没有释放的问题

Mysql delete删除表数据之后 表空间没有释放的问题

时间:2019-05-15 12:12:21

相关推荐

Mysql delete删除表数据之后 表空间没有释放的问题

事件起因:

今天运维人员找我,说我们的数据库磁盘空间满了。于是提供了一些删除表数据的sql给他,让他执行下。

执行之后,查询数据库,表数据是不在了,但是问题来了。

磁盘空间并没有释放,这是为啥咧????

于是乎,上网查找资料,功夫不负有心人,终于找到问题原因:

使用delete 加上where条件的删除都不是真删除,在删除数据的时候,mysql并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会彻底释放空间。

被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间。

解决方法:

执行完delete语句的时候,再执行下:OPTIMIZE TABLE XXXTable(自己的表名)

注意事项:

执行OPTIMIZE TABLE的时候,会导致锁表,而且没有必要每次delete之后都执行,一个月定时清理下即可。另外,OPTIMIZE 操作会导致锁表,建议在访问量小的时候执行!

自我总结

今天才碰到这样的问题,mysql的delete方法,之前一直以为是直接删除掉了,数据占用的表空间也自然会释放,但是今天才发现,delete语句后加where条件删除的数据会自动加个delete标识而不会真的删掉。学的太浅了,还需多多努力!

如果觉得《Mysql delete删除表数据之后 表空间没有释放的问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。