【问题标题】:Best Table Engine for massively updated MySQL table. MyISAM or HEAP?用于大规模更新 MySQL 表的最佳表引擎。 MyISAM 还是 HEAP?
【发布时间】:2011-03-31 20:29:58
【问题描述】:

我正在创建一个应用程序,它将在某个位置存储几个不同比例的(半)实时提要。每个秤的重量将放在一个表中,表的行数与秤一样多。秤应用程序每秒向 MySQL 数据库提供一个新的权重,PHP Web 应用程序每 3 秒读取一次。似乎不会有太多的流量会非常多地分页硬盘,或者差异是否可以忽略不计,但我想知道使用内存/堆表与使用内存/堆表相比是否更有效或更有意义正常的 MyISAM 表。

【问题讨论】:

    标签: mysql myisam in-memory-tables


    【解决方案1】:

    对于从 100 到 1000 的并发读/写请求(想想典型的 OLTP 使用),innodb 将胜过执行 myisam。

    这与其他人的观察无关,与事务/酸支持无关,它与远优于传统 myisam 引擎的 innodb 架构有关。

    例如,innodb 支持聚集主键索引http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html

    此外,innodb 具有行级锁定,它在并发负载下的性能远高于 myisam 表级锁定。

    我可以继续,但 somone 已经很好地总结了为什么 innodb 是 OLTP 的更好选择:http://tag1consulting.com/MySQL_Engines_MyISAM_vs_InnoDB

    【讨论】:

      【解决方案2】:

      好吧,如果你期待大量数据,我想你几乎必须去MyISAM。如果将其全部存储在内存表中,您可能会耗尽内存。更不用说在使用 HEAP 引擎断电时您会丢失所有数据(请记住,您可能需要这取决于您的用例)...

      【讨论】:

      • 为什么选择 MyISAM 而不是 InnoDB?我一直认为 MyISAM 是一个死引擎,因为 InnoDB 有很多优点(行级锁定、事务等)。
      • MyISAM 明显更快。这是最大的优势。信不信由你,对于某些用例,行级锁定实际上可能比表级锁定慢。更不用说不是每个应用程序都需要事务。
      • ircmaxell - 你对这篇文章很熟悉吗,它现在有点过时了,但你应该把你的一些事实直截了当mysqlperformanceblog.com/2007/01/08/…
      • @f00:基准相对没有意义。现实世界的表现很少与基准测试结果一致。我对性能的评价是基于我的经验。对于所有用例来说,它肯定不是更快,但对于某些用例来说肯定是更快(特别是如果您的应用程序读取量很大并且有大量数据需要读取)。我并没有否定 InnoDB 的好处及其 ACID 合规性。我只是说它并不是对每个用例都是最好的......
      【解决方案3】:

      我知道这个问题已经过时了,您现在可能已经提出了一个很好的解决方案,但我只是想向可能正在阅读此问题的任何人指出,也许关系数据库并不是解决问题的最佳方法这个问题。对我来说,这显然看起来像是平面文件数据库是理想解决方案的情况。只需将这些值写入二进制文件,然后使用简单的数学运算来选择行和字段,您就可以节省大量开销。

      【讨论】:

        猜你喜欢
        • 2011-05-29
        • 2016-12-23
        • 2014-02-26
        • 2013-06-04
        • 2013-04-25
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 2011-03-25
        相关资源
        最近更新 更多