Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


6.6.4.1 myisamchk 检查选项

本节中描述的选项可以用于任何类型的表维护操作,包括myisamchk。下一节将描述特定操作的选项,例如表检查或修复。

  • --help, -

    Command-Line Format --help

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

  • --HELP, -

    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

    只有在使用WITH_DEBUG编译MySQL时,这个选项才可用。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=_othermyisamchk也读取[myisamchk_other]组别。

    关于这个和其他选项文件选项的更多信息,请见第6.2.2.3节,“命令行选项影响选项文件处理”

  • --no-defaults

    Command-Line Format --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

    Command-Line Format --print-defaults

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

    关于这个和其他选项文件选项的更多信息,请见第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --silent, -s

    Command-Line Format --silent

    静默模式。只有在错误发生时才输出结果。你可以使用-s两次(-ss)来使myisamchk非常静默。

  • --verbose, -v

    Command-Line Format --verbose

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

  • --version, -V

    Command-Line Format --version

    显示版本信息并退出。

  • --wait, -w

    Command-Line Format --wait
    Type 布尔值
    Default Value false

    如果表锁定,可以等待表解锁后继续执行,而不是立即报错。如果您正在运行mysqld,并且外部锁定已禁用,那么表只能被另一个myisamchk 命令锁定。

您还可以使用--var_名= 语法来设置以下变量:

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_size 是对 myisam_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。更多信息,请参阅第7.1.8节,“服务器系统变量”第10.3.8节,“InnoDB and MyISAM Index Statistics Collection”

ft_min_word_lenft_max_word_len 表示MyISAM表中的FULLTEXT索引的最小和最大单词长度。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。这些语句由服务器执行,它们知道使用正确的全文参数值。