我正在创建一个应用程序,它将在某个位置存储几个不同比例的(半)实时馈送。每个秤的重量将放在一个表中,表的行数与秤一样多。秤应用程序每秒为 MySQL 数据库提供一个新的权重,PHP Web 应用程序每 3 秒读取一次。似乎不会有太多的流量会非常多地分页硬盘,或者差异是否可以忽略不计,但我想知道使用内存/堆表与使用内存/堆表相比是否更有效或更有意义正常的 MyISAM 表。
3 回答
对于从 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
好吧,如果您期待大量数据,我认为您几乎必须去MyISAM
。如果将其全部存储在内存表中,您可能会耗尽内存。更不用说在使用 HEAP 引擎断电时您会丢失所有数据(请记住,您可能需要这取决于您的用例)...
我知道这个问题已经过时了,你现在可能已经提出了一个很好的解决方案,但我只是想向任何可能正在阅读本文的人指出,也许关系数据库并不是解决这个问题的最佳方法。对我来说,这显然看起来像是平面文件数据库是理想解决方案的情况。您只需将这些值写入二进制文件,然后使用简单的数学运算来选择行和字段,就可以节省大量开销。