(我正在使用MyISAM表引擎)
REPAIR TABLE修复表损坏问题,例如打开文件句柄计数,包含可变长度数据的行的分辨率等等。 OPTIMIZE TABLE只是复制表格以删除未使用的空间。 如果表是MyISAM,则为了查询优化器的缘故,也执行ANALYZE TABLE来更新索引统计信息。 如果表是InnoDB,那么ANALYZE TABLE被忽略。 你可以让mysqld自动检查和修复所有的MyISAM表。
实际上,本书的MySQL 5.0authentication学习指南 ,第30.5节,第444445页指出:
可以指示MySQL服务器自动检查和修复MyISAM表。 启用自动修复function后,服务器会在每次打开MyISAM表时检查它是否在上次使用时正确closures,并且未标记为需要修复。 如果表格不正确,服务器会修复它。
要启用自动MyISAM表维护,请使用–myisam -recovery选项启动服务器。如果逗号分隔的列表中包含以下一个或多个值,则该选项值可以包含:
- 默认为默认检查。
- BACKUP指示服务器对任何必须更改的表进行备份。
- FORCE导致表恢复被执行,即使它会导致丢失多行数据。
- QUICK执行快速恢复:跳过由删除或更新导致的没有漏洞的表。
例如,要告诉服务器强制执行发现有问题的MyISAM表的强制恢复,但要对其发生更改的表进行备份,则可以将以下行放在选项文件中:
[mysqld] myisam-recover = FORCE,BACKUP
你也可以创build一个名为/root/StartUp.sql的文件,并把你想要的REPAIR TABLE命令放在里面。 然后将init-file=/root/StartUp.sql到/etc/my.cnf然后重新启动mysql来触发init脚本。