mysql的表维护操作

optimize table table_name;

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

所以对于写比较频繁删除的表,要定期进行optimize,比如临时接受数据又删除数据的表。

如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用
OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新
利用未使用的空间,并整理数据文件的碎片。

在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次
即可,只对特定的表运行。

OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。

注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表

 

CHECK TABLE table_name:

CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计信息会被更新,CHECK TABLE也可以检查视图是否有错误,
比如在视图定义中被引用的表已不存在。

一些只对myisam表有作用(对innodb和视图无效)的选项介绍:
QUICK:不扫描行,不检查错误的链接。
FAST:只检查没有被正确关闭的表。
CHANGED:只检查自上次检查后被更改的表,和没有被正确关闭的表。
MEDIUM:扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。
EXTENDED:对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是花的时间较长,所以很少使用。

REPAIR TABLE:

用于修复被破坏的表

quick:repair只修复索引,等价于“myisamchk --recover --quick tablename”
extended:MySQL会一行一行地创建索引行,等价于”myisamchk --safe-recover tablename“
use_frm:如果.MYI索引文件缺失或标题被破坏,则使用此选项,用来自.frm文件重新创建.MYI文件。这种修复不能使用myisamchk来完成;在repair常规无法完成时,才会使用这个选项,如果表被压缩不能使用。

no_write_to_binlog:repair默认是写到二进制文件的,如果有主从模式的话,repair也会在从库执行;使用此选项将会禁止写入到二进制文件中。

 

posted @ 2017-07-06 16:27  malcome  阅读(36)  评论(0)    收藏  举报