以下选项可用于 myisamchk 的任何类型的表维护操作。以下部分描述了特定操作的选项,例如表检查或修复。
-
--help,-?Command-Line Format --help显示帮助信息并退出。选项按操作类型分组。
-
--HELP,-HCommand-Line Format --HELP显示帮助信息并退出。选项以单个列表形式呈现。
-
--debug=,debug_options-#debug_optionsCommand-Line Format --debug[=debug_options]Type 字符串 Default Value d:t:o,/tmp/myisamchk.trace写入调试日志。典型的
debug_options字符串是d:t:o,。默认值是file_named:t:o,/tmp/myisamchk.trace。只有在 MySQL 使用
WITH_DEBUG选项构建时,才可使用此选项。 Oracle 提供的 MySQL 发行二进制文件 不 使用此选项。 -
--defaults-extra-file=file_nameCommand-Line Format --defaults-extra-file=file_nameType 文件名 在全局选项文件之后(在 Unix 上)但在用户选项文件之前读取此选项文件。如果文件不存在或不可访问,将发生错误。如果
file_name不是绝对路径名,则相对于当前目录进行解释。有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”。
-
Command-Line Format --defaults-file=file_nameType 文件名 仅使用给定的选项文件。如果文件不存在或不可访问,将发生错误。如果
file_name不是绝对路径名,则相对于当前目录进行解释。有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”。
-
Command-Line Format --defaults-group-suffix=strType 字符串 不仅读取通常的选项组,还读取具有通常名称和
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 节,“命令行选项影响选项文件处理”。
-
--沉默,-sCommand-Line Format --沉默沉默模式。仅在错误发生时写入输出。你可以使用
-s两次 (-ss) 使 myisamchk 变得非常沉默。 -
--详细,-vCommand-Line Format --详细详细模式。打印程序执行的更多信息。这可以与
-d和-e一起使用。使用-v多次 (-vv,-vvv) 以获取更多输出。 -
--版本,-VCommand-Line Format --版本显示版本信息并退出。
-
--等待,-wCommand-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_size 是 myisam_sort_buffer_size 的废弃同义词。
key_buffer_size 在检查表时使用 --extend-check 或当键被逐行插入表中时(类似于正常插入时)。通过键缓冲区修复在以下情况下使用:
-
您使用
--safe-recover。 -
临时文件需要排序键将超过两倍大于直接创建键文件时。这通常是在您有大键值的
CHAR、VARCHAR或TEXT列时,因为排序操作需要存储完整的键值。 如果您有很多临时空间并强制 myisamchk 通过排序修复,您可以使用--sort-recover选项。
通过键缓冲区修复需要比使用排序少得多的磁盘空间,但也慢得多。
如果您想要更快的修复,设置 key_buffer_size 和 myisam_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_len 和 ft_max_word_len 指示 FULLTEXT 索引在 MyISAM 表中的最小和最大单词长度。ft_stopword_file 指定停止词文件。这些需要在以下情况下设置。
如果您使用 myisamchk 执行修改表索引的操作(例如修复或分析),FULLTEXT 索引将使用默认的全文参数值重建,除非您指定其他值。这可能会导致查询失败。
问题发生是因为这些参数仅由服务器知道。它们不存储在 MyISAM 索引文件中。要避免问题,如果您在服务器中修改了最小或最大单词长度或停止词文件,请指定相同的 ft_min_word_len、ft_max_word_len 和 ft_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 TABLE、ANALYZE TABLE、OPTIMIZE TABLE 或 ALTER TABLE。这些语句由服务器执行,服务器知道使用正确的全文参数值。