InnoDb 与 MyISAM 的崩溃弹性

Crash resilience of InnoDb vs. MyISAM

我们 运行 在 Windows 上有一个 MySQL 服务器。有时,Windows 崩溃,并使数据库处于损坏状态("Duplicate entry for key 'PRIMARY'" 消息,但密钥是自动生成的;可以使用 "Repair table" 命令修复)。

我只在 MyISAM table 中看到过这个问题,从未在 InnoDb table 中看到过。这是偶然发生的,还是 InnoDb 及其额外的事务代码实际上对此类故障更具弹性?

MyISAM 不支持 ACID databases.

这四个特性中的任何一个

InnoDB 专为崩溃恢复而设计。它有几个功能可以在崩溃的情况下防止此类损坏,并且还可以自动从崩溃中恢复,因此您不必 运行 REPAIR TABLE.

MySQL 5.5.5 in 2010 以来,InnoDB 一直是默认的存储引擎。很明显 MySQL 正在(缓慢地)朝着淘汰 MyISAM 的方向前进。在 MySQL 8.0 中,甚至 mysql 模式中的系统表也已转换为 InnoDB。

是时候考虑 MyISAM 过时技术并停止使用它了。我们应该尊重它在历史上的地位,但继续寻找更好的解决方案。