MySQL 8.4 Release Notes
9.6.5 设置 MyISAM 表维护计划
定期执行表检查是一个好主意,而不是等待问题出现。可以使用CHECK TABLE
和REPAIR 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 表需要很少的维护。如果您正在对具有动态大小行(含VARCHAR
、BLOB
或TEXT
列的)MyISAM 表进行大量更新,或者有许多删除行的表,您可能需要定期对表进行碎片整理/回收空间。您可以使用OPTIMIZE TABLE
语句来实现此操作。或者,如果您可以暂停mysqld服务器一段时间,切换到数据目录,然后在服务器停止时使用以下命令:
$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI