7.6.5 设置 MyISAMtable 维护计划
定期执行 table 检查而不是 await 问题发生是一个好主意。检查和修复MyISAM
table 的一种方法是使用CHECK TABLE和REPAIR TABLE语句。参见第 13.7.2 节“table 维护声明”。
检查 table 的另一种方法是使用myisamchk。为了维护目的,您可以使用myisamchk -s。 -s
选项(--silent的缩写)使myisamchk在静默模式下运行,仅在发生错误时打印消息。
启用自动MyISAM
table 检查也是一个好主意。例如,每当计算机在更新过程中完成重新启动时,通常需要检查每个可能已经受影响的 table,然后再使用该 table。 (这些是“预期的崩溃 table.”)要使服务器自动检查MyISAM
table,请使用myisam_recover_options系统变量集启动它。参见第 5.1.7 节“服务器系统变量”。
您还应该在正常系统运行期间定期检查 table。例如,您可以每周一次运行 cron 作业以检查重要 table,并在crontab
文件中使用以下行:
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
这将打印出有关崩溃 table 的信息,以便您可以根据需要检查和修复它们。
首先,每晚对最近 24 小时内已更新的所有 table 执行myisamchk -s。如您所见,问题很少发生,您可以将检查频率推迟到大约每周一次。
通常,MySQLtable 几乎不需要维护。如果要对具有动态大小的行的MyISAM
table(具有VARCHAR,BLOB或TEXT列的 table)执行许多更新,或者具有删除了许多行的 table,则可能需要不时对 table 进行碎片整理/回收。您可以通过在相关 table 上使用OPTIMIZE TABLE来完成此操作。或者,如果可以暂时停止mysqld服务器,则将位置更改为数据目录,然后在服务器停止时使用此命令:
shell> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI