文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


6.6.4.1 myisamchk 常规选项

本节介绍的选项可用于由 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

    命令行格式 --defaults-file=file_name
    类型 文件名

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

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

  • --defaults-group-suffix=str

    命令行格式 --defaults-group-suffix=str
    类型 字符串

    不仅读取常用的选项组,还读取名称与常用名称相同且后缀为 str 的组。例如,myisamchk 通常会读取 [myisamchk] 组。如果将此选项指定为 --defaults-group-suffix=_other,则 myisamchk 还会读取 [myisamchk_other] 组。

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

  • --no-defaults

    命令行格式 --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

    命令行格式 --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_sizemyisam_sort_buffer_size 的已弃用同义词。

当您使用 --extend-check 选项检查表或通过将键逐行插入表中来修复键时(就像执行普通插入一样),将使用 key_buffer_size 变量。在以下情况下,将使用通过键缓冲区进行修复:

  • 您使用了 --safe-recover 选项。

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

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

如果您希望更快地进行修复,请将 key_buffer_sizemyisam_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_lenft_max_word_len 指示 MyISAM 表上 FULLTEXT 索引的最小和最大单词长度。 ft_stopword_file 指定停用词文件。在以下情况下需要设置这些变量。

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

出现此问题的原因是,这些参数仅由服务器识别。它们不存储在 MyISAM 索引文件中。为避免此问题,如果您在服务器中修改了最小或最大单词长度或停用词文件,请为 myisamchk 指定与 mysqld 相同的 ft_min_word_lenft_max_word_lenft_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 TABLEANALYZE TABLEOPTIMIZE TABLEALTER TABLE 语句。这些语句由服务器执行,服务器知道要使用的正确全文参数值。