Myisamchk - MyISAM表维护工具

来自泡泡学习笔记
跳到导航 跳到搜索

myisamchk实用程序用于获取有关数据库表的信息或检查、修复或优化它们。myisamchk适用于MyISAM表(具有存储数据和索引的.MYD和.MYI文件的表)。

您还可以使用CHECK TABLE和REPAIR TABLE语句来检查和修复MyISAM表。

myisamchk不支持分区表。

注意

在进行表修复操作之前,最好先备份表;在某些情况下,该操作可能导致数据丢失。可能的原因包括但不限于文件系统错误。


调用myisamchk的方式如下:

myisamchk [options] tbl_name ...

选项指定了您希望myisamchk执行的操作。它们在以下各节中进行了描述。您还可以通过调用myisamchk –help来获取选项列表。

如果没有选项,myisamchk将默认仅检查表。要获取更多信息或告诉myisamchk采取纠正措施,请按照以下讨论指定选项。


tbl_name是您要检查或修复的数据库表。如果您在数据库目录之外的其他地方运行myisamchk,则必须指定数据库目录的路径,因为myisamchk不知道数据库的位置。实际上,myisamchk实际上并不关心您正在处理的文件是否位于数据库目录中。您可以将与数据库表相对应的文件复制到其他位置并在那里执行恢复操作。


如果愿意,您可以在myisamchk命令行上命名多个表。您还可以通过命名其索引文件(带有.MYI后缀的文件)来指定一个表。这使您能够使用模式*.MYI指定目录中的所有表。例如,如果您在数据库目录中,可以像这样检查该目录中的所有MyISAM表:

myisamchk *.MYI


如果您不在数据库目录中,则可以通过指定目录的路径来检查那里的所有表:

myisamchk /path/to/database_dir/*.MYI


您甚至可以使用指向MySQL数据目录的通配符来检查所有数据库中的所有表:

myisamchk /path/to/datadir/*/*.MYI


快速检查所有MyISAM表的推荐方法是:

myisamchk --silent --fast /path/to/datadir/*/*.MYI


如果要检查所有MyISAM表并修复任何损坏的表,可以使用以下命令:

myisamchk --silent --force --fast --update-state 
        --key_buffer_size=64M --myisam_sort_buffer_size=64M 
        --read_buffer_size=1M --write_buffer_size=1M 
        /path/to/datadir/*/*.MYI

此命令假定您有超过64MB的可用空间。