我们在Windows上运行MySQL服务器。有时,Windows崩溃,并使数据库处于损坏状态(尽管密钥是自动生成的,但“密钥'PRIMARY'的重复条目”消息;可以通过“修复表”命令修复)。
我只看到MyISAM表的问题,而从来没有InnoDb表的问题。这是偶然发生的吗,还是InnoDb带有用于交易的额外代码实际上对这种失败更具弹性?
答案 0 :(得分:2)
MyISAM不支持ACID databases的四种质量。
InnoDB设计用于崩溃恢复。它具有多种功能,可以防止崩溃时导致此类损坏,并且还可以从崩溃中自动恢复,因此您不必运行REPAIR TABLE。
自MySQL 5.5.5 in 2010起,InnoDB一直是默认的存储引擎。显然,MySQL正在(逐步)朝逐步淘汰MyISAM的方向发展。在MySQL 8.0中,甚至mysql
模式中的系统表也已转换为InnoDB。
现在是真正考虑MyISAM过时技术并停止使用它的时候了。我们应该尊重它在历史上的地位,但继续寻求更好的解决方案。