Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Setting Up a MyISAM Table Maintenance Schedule

9.6.5 设置 MyISAM 表维护计划

定期执行表检查是一个好主意,而不是等待问题出现。可以使用CHECK TABLEREPAIR TABLE语句来检查和修复MyISAM表。请参阅第15.7.3节,“表维护语句”

另一种检查表的方法是使用myisamchk。为了维护目的,可以使用myisamchk -s-s选项(简写为--silent)使myisamchk在静默模式下运行,只在出现错误时打印消息。

启用自动MyISAM表检查也是一个不错的想法。例如,在机器在更新过程中突然重启时,你通常需要检查可能受影响的每个表,以便继续使用它们。(这些是“期望崩溃表”)要使服务器自动检查MyISAM表,启动它时将myisam_recover_options系统变量设置。见第7.1.8节,“服务器系统变量”

您也应该在正常系统操作中定期检查表。例如,您可以使用以下命令在一个crontab文件中运行一次周计划的任务:

35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI

这将打印出崩溃表的信息,以便您可以检查和修复它们,如有必要。

首先,执行myisamchk -s每天晚上对所有在过去24小时内更新的表。随着您看到问题很少发生,您可以将检查频率降低到每周一次或更少。

通常,MySQL 表需要很少的维护。如果您正在对具有动态大小行(含VARCHARBLOBTEXT列的)MyISAM 表进行大量更新,或者有许多删除行的表,您可能需要定期对表进行碎片整理/回收空间。您可以使用OPTIMIZE TABLE语句来实现此操作。或者,如果您可以暂停mysqld服务器一段时间,切换到数据目录,然后在服务器停止时使用以下命令:

$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI