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.6 myisamlog — 显示 MyISAM 日志文件内容

内存分配对运行myisamchk非常重要。myisamchk 使用的内存不超过其相关变量设置的值。如果您计划使用myisamchk对非常大型表进行维护,您应该首先确定它将使用多少内存。默认情况下,它将只使用约3MB来执行修复操作。通过使用更大的值,您可以让myisamchk运行速度更快。例如,如果您有512MB以上的RAM可用,您可以使用以下选项(在指定其他选项时):

myisamchk --myisam_sort_buffer_size=256M \
           --key_buffer_size=512M \
           --read_buffer_size=64M \
           --write_buffer_size=64M ...

使用--myisam_sort_buffer_size=16M可能足以满足大多数情况。

请注意,myisamchk 使用临时文件在 TMPDIR 中。如果 TMPDIR 指向内存文件系统,可能会出现内存错误。如果发生这种情况,请使用myisamchk 命令时指定 --tmpdir=dir_名 选项,以指定一个位于文件系统的目录,该文件系统具有更多空间。

在执行修复操作时,myisamchk 也需要大量磁盘空间:

  • 数据文件的两倍大小(原始文件和副本)。如果您使用 --quick 选项执行修复操作,那么只需重新创建索引文件;在这种情况下,不需要额外的空间。 这部分空间必须位于原始数据文件所在的同一个文件系统中,因为副本是在原始文件目录中的。

  • 用于替换旧索引文件的新索引文件空间。修复操作开始时,旧索引文件将被截断,因此您通常可以忽略这部分空间。这部分空间必须位于原始数据文件所在的同一个文件系统中。

  • 使用--recover--sort-recover(但不使用--safe-recover),您需要磁盘空间用于排序。这部分空间将在临时目录(由TMPDIR--tmpdir=dir_name指定)中分配。以下公式计算所需空间的大小:

    (largest_key + row_pointer_length) * number_of_rows * 2

    您可以使用myisamchk -dv tbl_name(见第6.6.4.5节,“使用 myisamchk 获取表信息”)检查键的长度和row_pointer_lengthrow_pointer_lengthnumber_of_rows值是表描述中的Datafile 指针Data 记录值。要确定largest_key值,请检查表描述中的Key行。Len列表示每个键部分的字节数。在多列索引中,键大小是所有键部分Len值之和。

如果在修复过程中遇到磁盘空间问题,可以尝试使用--safe-recover而不是--recover