用于大规模更新的MySQL表的最佳表引擎。 MyISAM或HEAP?

时间:2010-08-18 23:07:15

标签: mysql heap myisam

我正在创建一个应用程序,它将在某个位置存储几个不同比例的(半)实时馈送。每个比例的权重将放在一个表中,其中只有与比例一样多的行。 scale应用程序每秒向MySQL数据库提供一个新的权重,PHP Web应用程序每3秒读取一次。它看起来不是非常多的流量会对硬盘驱动器进行分页,或者差异是否可以忽略不计,但我想知道使用内存/ HEAP表与使用内存/ HEAP表相比更高​​效还是更有意义正常的MyISAM表。

3 个答案:

答案 0 :(得分:2)

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

这不是关于其他人的观察,它不是关于交易/酸支持,而是关于innodb的架构,它远远优于传统的myisam引擎。

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

此外,innodb具有行级锁定,在并发负载下比myisam表级锁定更高效。

我可以坚持下去,但是已经提供了一个很好的总结,为什么innodb是OLTP的更好选择:http://tag1consulting.com/MySQL_Engines_MyISAM_vs_InnoDB

答案 1 :(得分:1)

好吧,如果您期待大量数据,我认为您几乎不得不去MyISAM。如果将它们全部存储在内存表中,则可能会耗尽内存。更不用说使用HEAP引擎断电会丢失所有数据(请记住,根据您的使用情况,您可能需要这样做)...

答案 2 :(得分:0)

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