InnoDB 不会立即写入磁盘。问题?

InnoDB doesn't write to disk instantly. issue?

我正在使用 Symfony 和 Doctrine 做一个项目。

我有以下对象:

User, Playlist, Song

我正在使用 Docrine ORM 并做一些 manyTomany 关系。

一位看过设置的 'co-worker' 问我为什么要使用 Innodb。(我猜 Doctrine 默认使用它...)他说:

"InnoDB doesn't write to disk instantly. so when mysql crashes it has to try to rebuild the data that it didn't yet write to the table. often times this fails and the table is lost forever"

这是真的吗?

如果有,是否有预防措施?

如果我不希望 doctrine 使用 Innodb 是否就像删除 ORM 映射中的 manyTomany 关系一样简单?

除了 Innodb 之外,还有其他方法可以将对象与 Doctrine 相关联吗?

使用 InnoDB。期间.

在要"atomically" 提交到磁盘的语句组周围使用BEGIN...COMMIT。这样做(使用 InnoDB)保证——即使在语句中间出现电源故障——要么 all 语句将持久保存到磁盘或 none会。 (是的,这种程度的一致性对于你正在做的事情来说可能有点矫枉过正,但拥有它真是太好了。)

InnoDB 延迟写入磁盘是 "true",但它有一些袖手旁观的东西可以让上面的说法成立 even 如果电源出现故障 COMMIT 之后但在开始写作之前。建议您 'co-worker' 获得计算机科学学位,然后阅读有关 InnoDB 的更多信息。

至于Symphony和Doctrine是不是搞砸了,我就不知道了。尽管如此,即使他们很马虎,还是用 InnoDB 吧。

使用 MyISAM,您几乎可以保证在断电后需要 运行 一个 REPAIR TABLE。 InnoDB 不是这样。