### 7.6.5 设置 MyISAM 表维护计划 [](<>)[](<>) 定期执行表检查而不是等待问题发生是个好主意。检查和维修的一种方法`MyISAM`表与[`检查表`](check-table.html)和[`维修台`](repair-table.html)陈述。看[第 13.7.3 节,“表维护语句”](table-maintenance-statements.html). 检查表的另一种方法是使用[**迈萨姆奇克**](myisamchk.html).出于维护目的,您可以使用[**myisamchk -s**](myisamchk.html).这`-s`选项(简称[`- 无声`](myisamchk-general-options.html#option_myisamchk_silent)) 原因[**迈萨姆奇克**](myisamchk.html)以静默模式运行,仅在发生错误时打印消息。 [](<>) 启用自动也是一个好主意`MyISAM`表检查。例如,每当机器在更新过程中重新启动时,您通常需要在进一步使用之前检查每个可能受到影响的表。(这些是“预期的崩溃表”。)使服务器检查`MyISAM`表自动启动它[`myisam_recover_options`](server-system-variables.html#sysvar_myisam_recover_options)系统变量集。看[第 5.1.8 节,“服务器系统变量”](server-system-variables.html). 您还应该在系统正常运行期间定期检查您的表格。例如,您可以运行**cron**每周检查一次重要表的工作,在`crontab`文件: ``` 35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI ``` 这会打印出有关崩溃表的信息,以便您可以根据需要检查和修复它们。 首先,执行[**myisamchk -s**](myisamchk.html)每晚在过去 24 小时内更新的所有表格上。当您看到问题很少发生时,您可以将检查频率降低到每周一次左右。 [](<>) 通常,MySQL 表几乎不需要维护。如果您正在执行许多更新`MyISAM`具有动态大小行的表(具有[`VARCHAR`](char.html),[`斑点`](blob.html), 要么[`文本`](blob.html)列)或具有许多已删除行的表,您可能希望不时对表进行碎片整理/回收空间。您可以使用[`优化表`](optimize-table.html)在有问题的桌子上。或者,如果您可以停止[**mysqld**](mysqld.html)服务器一段时间,将位置更改为数据目录并在服务器停止时使用此命令: ``` $> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI ```