的myisamchk实用程序获取关于数据库表的信息或检查、修复或优化它们。myisamchk适用于MyISAM
表(具有.MYD
而且.MYI
用于存储数据和索引的文件)。
你也可以使用检查表
而且修理表
报表的检查和修复MyISAM
表。看到第13.7.3.2节," CHECK TABLE语句",第13.7.3.5节,“修理表声明”.
的使用myisamchk不支持分区表。
在执行表修复操作之前,最好先对表进行备份;在某些情况下,该操作可能会导致数据丢失。可能原因包括但不限于文件系统错误。
调用myisamchk是这样的:
myisamchk [选项]tbl_name...
的选项
明确你想要什么myisamchk要做的事情。它们将在下面的部分中进行描述。您还可以通过调用来获得一个选项列表myisamchk——帮助.
没有选择,myisamchk将检查表作为默认操作。为了获得更多的信息或告诉myisamchk要采取纠正措施,请指定如下讨论中所述的选项。
tbl_name
要检查或修复的数据库表。如果你运行myisamchk在数据库目录之外的其他地方,必须指定数据库目录的路径,因为myisamchk不知道数据库位于哪里。事实上,myisamchk实际上并不关心您正在处理的文件是否位于数据库目录中。您可以将与数据库表对应的文件复制到其他位置,并在那里对它们执行恢复操作。
控件上可以命名多个表myisamchk如果您愿意,可以使用命令行。还可以指定表的索引文件(包含.MYI
后缀)。这使您能够通过使用模式指定目录中的所有表*.MYI
.例如,如果您在一个数据库目录中,您可以检查所有MyISAM
该目录下的表如下:
myisamchk *。MYI
如果你不在数据库目录中,你可以通过指定目录的路径来检查那里的所有表:
myisamchk/ / database_dir / /路径*.MYI
你甚至可以通过指定一个通配符MySQL数据目录的路径来检查所有数据库中的所有表:
myisamchk/道路/ / datadir / * / *.MYI
推荐的方法可以快速全部检查MyISAM
表:
myisamchk——沉默的快/道路/ / 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 \/道路/ / datadir / * / *.MYI
这个命令假设您有超过64MB的空闲空间。有关使用的内存分配的更多信息myisamchk,请参阅章节4.6.4.6,“myisamchk内存使用情况”.
有关使用的附加信息myisamchk,请参阅第7.6节“MyISAM表的维护和崩溃恢复”.
您必须确保在运行时没有其他程序正在使用这些表myisamchk.最有效的方法是在运行时关闭MySQL服务器myisamchk,或者锁定所有的表myisamchk正在被使用。
否则,当你奔跑myisamchk,可能会显示如下错误信息:
警告:客户端正在使用或没有正确关闭表
这意味着您试图检查已被另一个程序(例如mysqld服务器)尚未关闭文件或未正确关闭文件而死亡,这有时会导致一个或多个文件的损坏MyISAM
表。
如果mysqld正在运行时,必须使用?强制它刷新仍然缓冲在内存中的任何表修改刷新表
.然后应该确保在运行时没有人使用这些表myisamchk
然而,避免这个问题的最简单的方法是使用检查表
而不是myisamchk检查表。看到第13.7.3.2节," CHECK TABLE语句".
myisamchk支持以下选项,可以在命令行或在(myisamchk)
选项文件的组。有关MySQL程序使用的选项文件的信息,请参见第4.2.2.2节,“使用选项文件”.
表4.19 myisamchk选项
选项名称 | 描述 |
---|---|
——分析 | 分析键值的分布 |
——备份 | 将.MYD文件备份为file_name-time.BAK |
——分批试验 | 查找位于给定偏移量处的块所属的记录 |
——检查 | 检查表格是否有错误 |
——check-only-changed | 只检查自上次检查以来已更改的表 |
——correct-checksum | 纠正表的校验和信息 |
——data-file-length | 数据文件的最大长度(当数据文件已满时重新创建数据文件时) |
——调试 | 编写调试日志 |
——decode_bits | Decode_bits |
——defaults-extra-file | 除了通常的选项文件外,读取命名的选项文件 |
——defaults-file | 只读命名选项文件 |
——defaults-group-suffix | 选项组后缀值 |
——描述 | 打印关于表的一些描述性信息 |
——延长止 | 执行非常彻底的表检查或修复,试图从数据文件中恢复每一个可能的行 |
——快 | 只检查那些没有完全关闭的桌子 |
——力 | 如果myisamchk在表中发现任何错误,是否自动进行修复操作 |
——力 | 覆盖旧的临时文件。用于与-r或-o选项一起使用 |
——ft_max_word_len | FULLTEXT索引的最大单词长度 |
——ft_min_word_len | FULLTEXT索引的最小字长 |
——ft_stopword_file | 使用这个文件中的停止字而不是内置列表 |
——帮助 | 显示帮助信息并退出 |
——帮助 | 显示帮助信息并退出 |
——信息 | 打印有关所检查表的信息统计信息 |
——key_buffer_size | MyISAM表索引块的缓冲区大小 |
——密钥 | 指示要更新哪些索引的位值 |
——max-record-length | 如果myisamchk不能分配内存容纳大于给定长度的行 |
——medium-check | 执行一个比——扩展检查操作更快的检查 |
——myisam_block_size | 用于MyISAM索引页的块大小 |
——myisam_sort_buffer_size | 在进行REPAIR时对索引进行排序,或者使用CREATE index或ALTER TABLE创建索引时分配的缓冲区 |
——已 | 读取无选项文件 |
——parallel-recover | 使用与-r和-n相同的技术,但使用不同的线程并行创建所有键(beta) |
——print-defaults | 打印默认选项 |
——快速 | 通过不修改数据文件实现更快的修复 |
——read_buffer_size | 执行顺序扫描的每个线程都会为它扫描的每个表分配一个这样大小的缓冲区 |
- - -只读 | 不标记表格已勾选 |
——恢复 | 做一个修复,可以修复几乎任何问题,除了唯一的键不是唯一的 |
——safe-recover | 是否使用旧的恢复方法进行修复,即按顺序读取所有行,并根据找到的行更新所有索引树 |
——set-auto-increment | 强制新记录的AUTO_INCREMENT编号从给定值开始 |
——set-collation | 指定用于对表索引进行排序的排序规则 |
——沉默 | 静默模式 |
——sort_buffer_size | 在进行REPAIR时对索引进行排序,或者使用CREATE index或ALTER TABLE创建索引时分配的缓冲区 |
——排序索引 | 按高低顺序对索引树块进行排序 |
——sort_key_blocks | sort_key_blocks |
——排序记录 | 根据特定索引对记录进行排序 |
——sort-recover | 即使临时文件非常大,也强制myisamchk使用排序来解析键 |
——stats_method | 指定MyISAM索引统计集合代码应该如何处理空值 |
——tmpdir | 存放临时文件的目录 |
——打开 | 打开装着myisampack的桌子 |
——update-state | 在.MYI文件中存储信息,以指示检查表的时间以及表是否崩溃 |
——详细 | 详细模式 |
——版本 | 显示版本信息并退出 |
——write_buffer_size | 写缓冲区大小 |