在我的情况下哪个MySQL存储引擎会更好

时间:2012-02-27 08:40:22

标签: php mysql

我必须开发一个大型应用程序,一个学校管理系统;哪个MySQL存储引擎会更好? MyIsam或InnoDB还是其他任何一个?

5 个答案:

答案 0 :(得分:2)

InnoDb支持关系,MyISAM没有。如果您的应用需要此功能,则应使用InnoDB。 其他主要差异包括:

  • InnoDB较新,而MyISAM较旧。
  • InnoDB更复杂,而MyISAM更简单。
  • InnoDB在数据完整性方面更严格,而MyISAM则松散。
  • InnoDB在插入和更新时实现行级锁定,而MyISAM实现了表级锁定。
  • InnoDB有交易而MyISAM没有交易。
  • InnoDB有外键和关系约束,而MyISAM没有。
  • InnoDB具有更好的崩溃恢复能力,而MyISAM在恢复系统崩溃时的数据完整性方面表现不佳。
  • MyISAM有全文搜索索引,而InnoDB没有。

杨洋source

请参阅this问题,然后找出适合自己的情况。

答案 1 :(得分:2)

答案 2 :(得分:0)

您没有提供有关您的任务的大量信息。很可能你会有相关的表(innodb支持外键),除了innodb在myisam的并发环境中使用更有效的阻塞。所以使用InnoDb作为默认引擎是合理的。

答案 3 :(得分:0)

首先让我告诉你,对于这种管理系统,并发不是一个主要问题,因为你不会同时进行交易。因此,您提到的存储机制InnoDB具有足够的功能,如ACID合规性,崩溃恢复,行级锁定等,适用于您的应用程序,但这并不意味着InnoDB更好。

主要问题是数据仓库因为这样的系统数据在很大程度上增长。因此,为了满足这一需求,Mylsam看起来很合适,因为它是默认的存储引擎,并且在数据仓库环境中广泛使用。

Merge或MRG_MylSam是另一种选择。它使您能够对一系列相同的MylSam表进行逻辑分组,并将它们作为一个对象引用。对于VLDB(超大型数据库)环境也非常有用。

其他一些存储引擎是NDBCluster,Federated,Archive等,我认为你不需要...... 祝你好运.. !!

答案 4 :(得分:0)

使用InnoDB,它的性能已经出现并且它还支持外键。

在撰写本文时,还要针对最新的MySQL版本5.5.x。当来自Oracle的Vanilla MySQL性能成为问题时,您可以查看替代服务器,如Percona(http://percona.com),这些服务器都是替代品。

来自MySQL 5.5的BTW InnoDB是MySQL服务器中的默认存储引擎