本节介绍的选项可用于由 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_name
d: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
类型 布尔值 默认值 假
如果表被锁定,则等待表解锁后再继续,而不是终止并报错。如果您在禁用外部锁定的情况下运行 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
语句。这些语句由服务器执行,服务器知道要使用的正确全文参数值。