16.2.4.2 表未正常关闭的问题

每个MyISAM索引文件(.MYIfile)的头部都有一个计数器,可以用来检查一个表是否已经正确关闭。CHECK TABLE如果您从或 myisamchk收到以下警告 ,则表示此计数器已不同步:

clients are using or haven't closed the table properly

此警告并不一定意味着该表已损坏,但您至少应该检查该表。

计数器的工作原理如下:

  • 第一次在 MySQL 中更新表时,索引文件标头中的计数器会递增。

  • 在进一步更新期间,计数器不会更改。

  • 当表的最后一个实例关闭时(因为执行了 FLUSH TABLES操作或因为表缓存中没有空间),如果表在任何时候已更新,则计数器会递减。

  • 当你修表或检查表,发现没问题时,计数器被重置为零。

  • 为避免与可能检查表的其他进程的交互出现问题,如果计数器为零,则计数器不会在关闭时递减。

换句话说,只有在这些情况下,计数器才会变得不正确: