MySQL表被标记为崩溃

Man*_*sav 6 mysql myisam

我是MySQL数据库的新手.我一再看到MySQL的一个错误,说该表被标记为崩溃,应该修复.但是,我可以使用命令myisamchk修复崩溃的表.顺便说一句,我在MySQL中使用MYISAM数据库引擎.

我只是想知道在什么情况下数据库表崩溃以及如何防止它再次发生?

我使用mysqltcl库(3.0)从Tcl(8.5)脚本连接到MySQL(5.0)数据库.

Rol*_*DBA 10

MyISAM表非常容易崩溃.每个表中都有标题信息,用于跟踪MyISAM表具有的打开文件句柄数.

如果mysqld崩溃,任何具有打开文件句柄的MyISAM表从未有机会在每个文件句柄关闭时减少文件句柄计数.因此,如果新文件句柄打开MyISAM表(.MYD文件)并且mysqld发现MyISAM表认为打开的文件句柄数与MyISAM表实际打开的文件句柄数之间不匹配,则表为宣布坠毁.

处理此问题有四(4)种方法:

方法#1:设置自动MyISAM修复

请参阅我的帖子https://dba.stackexchange.com/a/15079/877,了解如何在MySQL重启时进行设置(2012年3月15日)

方法#2:使用InnoDB而不是MyISAM

InnoDB在存储引擎的初始化中内置了崩溃恢复功能.MyISAM没有

方法#3:使用Aria代替MyISAM

Aria是MariaDB替代MyISAM的替代品.它具有各个表的崩溃恢复机制.

方法#4:不要在mysqld上杀死-9

如果mysqld故意或不自觉地崩溃,所有打开的MyISAM表的标题信息将使它们进入崩溃状态.避免手动杀死mysqld.