4.6.3.1 myisamchk 一般选项

本节中描述的选项可用于myisamchk执行的任何类型的 table 维护操作。此后的各节介绍仅与特定操作有关的选项,例如 table 检查或修复。

显示帮助消息并退出。选项按操作类型分组。

显示帮助消息并退出。选项显示在单个列 table 中。

编写调试日志。典型的* debug_options *字符串是d:t:o,file_name。默认值为d:t:o,/tmp/myisamchk.trace

仅当使用WITH_DEBUG构建 MySQL 时,此选项才可用。使用此选项不是构建 Oracle 提供的 MySQL 发行版二进制文件。

在全局选项文件之后但在用户选项文件之前(在 Unix 上)读取此选项文件。如果该文件不存在或无法访问,则发生错误。 * file_name *如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

仅使用给定的选项文件。如果该文件不存在或无法访问,则发生错误。 * file_name *如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

不仅阅读常规选项组,还阅读具有常规名称和后缀* str *的组。例如,myisamchk通常读取[myisamchk]组。如果提供了--defaults-group-suffix=_other选项,则myisamchk也会读取[myisamchk_other]组。

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,则可以使用--no-defaults来防止读取它们。

exception 是在所有情况下都读取.mylogin.cnf文件(如果存在)。这样即使在使用--no-defaults的情况下,也可以通过比命令行更安全的方式指定密码。 (.mylogin.cnfmysql_config_editorUtil 创建。请参见第 4.6.6 节“ mysql_config_editor-MySQL 配置 Util”。)

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

打印程序名称及其从选项文件中获取的所有选项。

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

静音模式。仅在发生错误时才写输出。您可以使用-s两次(-ss)使myisamchk保持安静。

详细模式。打印有关程序功能的更多信息。可以与-d-e一起使用。多次使用-v(-vv-vvv)以获得更多输出。

显示版本信息并退出。

如果 table 已锁定,则不要终止于错误,而要等到 table 被解锁后再 continue。如果您在禁用外部锁定的情况下运行mysqld,则该 table 只能由另一个myisamchk命令锁定。

您还可以使用--var_name=value语法设置以下变量:

VariableDefault Value
decode_bits9
ft_max_word_lenversion-dependent
ft_min_word_len4
ft_stopword_filebuilt-in list
key_buffer_size523264
myisam_block_size1024
myisam_sort_key_blocks16
read_buffer_size262136
sort_buffer_size2097144
sort_key_blocks16
stats_methodnulls_unequal
write_buffer_size262136

可以使用myisamchk --help检查可能的myisamchk变量及其默认值:

当通过对键进行排序来修复键时使用myisam_sort_buffer_size,这是使用--recover时的正常情况。 sort_buffer_sizemyisam_sort_buffer_size的已弃用同义词。

当您使用--extend-check检查 table 或通过将键逐行插入 table 中来修复键时(例如进行普通插入时),将使用key_buffer_size。在以下情况下,将通过密钥缓冲区进行修复:

  • 您使用--safe-recover

  • 排序密钥所需的临时文件将比直接创建密钥文件时大两倍。当CHARVARCHARTEXT列具有较大的键值时,通常会发生这种情况,因为排序操作需要在执行过程中存储完整的键值。如果您有很多临时空间,并且可以通过排序强制myisamchk进行修复,则可以使用--sort-recover选项。

与使用排序相比,通过键缓冲区进行修复所需的磁盘空间要少得多,但速度也要慢得多。

如果您想更快地修复,请将key_buffer_sizemyisam_sort_buffer_size变量设置为可用内存的 25%左右。您可以将两个变量都设置为较大的值,因为一次只能使用其中一个。

myisam_block_size是用于索引块的大小。

stats_method影响在给定--analyze选项时如何处理NULL值以进行索引统计信息收集。它的作用类似于myisam_stats_method系统变量。有关更多信息,请参见第 5.1.7 节“服务器系统变量”第 8.3.7 节“ InnoDB 和 MyISAM 索引统计信息收集”中对myisam_stats_method的描述。

ft_min_word_lenft_max_word_lentable 示MyISAMtable 上FULLTEXT索引的最小和最大字长。 ft_stopword_file命名停用词文件。这些需要在以下情况下设置。

如果使用myisamchk执行修改 table 索引的操作(例如修复或分析),则除非另有指定,否则将使用最小和最大字长以及停用词文件的默认全文参数值重建FULLTEXT索引。这可能会导致查询失败。

发生问题是因为这些参数仅由服务器知道。它们没有存储在MyISAM索引文件中。为避免此问题,如果您已修改服务器中最小或最大字长或停用词文件,请将与mysqld相同的ft_min_word_lenft_max_word_lenft_stopword_file值指定为myisamchk。例如,如果将最小字长设置为 3,则可以使用myisamchk修复 table,如下所示:

shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI

为确保myisamchk和服务器对全文参数使用相同的值,可以将每个参数都放在选项文件的[mysqld][myisamchk]部分中:

[mysqld]
ft_min_word_len=3

[myisamchk]
ft_min_word_len=3

使用myisamchk的替代方法是使用REPAIR TABLEANALYZE TABLEOPTIMIZE TABLEALTER TABLE。这些语句由服务器执行,服务器知道要使用的适当的全文参数值。