4.6.3.1 myisamchk 一般选项
本节中描述的选项可用于myisamchk执行的任何类型的 table 维护操作。此后的各节介绍仅与特定操作有关的选项,例如 table 检查或修复。
- --help,
-?
显示帮助消息并退出。选项按操作类型分组。
- --HELP,
-H
显示帮助消息并退出。选项显示在单个列 table 中。
- --debug=debug_options,
-# debug_options
编写调试日志。典型的* 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.cnf
由mysql_config_editorUtil 创建。请参见第 4.6.6 节“ mysql_config_editor-MySQL 配置 Util”。)
有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”。
打印程序名称及其从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”。
- --silent,
-s
静音模式。仅在发生错误时才写输出。您可以使用-s
两次(-ss
)使myisamchk保持安静。
- --verbose,
-v
详细模式。打印有关程序功能的更多信息。可以与-d
和-e
一起使用。多次使用-v
(-vv
,-vvv
)以获得更多输出。
- --version,
-V
显示版本信息并退出。
- --wait,
-w
如果 table 已锁定,则不要终止于错误,而要等到 table 被解锁后再 continue。如果您在禁用外部锁定的情况下运行mysqld,则该 table 只能由另一个myisamchk命令锁定。
您还可以使用--var_name=value
语法设置以下变量:
Variable | Default Value |
---|---|
decode_bits | 9 |
ft_max_word_len | version-dependent |
ft_min_word_len | 4 |
ft_stopword_file | built-in list |
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变量及其默认值:
当通过对键进行排序来修复键时使用myisam_sort_buffer_size
,这是使用--recover时的正常情况。 sort_buffer_size
是myisam_sort_buffer_size
的已弃用同义词。
当您使用--extend-check检查 table 或通过将键逐行插入 table 中来修复键时(例如进行普通插入时),将使用key_buffer_size
。在以下情况下,将通过密钥缓冲区进行修复:
-
您使用--safe-recover。
-
排序密钥所需的临时文件将比直接创建密钥文件时大两倍。当CHAR,VARCHAR或TEXT列具有较大的键值时,通常会发生这种情况,因为排序操作需要在执行过程中存储完整的键值。如果您有很多临时空间,并且可以通过排序强制myisamchk进行修复,则可以使用--sort-recover选项。
与使用排序相比,通过键缓冲区进行修复所需的磁盘空间要少得多,但速度也要慢得多。
如果您想更快地修复,请将key_buffer_size
和myisam_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_len
和ft_max_word_len
table 示MyISAM
table 上FULLTEXT
索引的最小和最大字长。 ft_stopword_file
命名停用词文件。这些需要在以下情况下设置。
如果使用myisamchk执行修改 table 索引的操作(例如修复或分析),则除非另有指定,否则将使用最小和最大字长以及停用词文件的默认全文参数值重建FULLTEXT
索引。这可能会导致查询失败。
发生问题是因为这些参数仅由服务器知道。它们没有存储在MyISAM
索引文件中。为避免此问题,如果您已修改服务器中最小或最大字长或停用词文件,请将与mysqld相同的ft_min_word_len
,ft_max_word_len
和ft_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 TABLE,ANALYZE TABLE,OPTIMIZE TABLE或ALTER TABLE。这些语句由服务器执行,服务器知道要使用的适当的全文参数值。