最近,当您学习如何优化mysql数据库时,您发现在删除库中的大量数据后,数据库文件的大小并没有减少。 这是因为删除数据后剩下数据的碎片。 在中,如何优化数据库需要使用optimize来优化表,从而减少空间并提高I/O性能。
命令
优化表表名
注意: InnoDB、MyISAM和BDB的optimize命令支持mysql存储引擎。
以下是从网上摘录的:
优化表通过创建原始表的临时副本来工作
优化表语法
optimize [ local|no _ write _ to _ binlog ] table TBL _ name [,tbl_name] .
如果删除了大部分表,或者对包含可变长度行(包括VARCHAR、BLOB或TEXT列)的表进行了许多更改,则必须使用优化表。 删除的记录将保留在链接列表中,并在随后的INSERT操作中重用旧记录的位置。 使用OPTIMIZE TABLE,您可以回收未使用的空间,并组织数据文件的碎片。
大多数设置不需要运行优化表。 大幅更新可变长度的进度并不需要频繁执行。 可以每周一次或每月一次,只对特定的表运行。
OPTIMIZE TABLE仅适用于MyISAM、BDB和InnoDB表。
对于MyISAM表,优化表的工作方式如下:
1 .如果表已删除或分解,请修复表。
2 .索引页面未分类的,进行分类。
3 .如果表中的统计数据未更新(并且无法通过对索引进行分类进行修复)。
对于BDB表,优化表当前映射到分析表。 对于InnoDB表,优化表映射到alter表并重建表。 重建操作更新索引统计信息并释放集群索引中的未使用空间。
可以使用—skip-new或—safe-mode选项启动mysqld。 启动mysqld后,可以使优化表对其他表类型起作用。
请注意,在优化表运行期间,MySQL会锁定表。
除非使用任何NO_WRITE_TO_BINLOG关键字或其别名LOCAL,否则OPTIMIZE TABLE语句会写入二进制日志。 这将使MySQL服务器的OPTIMIZE TABLE命令充当复制主服务器,并在缺省情况下复制到复制服务器。