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节,“命令行选项影响选项文件处理”。
-
Command-Line Format --defaults-file=file_name
Type 文件名 只使用给定的选项文件。如果文件不存在或无法访问,会出现错误。如果
file_name
不是绝对路径名,它将被解释为当前目录相对路径。关于这个和其他选项文件选项的更多信息,请见第6.2.2.3节,“命令行选项影响选项文件处理”。
-
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 --no-defaults
不读取任何选项文件。如果程序启动失败,因为从选项文件中读取未知选项,
--no-defaults
可以用来防止它们被读取。唯一的例外是,如果存在,
.mylogin.cnf
文件总是会被读取。这允许在使用--no-defaults
时安全地指定密码。要创建.mylogin.cnf
,请使用 mysql_config_editor 工具。见第 6.6.7 节,“mysql_config_editor — MySQL 配置工具”。关于这个和其他选项文件选项的更多信息,请见第 6.2.2.3 节,“命令行选项影响选项文件处理”。
-
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
。 -
当创建键文件时,需要的临时文件将大于两倍,因为在排序键值时需要存储完整的键值。如果您有大量的
CHAR
、VARCHAR
或TEXT
列,因为排序操作需要存储完整的键值。如果您有充足的临时空间,可以强制使用myisamchk进行排序修复,可以使用--sort-recover
选项。
通过键缓冲区修复需要的磁盘空间远小于使用排序,但也更慢。
如果您想要加速修复,设置key_buffer_size
和myisam_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_len
和 ft_max_word_len
表示MyISAM
表中的FULLTEXT
索引的最小和最大单词长度。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
。这些语句由服务器执行,它们知道使用正确的全文参数值。