Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

9.6.5 设置 MyISAM 表维护计划

定期检查表格,而不是等待问题出现。检查和修复 MyISAM 表的一种方法是使用 CHECK TABLEREPAIR TABLE 语句。见 第 15.7.3 节,“表维护语句”

另一种检查表的方法是使用 myisamchk。对于维护目的,您可以使用 myisamchk -s。该 -s 选项(short for --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 表格需要很少的维护。如果您对 MyISAM 表进行了许多更新,特别是具有动态大小行的表格(具有 VARCHARBLOBTEXT 列)或具有许多已删除行的表格,您可能需要从时间到时间地碎片整理/回收表格空间。您可以使用 OPTIMIZE TABLE 在相关表格上执行此操作。或者,如果您可以停止 mysqld 服务器一段时间,切换到数据目录并使用以下命令:

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