Drupal MySql 数据库设计问题

Posted

技术标签:

【中文标题】Drupal MySql 数据库设计问题【英文标题】:Drupal MySql database design question 【发布时间】:2009-07-12 09:49:32 【问题描述】: 我只是在查看安装后由drupal创建的mysql数据库。 所有的表都在 MyISAM 中。 使用像drupal这样的复杂软件,这样做不是更有意义吗? 使用外键并因此使用 InnoDB 表来强制引用完整性? 如果没有外键,所有约束检查都将发生在 php 结束。

【问题讨论】:

有人会认为 Drupal 想要保留这种参照完整性,但他们认为使用任何数据库供应商的能力更为重要。有关更多信息/讨论,请参阅drupal.org/node/911352 P.S.我知道我在旧帖子中发帖,但我想帮助那些搜索。 【参考方案1】:

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

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

DELETE FROM mytable WHERE id = 5

你可以写

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

只有在没有外部引用时才能成功删除该行。

【讨论】:

以上是关于Drupal MySql 数据库设计问题的主要内容,如果未能解决你的问题,请参考以下文章

MySQL和PostgreSQL比较

drupal

第335期如何将响应式设计技术应用于Drupal主题

Drupal 7 从 mysql 数据库恢复不起作用

为啥将静态页面保存在 Drupal 或 WordPress 等 CMS 的数据库中?

MySQL 到 Drupal 7 db_select