本节中描述的选项可用于由 myisamchk 执行的任何类型的表维护操作。本节后面的章节描述了仅与特定操作(如表检查或修复)相关的选项。
--help,-?命令行格式 --help显示帮助消息并退出。选项按操作类型分组。
--HELP,-H命令行格式 --HELP显示帮助消息并退出。选项以单个列表形式呈现。
--debug=,debug_options-#debug_options命令行格式 --debug[=debug_options]类型 字符串 默认值 d:t:o,/tmp/myisamchk.trace写入调试日志。典型的
debug_options字符串是d:t:o,。默认值为file_named:t:o,/tmp/myisamchk.trace。仅当使用
WITH_DEBUG构建 MySQL 时,此选项才可用。Oracle 提供的 MySQL 发行版二进制文件未使用此选项构建。--defaults-extra-file=file_name命令行格式 --defaults-extra-file=file_name类型 文件名 在全局选项文件之后但(在 Unix 上)在用户选项文件之前读取此选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name不是绝对路径名,则相对于当前目录解释它。有关此选项和其他选项文件选项的其他信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
命令行格式 --defaults-file=file_name类型 文件名 仅使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name不是绝对路径名,则相对于当前目录解释它。有关此选项和其他选项文件选项的其他信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
命令行格式 --defaults-group-suffix=str类型 字符串 不仅读取通常的选项组,还读取具有通常名称和后缀
str的组。例如,myisamchk 通常读取[myisamchk]组。如果此选项作为--defaults-group-suffix=_other给出,则 myisamchk 还读取[myisamchk_other]组。有关此选项和其他选项文件选项的其他信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
命令行格式 --no-defaults不要读取任何选项文件。如果由于从选项文件读取未知选项而导致程序启动失败,则可以使用
--no-defaults阻止读取它们。例外情况是,如果
.mylogin.cnf文件存在,则在所有情况下都会读取它。即使使用--no-defaults,这也允许以比在命令行上更安全的方式指定密码。要创建.mylogin.cnf,请使用 mysql_config_editor 实用程序。请参阅 第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项和其他选项文件选项的其他信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
命令行格式 --print-defaults打印程序名称及其从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
--silent,-s命令行格式 --silent静默模式。仅在发生错误时写入输出。您可以使用两次
-s(-ss)使 myisamchk 非常安静。--verbose,-v命令行格式 --verbose详细模式。打印有关程序功能的更多信息。这可以与
-d和-e一起使用。多次使用-v(-vv、-vvv)以获得更多输出。--version,-V命令行格式 --version显示版本信息并退出。
--wait,-w命令行格式 --wait类型 布尔值 默认值 false如果表被锁定,则不是终止并显示错误,而是在继续之前等待表解锁。如果您运行的是禁用了外部锁定的 mysqld,则该表只能由另一个 myisamchk 命令锁定。
您还可以使用 -- 语法设置以下变量var_name=value
| 变量 | 默认值 |
|---|---|
decode_bits |
9 |
ft_max_word_len |
取决于版本 |
ft_min_word_len |
4 |
ft_stopword_file |
内置列表 |
key_buffer_size |
523264 |
myisam_block_size |
1024 |
myisam_sort_key_blocks |
16 |
read_buffer_size |
262136 |
sort_buffer_size |
2097144 |
sort_key_blocks |
16 |
stats_method |
nulls_unequal |
write_buffer_size |
262136 |
可以使用 myisamchk --help 查看可能的 myisamchk 变量及其默认值。
当使用排序键修复键时(这是使用 --recover 时的常见情况),将使用 myisam_sort_buffer_size。 sort_buffer_size 是 myisam_sort_buffer_size 的已弃用同义词。
当您使用 --extend-check 检查表时,或者通过将键逐行插入表中来修复键时(如执行正常插入时),将使用 key_buffer_size。在以下情况下,将使用通过键缓冲区进行修复:
您使用
--safe-recover。对键进行排序所需的临时文件将比直接创建键文件时大两倍以上。当
CHAR、VARCHAR或TEXT列具有较大的键值时,通常会出现这种情况,因为排序操作需要在进行过程中存储完整的键值。如果您有大量的临时空间,并且可以强制 myisamchk 通过排序进行修复,则可以使用--sort-recover选项。
通过键缓冲区进行修复比使用排序占用的磁盘空间少得多,但速度也要慢得多。
如果您希望更快地修复,请将 key_buffer_size 和 myisam_sort_buffer_size 变量设置为可用内存的 25% 左右。您可以将这两个变量都设置为较大的值,因为一次只使用其中一个。
myisam_block_size 是用于索引块的大小。
当指定 --analyze 选项时,stats_method 会影响如何处理索引统计信息收集的 NULL 值。它的作用类似于 myisam_stats_method 系统变量。有关更多信息,请参阅 第 7.1.8 节“服务器系统变量” 和 第 10.3.8 节“InnoDB 和 MyISAM 索引统计信息收集” 中对 myisam_stats_method 的说明。
ft_min_word_len 和 ft_max_word_len 指示 MyISAM 表上 FULLTEXT 索引的最小和最大单词长度。 ft_stopword_file 命名停用词文件。在以下情况下需要设置这些参数。
如果您使用 myisamchk 执行修改表索引的操作(例如修复或分析),则除非另行指定,否则将使用默认全文参数值(用于最小和最大单词长度)和停用词文件重建 FULLTEXT 索引。这可能会导致查询失败。
出现此问题的原因是,这些参数只有服务器知道。它们不存储在 MyISAM 索引文件中。为避免出现此问题,如果您在服务器中修改了最小或最大单词长度或停用词文件,请为 myisamchk 指定与 mysqld 相同的 ft_min_word_len、ft_max_word_len 和 ft_stopword_file 值。例如,如果您已将最小单词长度设置为 3,则可以使用 myisamchk 修复表,如下所示:
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 TABLE、ANALYZE TABLE、OPTIMIZE TABLE 或 ALTER TABLE。这些语句由服务器执行,服务器知道要使用的正确全文参数值。