当前位置: 代码网 > it编程>数据库>Mysql > Mysql的Optimize table命令使用及说明

Mysql的Optimize table命令使用及说明

2026年04月24日 Mysql 我要评论
什么是optimizetable在mysql中,optimizetable命令用来重新整理(innodb & myisam)表格并优化空间利用。优化后的表更容易被访问,节省了磁盘空间,同时可以

什么是optimizetable

在mysql中,optimizetable命令用来重新整理(innodb & myisam)表格并优化空间利用。

优化后的表更容易被访问,节省了磁盘空间,同时可以加速查询,以达到更好的性能。

手册中的相关描述

optimize [local | no_write_to_binlog] table tbl_name [, tbl_name] …
  • 如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有varchar, blob或text列的表)进行了很多更改,则应使用optimize table。
  • 被删除的记录被保持在链接清单中,后续的insert操作会重新使用旧的记录位置。
  • 您可以使用optimize table来重新利用未使用的空间,并整理数据文件的碎片。
  • 在多数的设置中,您根本不需要运行optimize table。
  • 即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。
  • optimize table只对myisam, bdb和innodb表起作用。
  • 注意,在optimize table运行过程中,mysql会锁定表。

换句话说:

mysql数据库的表格在不停的操作时间内产生的page分布是不均匀的,这就导致有的页变满就不能继续插入了,导致了表的碎片化以及空间的浪费。

在进行大量数据的插入和删除时,会进一步加剧这种现象,使表格的性能下降。

通俗理解

当你删除数据时,mysql并不会回收被已删除数据的占据的存储空间以及索引位。而是空在那里,等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。

所以对于写比较频烦的表,要定期进行optimize,一个月一次,看实际情况而定了。

这时,就需要使用optimizetable重新压缩表格来回收空间和达到优化性能。

使用

mysql里输入以下命令:

optimize table table_name;

优化多个表:

optimize table [table1],[table2],......[tablen]; 

注意点

① 优化表格之前,最好备份一下表格的数据。如果数据非常庞大,优化时间可能需要很长时间。

② 在optimize table运行过程中,mysql会锁定表。如果涉及海量的数据表,应该考虑使用一些运维手段避免现网的服务受到影响。

③ 使用alter table table_name engine=innodb 命令也可以同样达到释放空洞的效果。这是由于在转换数据引擎(即便没有真正转换)的时候,mysql也会将表中的数据读取出来,再重新写入,在这个过程中,空洞自然就没有了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com