InnoDB在异常关机时崩溃了

时间:2014-07-01 14:56:03

标签: php mysql database innodb myisam

我用MySQL构建了一个小应用程序。数据库类型是InnoDB。它托管在一些服务器上。我这么多次面临数据库崩溃。当我向托管服务提供商询问理由时,他们对我说:

  

问题是由于需要重建所有InnoDB表的InnoDB数据库损坏引起的。有些数据库虽然没有正确重建,但需要手动修复。这就是我做的。您无需进行任何更改。我们不希望这个问题很快再次发生。对由此造成的不便,我们深表歉意。

我告诉他们我必须使用InnoDB因为我需要与InnoDB建立的主键和外键关系。现在他们说:

  

这是正确的,MyISAM不支持外键。实际上,如果MySQL异常关闭,基于InnoDB的表很容易被破坏,例如在重启硬盘的情况下。相反,MyISAM更可靠,并且修复其表格很容易。

我的问题: 如果MySQL异常关闭,基于InnoDB的表容易被破坏,这是正确的吗?

1 个答案:

答案 0 :(得分:0)

假设默认的MySQL设置,他们是完全错误的。

但如果你:

  • 禁用双写缓冲区
  • 禁用页面校验和
  • innodb_flush_log_at_trx_commit<> 1
  • 启用没有电池的回写式缓存策略
  • ... 列表可以继续

你会得到真正容易腐败的InnoDB。