MySQL 8.0版本说明
MySQL 8.0源代码文档10bet官方网站
每一个MyISAM
索引档案(.MYI
文件)在头中有一个计数器,可以用来检查一个表是否已经正确关闭。如果您从检查表
或myisamchk,意味着这个计数器已经不同步了:
客户端正在使用或没有正确关闭表
此警告并不一定意味着表已损坏,但您至少应该检查表。
计数器的工作原理如下:
在MySQL中,第一次更新表时,索引文件头中的计数器会递增。
在进一步更新期间不会更改计数器。
当表的最后一个实例关闭时(因为a
刷新表
操作被执行或因为表缓存中没有空间),如果在任何时候更新了表,计数器将递减。当你修理表或检查表,发现它是好的,计数器重置为零。
为了避免与可能检查表的其他进程交互的问题,如果计数器为零,则在关闭时计数器不会递减。
换句话说,计数器只有在以下条件下才会变得不正确:
MySQL在更新和最终关闭之间崩溃了。(这个表可能仍然没问题,因为MySQL总是在每条语句之间对所有内容执行写操作。)
日志含义通过修改表myisamchk——恢复或myisamchk——update-state与此同时,它被mysqld.
多个mysqld服务器正在使用该表,其中一台服务器执行
修理表
或检查表
当它被另一个服务器使用的时候。在这个设置中,使用它是安全的检查表
,尽管您可能会从其他服务器得到警告。然而,修理表
应该避免,因为当一个服务器用一个新文件替换数据文件时,其他服务器不会知道这一点。一般来说,在多台服务器之间共享数据目录不是一个好主意。看到第5.8节“在一台机器上运行多个MySQL实例”,供进一步讨论。