11、MySQL 8.0参考手册 4.6.4 myisamchk - MyISAM表维护实用程序

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

您也可以使用CHECK TABLE 和REPAIR TABLE语句来检查和修复MyISAM表格。请参见 第13.7.3.2节“CHECK TABLE语法”和 第13.7.3.5节“REPAIR TABLE语法”

不支持myisamchk与分区表 的使用

警告

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

像这样 调用myisamchk

shell> myisamchk [options] tbl_name ...

options你想要的指定 myisamchk的做。它们在以下各节中进行介绍。您也可以通过调用myisamchk --help来获得选项列表

如果没有选项,myisamchk只会将您的表格视为默认操作。要获得更多信息或告诉myisamchk采取纠正措施,请按照以下讨论中的说明指定选项。

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

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

shell> myisamchk *.MYI

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

shell> myisamchk /path/to/database_dir/*.MYI

你甚至可以通过指定一个通配符和MySQL数据目录的路径来检查所有数据库中的所有表:

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

建议快速检查所有 MyISAM表格的方法是:

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

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

shell> 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的空闲空间。有关使用myisamchk分配内存的更多信息 ,请参见 第4.6.4.6节“myisamchk内存使用情况”

有关使用myisamchk的更多信息 ,请参见 第7.6节“MyISAM表维护和故障恢复”

重要

在运行myisamchk时,您必须确保没有其他程序正在使用这些表 这样做的最有效方法是在运行 myisamchk时关闭MySQL服务器,或者锁定 myisamchk正在使用的所有表

否则,当您运行myisamchk时,它可能会显示以下错误消息:

warning: clients are using or haven't closed the table properly

这意味着您正在尝试检查已被另一程序(如mysqld服务器)更新的表,该表 尚未关闭文件,或者在没有正确关闭文件的情况下死亡,这有时会导致损坏一个或多个 MyISAM表格。

如果mysqld正在运行,则必须强制使用它来刷新仍在内存中缓存的所有表修改FLUSH TABLES然后,您应确保在运行myisamchk时没有人使用这些表格

但是,避免此问题的最简单方法是使用 CHECK TABLE而不是 myisamchk来检查表。请参见 第13.7.3.2节“CHECK TABLE语法”

myisamchk支持以下选项,可以在命令行或 [myisamchk]选项文件组中指定。有关MySQL程序使用的选项文件的信息,请参见 第4.2.6节“使用选项文件”

本文由学什么技术好网翻译

表4.17​​ myisamchk选项

格式描述
- 分析分析关键值的分布
--backup将.MYD文件备份为file_name-time.BAK
--block搜索查找给定偏移量处的块所属的记录
--check检查表中的错误
--check-唯一改变的只检查自上次检查后更改的表格
--correct校验和纠正表格的校验和信息
--data文件长度数据文件的最大长度(当数据文件已满时重新创建数据文件时)
--debug编写调试日志
--decode_bitsDecode_bits
--defaults-额外文件除了通常的选项文件外,还可以读取已命名的选项
--defaults文件只读取命名的选项文件
--defaults基团的后缀选项组后缀值
- 描述打印一些关于表格的描述性信息
--extend检查进行非常彻底的表检查或修复,试图从数据文件中恢复所有可能的行
- 快速只检查没有正确关闭的表格
- 力如果myisamchk在表中发现任何错误,请自动执行修复操作
- 力覆盖旧的临时文件。用于-r或-o选项
--ft_max_word_lenFULLTEXT索引的最大字长
--ft_min_word_lenFULLTEXT索引的最小字长
--ft_stopword_file使用此文件中的停用词而不是内置列表
- 帮帮我显示帮助信息并退出
- 帮帮我显示帮助信息并退出
- 信息打印有关检查表的信息统计信息
--key_buffer_size用于MyISAM表索引块的缓冲区大小
--keys使用的指示要更新哪些索引的位值
--max记录长度如果myisamchk无法分配内存来保存它们,则跳过大于给定长度的行
--medium检查做一个比--extend-check操作更快的检查
--myisam_block_size块大小用于MyISAM索引页面
--myisam_sort_buffer_size在执行REPAIR或使用CREATE INDEX或ALTER TABLE创建索引时对索引进行排序时分配的缓冲区
--no-默认不读取任何选项文件
--parallel-恢复使用与-r和-n相同的技术,但使用不同的线程(测试版)并行创建所有键,
--print-默认打印默认选项
- 快通过不修改数据文件实现更快的修复。
--read_buffer_size每个执行顺序扫描的线程都会为其扫描的每个表分配一个此大小的缓冲区
- 只读不要将该表标记为已选中
- 恢复做一个修复,可以解决几乎任何问题,除了唯一的唯一键
--safe-恢复使用旧的恢复方法进行修复,该方法按顺序读取所有行,并根据找到的行更新所有索引树
--set-自动递增对新记录强制AUTO_INCREMENT编号以给定值开始
--set-整理指定用于排序表索引的排序规则
- 无声静音模式
--sort_buffer_size在执行REPAIR或使用CREATE INDEX或ALTER TABLE创建索引时对索引进行排序时分配的缓冲区
--sort指数按高低顺序对索引树块进行排序
--sort_key_blockssort_key_blocks
--sort-记录根据特定索引对记录进行排序
--sort-恢复强制myisamchk使用排序来解决密钥,即使临时文件会非常大
--stats_method指定MyISAM索引统计信息收集代码应如何处理NULL
--tmpdir用于存储临时文件的目录
--unpack打开装有myisampack的桌子
--update状态将信息存储在.MYI文件中以指示何时检查表以及表是否崩溃
--verbose详细模式
- 版显示版本信息并退出
--write_buffer_size写入缓冲区大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值