【问题标题】:MySQL - InnoDB vs MyISAMMySQL - InnoDB 与 MyISAM
【发布时间】:2011-05-14 03:57:01
【问题描述】:

我昨天阅读了以下文章 (http://blogs.sitepoint.com/2010/11/19/mysql-mistakes-php-developers/),它写道:

MySQL 有许多数据库引擎,但您最有可能遇到 MyISAM 和 InnoDB。

默认使用 MyISAM。但是,除非您正在创建一个非常简单或实验性的数据库,否则这几乎肯定是错误的选择! MyISAM 不支持对数据完整性至关重要的外键约束或事务。此外,每当插入或更新记录时,整个表都会被锁定:随着使用量的增长,它会对性能产生不利影响。

解决方案很简单:使用 InnoDB。

我一直使用 MyISAM,因为它是默认设置。你怎么看?

如果我要升级到 InnoDB,在 phpMyAdmin 中,我可以只编辑每个表并将其更改为 innoDB 还是执行更复杂的过程?

谢谢!

【问题讨论】:

标签: mysql


【解决方案1】:

是的,如果您愿意,您可以像用过的内衣一样更换发动机,没有太多麻烦。只需在 phpmyadmin 中更改即可。

但我不会为了改变它而改变它。你需要使用外键吗?更改。您需要行级锁定而不是表锁定吗?更改。

值得注意的是,使用 MyISAM 也有充分的理由。看看 FULLTEXT 索引。 InnoDB 无法做到这一点。

更新

从 MySQL 5.6 开始,FULLTEXT 也已为 InnoDB 表实现。这是manual

【讨论】:

  • +1 - 在这一点上,我不会仅仅为了改变它而改变它。仅当您需要 InnoDB 的功能时才更改它。也就是说,我自己已经很长时间没有使用 MyISAM 了。
  • 我几乎只使用 InnoDB。除了前几天我需要一个 FULLTEXT 索引。 ;)
  • 嗯,对这件事有很多意见。我想我会从 MyISAM 开始,因为在过去的 7 年里我从来没有遇到过使用它的问题 :)
  • 需要注意的是,从 MySQL 5.6 开始的 InnoDB 支持全文搜索
【解决方案2】:

很抱歉提出了一个老问题,但这也对我选择哪个引擎有很大帮助,特别是因为 MyISAM 的读取速度更快,而且我的数据库表具有更多的读写能力:

http://www.rackspace.com/knowledge_center/article/mysql-engines-myisam-vs-innodb

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 2011-09-17
    • 2011-09-08
    • 2012-07-15
    • 2012-03-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多