原文:http://bbs.landingbj.com/t-0-242112-1.html
一 定期分析表
ANALYZE TABLE
语法:
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。这对于 MyISAM和InnoDB 表有作用。对于MyISAM表,本语句与使用 myisamchk -a 相当。
CHECK TABLE
语法:
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM 表,关键字统计数据被更新。CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。
CHECKSUM TABLE
语法:
CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]
报告一个表校验和。
二 使用OPTIMIZE TABLE
OPTIMIZE TABLE
语法:
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
OPTIMIZE TABLE
只对MyISAM和InnoDB表起作用。如果已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有
VARCHAR, BLOB 或 TEXT 列的表)进行了很多更改,则应使用 OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的
INSERT 操作会重新使用旧的记录位置。可以使用 OPTIMIZE TABLE 来重新利用未使用的空间,并整理数据文件的碎片。
上 述两种方法都是使用MySQL的内建命令,简单实用,可以胜任基础的优化工作。第一个方法是分析表,通过得到的信息分析表是否有问题,第二个方法是优化 表,OPTIMIZE TABLE的功能和Oracle的SHRINK SPACE有些类似之处,简单粗暴。但Oracle中不能随便使用 SHRINK SPACE。