Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于大规模更新MySQL表的最佳表引擎。MyISAM还是HEAP?_Mysql_Heap_Myisam - Fatal编程技术网

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

用于大规模更新MySQL表的最佳表引擎。MyISAM还是HEAP?,mysql,heap,myisam,Mysql,Heap,Myisam,我正在创建一个应用程序,它将在某个位置周围存储几个不同比例的(半)实时提要。每个秤的重量将放在一个表中,表中的行数与秤的行数相同。scale应用程序每秒向MySQL数据库提供一个新的权重,PHP web应用程序每3秒读取一次。看起来不会有太多的流量会对硬盘进行分页,或者差异可以忽略不计,但我想知道使用内存/堆表与普通的MyISAM表相比,是否会更有效率或更有意义。如果您需要大量数据,我想你几乎得去MyISAM了。如果将其全部存储在内存表中,可能会耗尽内存。更不用说堆引擎断电时会丢失所有数据(请记

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

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

对于100到1000个并发读/写请求(考虑典型的OLTP使用),innodb将轻而易举地执行myisam

这不是关于其他人的观察,也不是关于事务/acid支持,而是关于innodb的体系结构,它远远优于传统的myisam引擎

例如,innodb支持集群主键索引

此外,innodb具有行级锁定,在并发负载下比myisam表级锁定性能更好


我可以继续说下去,但有人已经提供了一个非常好的总结,说明了为什么innodb是OLTP的更好选择:

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

为什么选择MyISAM而不是InnoDB?我一直认为MyISAM是一个死引擎,因为InnoDB有很多优点(行级锁定、事务等),MyISAM的速度要快得多。这是最大的优势。信不信由你,对于某些用例,行级锁定实际上可能比表级锁定慢。更不用说不是每个应用程序都需要事务。ircmaxell-您熟悉这篇文章吗,它现在有点过时了,但应该澄清一些事实@f00:Benchmarks是相对没有意义的。现实世界的绩效很少与基准结果一致。我对绩效的评价基于我的经验。对于所有用例,它肯定不会更快,但对于某些用例,它肯定会更快(特别是当您的应用程序读得非常重并且有大量数据要读取时)。我不是在抨击InnoDB及其ACID合规性的好处。我只是说它不是每个用例的最佳选择。。。