MySQL 8.4 发行说明
定期执行表检查是一个好主意,而不是等到出现问题才检查。检查和修复 MyISAM
表的一种方法是使用 CHECK TABLE
和 REPAIR TABLE
语句。请参见 第 15.7.3 节,“表维护语句”.
检查表另一种方法是使用 myisamchk。为了维护目的,可以使用 myisamchk -s。选项 -s
(代表 --silent
)将使 myisamchk 以静默模式运行,仅在发生错误时打印消息。
启用自动 MyISAM
表检查也是一个好主意。例如,每当机器在更新过程中重启时,通常需要检查每个可能受影响的表,然后再进一步使用它。(这些是 “预期崩溃的表。”) 要使服务器自动检查 MyISAM
表,请使用 myisam_recover_options
系统变量启动它。请参见 第 7.1.8 节,“服务器系统变量”.
还应在正常系统运行期间定期检查表。例如,可以运行一个 cron 作业,使用 crontab
文件中的类似以下内容的行,每周检查一次重要表
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
这会打印有关崩溃表的的信息,以便您可以根据需要检查和修复它们。
首先,每天晚上对所有在过去 24 小时内更新过的表执行 myisamchk -s。当您发现问题很少发生时,可以将检查频率降低到每周一次或更少。
通常,MySQL 表需要很少的维护。如果对具有动态大小行的 MyISAM
表(具有 VARCHAR
、BLOB
或 TEXT
列的表)执行大量更新,或者表中有许多已删除的行,您可能需要定期对表进行碎片整理/回收空间。可以使用 OPTIMIZE TABLE
对相关表进行操作。或者,如果可以停止 mysqld 服务器一段时间,更改到数据目录的位置,并在服务器停止时使用以下命令
$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI