【问题标题】:many to many which DB engine to use in MYsql?在 MYsql 中使用多对多的数据库引擎?
【发布时间】:2011-11-11 10:08:28
【问题描述】:

我有一个客户、中间人、项目类型数据库。

客户可以购买许多商品,这存储在“中间”表中,只有 customeriditemid 两列。

我目前对所有表都使用 myisam。

这个结构中的中间表是否推荐使用Innodb?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    在这种情况下我更喜欢 InnoDB,因为:

    InnoDB 应该用于优先考虑数据完整性的地方,因为它通过关系约束和事务来处理它们。 在写入密集型(插入、更新)表中更快,因为它利用行级锁定并且只保留对正在插入或更新的同一行的更改。

    虽然,

    MyISAM 的设计和创建更简单,因此更适合初学者。 不用担心表之间的外部关系。 由于结构更简单,因此总体上比 InnoDB 更快,因此服务器资源的成本要低得多。 全文索引。 特别适用于读取密集型(选择)表。

    比较非常简单。 InnoDB 更适合需要频繁插入和更新的数据危急情况。另一方面,MyISAM 在不完全依赖数据完整性且大多只是选择和显示数据的应用程序中表现更好。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      INNODB 支持 foreign key constraints 包括级联删除,这在联结表中非常很有帮助。

      级联删除(简单地说)允许您的架构自行清理。

      如果您的联结表使用具有级联删除功能的外键约束,并且您删除了 customeritem 记录,则匹配的 middle 记录将被删除,因此它不会成为孤立的。

      我肯定会推荐 INNODB

      【讨论】:

        【解决方案3】:

        Innodb 让你定义很酷的外键。

        从那里您将拥有一些功能:

        • foregin-keys 也可以删除/更新依赖的数据。
        • 如果存在依赖项,foregin-keys 可以拒绝删除/更新。

        通常,使用foregin-keys 会尽早决定:那些foregin-key 需要额外的代码限制 - 即您可能无法在没有客户或项目的情况下插入中间。

        【讨论】:

          猜你喜欢
          • 2020-02-16
          • 1970-01-01
          • 1970-01-01
          • 2016-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-01
          • 1970-01-01
          相关资源
          最近更新 更多