Documentation Home

4.6.3.1 myisamchk 常规选项

本节中描述的选项可用于 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变量及其默认值:

myisam_sort_buffer_size在通过排序键修复键时使用,这是您使用 时的正常情况--recoversort_buffer_size是 的弃用同义词 myisam_sort_buffer_size

key_buffer_size当您检查表时--extend-check 或通过将键逐行插入表中来修复键时使用(就像进行正常插入时一样)。通过key buffer修复用于以下情况:

  • 你用--safe-recover

  • 对密钥进行排序所需的临时文件将是直接创建密钥文件时的两倍多。CHAR当、 VARCHAR或 列的键值很大时,通常会出现这种情况 TEXT,因为排序操作需要在进行时存储完整的键值。如果你有很多临时空间并且你可以通过排序强制myisamchk修复,你可以使用该--sort-recover 选项。

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

如果您想更快地修复,请将 key_buffer_sizemyisam_sort_buffer_size变量设置为可用内存的大约 25%。您可以将两个变量都设置为较大的值,因为一次只使用其中一个。

myisam_block_size是用于索引块的大小。

stats_method影响 给出选项NULL时如何处理索引统计信息收集的--analyze 值。它就像 myisam_stats_method系统变量一样。更多信息参见 myisam_stats_method5.1.7 节“服务器系统变量”第 8.3.7 节“InnoDB 和 MyISAM 索引统计收集”中的描述。

ft_min_word_len并 指出表索引 ft_max_word_len的最小和最大字长。 命名停用词文件。这些需要在以下情况下设置。 FULLTEXTMyISAMft_stopword_file

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

出现此问题是因为这些参数只有服务器知道。它们不存储在MyISAM 索引文件中。如果您修改了服务器中的最小或最大字长或停用词文件,为避免出现此问题,请为myisamchk指定与用于 mysqldft_min_word_len的相同的 ft_max_word_len、 和 ft_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。这些语句由服务器执行,它知道要使用的正确全文参数值。