按关键词阅读: 数据库 删除 InnoDB
结论
当你想收缩因为大量增删改查而导致表磁盘文件非常大时就可以执行alter table evt_sms engine=Innodb
命令来达到收缩表空间的目的 。
五、实践是检验认识是否具有真理性的唯一标准都应该知道实践是检验认识是否具有真理性的唯一标准
, 那么接下里就对本文提出的结论进行实际操作一下 。
- 先执行
ctrl + z
结束MySQL任务窗口
- 执行
ll -h
查看此时表evt_sms磁盘文件大小为108M
- 执行
fg
返回到MySQL任务窗口
- 执行命令
alter table evt_sms engine=Innodb
- 再执行
ctrl + z
, 执行ll -h
查看磁盘文件大小已经到了128k 。
上图即是咔咔操作的全过程 , 得到的结论就是执行命令
alter table ect_sms engine = Innodb
可以收缩由于大量增删改查的表引发的空洞问题 。 最终达到收缩表空间目的 。六、开发建议删除数据不要使用delete , 而是使用软删除 , 做一个标记删除即可 。
这样既不会出现空洞问题 , 也方便数据溯源 。
每张表必备三个字段create_time、update_time、delete_time 。
七、总结通过本期文章我们需要知道以下几点 。
- 通过大量增删改查的表会出现空洞
- 干掉空洞需要执行alter table evt_sms engine=Innodb来解决
- 使用delete删除数据只会做一个标记处理 , 并不会真正删除空间
- 本文所有的结论都基于innodb_file_per_table = on
坚持学习、坚持写作、坚持分享是咔咔从业以来所秉持的信念 。 愿文章在偌大的互联网上能给你带来一点帮助 , 我是咔咔 , 下期见 。
稿源:(原来是咔咔)
【傻大方】网址:http://www.shadafang.com/c/111395UW2021.html
标题:删除|什么?还在用delete删除数据《死磕MySQL系列 九》( 三 )