Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

6.6.4.1 myisamchk 通用选项

以下选项可用于 myisamchk 的任何类型的表维护操作。以下部分描述了特定操作的选项,例如表检查或修复。

  • --help, -?

    Command-Line Format --help

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

  • --HELP, -H

    Command-Line Format --HELP

    显示帮助信息并退出。选项以单个列表形式呈现。

  • --debug=debug_options, -# debug_options

    Command-Line Format --debug[=debug_options]
    Type 字符串
    Default Value d:t:o,/tmp/myisamchk.trace

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

    只有在 MySQL 使用 WITH_DEBUG 选项构建时,才可使用此选项。 Oracle 提供的 MySQL 发行二进制文件 使用此选项。

  • --defaults-extra-file=file_name

    Command-Line Format --defaults-extra-file=file_name
    Type 文件名

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

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

  • --defaults-file=file_name

    Command-Line Format --defaults-file=file_name
    Type 文件名

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

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

  • --defaults-group-suffix=str

    Command-Line Format --defaults-group-suffix=str
    Type 字符串

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

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

  • --不使用默认值

    Command-Line Format --不使用默认值

    不要读取任何选项文件。如果程序启动失败是由于从选项文件中读取未知选项,--不使用默认值 可以用于防止它们被读取。

    唯一的例外是,如果存在,.mylogin.cnf 文件总是被读取。这允许在命令行上使用更安全的方式指定密码,即使使用 --不使用默认值。要创建 .mylogin.cnf,请使用 mysql_config_editor 实用程序。请参阅 第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”

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

  • --打印默认值

    Command-Line Format --打印默认值

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

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

  • --沉默, -s

    Command-Line Format --沉默

    沉默模式。仅在错误发生时写入输出。你可以使用 -s 两次 (-ss) 使 myisamchk 变得非常沉默。

  • --详细, -v

    Command-Line Format --详细

    详细模式。打印程序执行的更多信息。这可以与 -d-e 一起使用。使用 -v 多次 (-vv, -vvv) 以获取更多输出。

  • --版本, -V

    Command-Line Format --版本

    显示版本信息并退出。

  • --等待, -w

    Command-Line Format --等待
    Type 布尔值
    Default Value false

    如果表被锁定,而不是终止错误,而是等待直到表被解锁后继续。如果您正在运行 mysqld,外部锁定禁用,表只能被另一个 myisamchk 命令锁定。

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

Variable Default 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 变量及其默认值可以使用 myisamchk --help 进行检查:

myisam_sort_buffer_size 在键被排序时使用,例如当您使用 --recover 时。sort_buffer_sizemyisam_sort_buffer_size 的废弃同义词。

key_buffer_size 在检查表时使用 --extend-check 或当键被逐行插入表中时(类似于正常插入时)。通过键缓冲区修复在以下情况下使用:

  • 您使用 --safe-recover

  • 临时文件需要排序键将超过两倍大于直接创建键文件时。这通常是在您有大键值的 CHARVARCHARTEXT 列时,因为排序操作需要存储完整的键值。 如果您有很多临时空间并强制 myisamchk 通过排序修复,您可以使用 --sort-recover 选项。

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

如果您想要更快的修复,设置 key_buffer_sizemyisam_sort_buffer_size 变量为可用内存的约 25%。您可以将这两个变量设置为大值,因为只有一个变量在同一时间使用。

myisam_block_size 是用于索引块的大小。

stats_method 影响 NULL 值在索引统计信息收集时的处理方式,当使用 --analyze 选项时。它类似于 myisam_stats_method 系统变量。有关更多信息,请参阅 myisam_stats_method第 7.1.8 节,“服务器系统变量”第 10.3.8 节,“InnoDB 和 MyISAM 索引统计信息收集”

ft_min_word_lenft_max_word_len 指示 FULLTEXT 索引在 MyISAM 表中的最小和最大单词长度。ft_stopword_file 指定停止词文件。这些需要在以下情况下设置。

如果您使用 myisamchk 执行修改表索引的操作(例如修复或分析),FULLTEXT 索引将使用默认的全文参数值重建,除非您指定其他值。这可能会导致查询失败。

问题发生是因为这些参数仅由服务器知道。它们不存储在 MyISAM 索引文件中。要避免问题,如果您在服务器中修改了最小或最大单词长度或停止词文件,请指定相同的 ft_min_word_lenft_max_word_lenft_stopword_file 值给 myisamchk,就像您对 mysqld 一样。例如,如果您将最小单词长度设置为 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。这些语句由服务器执行,服务器知道使用正确的全文参数值。