【问题标题】:Storage entgine choice for a website - Myisam or Innodb?网站的存储引擎选择 - Myisam 还是 Innodb?
【发布时间】:2011-08-13 07:37:15
【问题描述】:

作为 Craiglist 类型网站的存储引擎,什么是显而易见的选择 - MyIsam 或 InnoDb,为什么?

请说明您喜欢的具体原因

Craigslist 类型的网站会有很多阅读和写作,但可能会有更多阅读,因为很多人来那里寻找他们想要的信息(通过搜索引擎)并且没有太多要发布的信息......但刚刚找到他们在寻找什么......

在这种情况下你会怎么做 Innodb 或 Myisam ?既然有读写..?

【问题讨论】:

标签: mysql database innodb myisam data-storage


【解决方案1】:

我更喜欢 InnoDB,因为它更像是一个“真正的”数据库。此链接提供了更多详细信息:

http://www.mikebernat.com/blog/MySQL_-_InnoDB_vs_MyISAM

选择引用:

“InnoDB 是事务安全的,这意味着在整个查询过程中保持数据完整性。InnoDB 还提供行锁定,而不是表锁定,这意味着当一个查询忙于更新或插入一行时,另一个查询可以同时更新不同的行。这些功能提高了多用户并发性和性能。”

InnoDB 的大部分功能都归结为数据完整性,这总是一件好事 :)

【讨论】:

    【解决方案2】:

    简而言之,总结一下: * MyISAM 如果您正在寻找性能。 * InnoDB 如果您正在寻找稳健性(事务、外键)。

    我总是更喜欢稳健性而不是性能,在项目开始时更是如此。所以从 InnoDB 开始。一旦您的网站足够成功,您可能会考虑使用 MyISAM。

    【讨论】:

    • 如果有人对 MyISAM 和 InnoDB 之间的一些实数性能感兴趣:mysqlperformanceblog.com/2007/01/08/…。换句话说,MyISAM 并不总是更快,事实上 InnoDB 在很多方面都击败了 MyISAM。
    【解决方案3】:

    在高级术语中:

    InnoDb

    • 支持事务
    • 行级锁定
    • 支持外键约束
    • 处理大量并发写入的工作负载
    • 碰撞安全
    • 行级锁定避免了许多令人讨厌的锁定情况

    MySQL

    • 没有交易
    • 表级锁定
    • 支持有用的 MERGE 表
    • 适用于读取较多但写入较少的工作负载
    • 不安全
    • 在运行缓慢/糟糕的查询时,表级锁定可能会导致糟糕的情况

    对于我现在从事的任何新项目,我几乎肯定会选择 InnoDb。您的数据库崩溃的可能性较小,您可以利用事务并假设您在托管它的服务器上有相当大的内存(这些天内存非常便宜),那么您应该获得非常好的性能其中。 InnoDb 在性能调优方面更加复杂,但幸运的是,它开箱即用,可以为您提供愉快的工作。

    【讨论】:

    • 我编辑了我的问题 .. 租赁回答了关于读写的细节......正如他们所说,MyIsam 的读取性能更好......
    • 我仍然会使用 InnoDb 运行,如果将来您想进一步提高只读方面的性能,请在模板或数据层为显示的广告实施某种缓存层.
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2012-10-02
    • 1970-01-01
    • 2011-11-19
    • 2011-05-29
    相关资源
    最近更新 更多