0
我只是在查看安装后由drupal创建的MySql数据库。
所有的表都在 MyISAM 中。

使用像drupal这样的复杂软件,这样做不是更有意义吗?
使用外键并因此使用 InnoDB 表来强制引用完整性?

如果没有外键,所有约束检查都将发生在
PHP 结束。
4

1 回答 1

3

MySQL 提供多种数据库引擎是有原因的——不同的引擎提供不同的优点和缺点。InnoDB 是一个很棒的引擎,它提供了引用完整性和事务安全性,但是它对于网站的用例优化得很差,在这种用例中,你的读取次数比写入次数多。

MyISAM 为大多数点击只需要对数据库进行读取访问的网站提供最佳性能。在这种情况下,通常可以通过编写数据插入和删除来维护引用完整性,如果它们损害完整性,它们将无法成功。例如,而不是写

从 mytable 中删除,其中 id = 5

你可以写

DELETE mytable FROM mytable LEFT JOIN linkedtable ON mytable.id=linkedtable.ref WHERE id = 5 AND linkedtable.ref IS NULL

只有当没有外部引用时,这才会成功删除该行。

于 2009-07-12T10:10:02.293 回答