mysql - 改用MyISAM引擎是否有助于提高读取操作的速度?

标签 mysql sql innodb myisam

我目前有一些带有 InnoDB Engine 的表。 10-20 个连接不断地将数据插入到这些表中。我在 AWS 上使用 MySQL RDS 实例。指标显示大约 300 写入 IOPS(计数/秒)。然而,INSERT 操作会锁定表,如果有人想要执行像 SELECT COUNT(*) FROM table; 这样的查询,那么在 MySQL 缓存结果之前,第一次可能需要几个小时。

我不是 DBA,我对 DB 的了解非常有限。所以问题是,如果我切换到 MyISAM 引擎,它是否有助于改善 READ 操作的时间?

最佳答案

不带 WHERE 的 SELECT COUNT(*) 对于 InnoDB 来说是错误的查询,因为它不像 MyISAM 那样缓存行计数。因此,如果您对此特定查询有问题,则必须将计数缓存在某处 - 例如在统计表中。

删除这种特定类型的查询后,您可以讨论 InnoDB 与 MyISAM 的读取性能。通常,InnoDB 中的写入不会阻止读取 - 为此使用 MVCC。然而,InnoDB 性能很大程度上取决于您为缓冲池设置的 RAM 量。

InnoDB 和 MyISAM 在存储数据的方式上有很大不同。您始终可以针对其中之一进行优化,并且了解其中的差异可以帮助您设计应用程序。通常,您可以在 InnoDB 表中获得与 MyISAM 一样好的读取性能 - 您只需使用不带 where 子句的 count 即可,并且您始终应该为 where 子句提供合适的索引,因为 InnoDB 表扫描将比 MyISAM 慢。/p>

关于mysql - 改用MyISAM引擎是否有助于提高读取操作的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633362/

相关文章:

php - mysql/php insert into 不执行任何操作,也没有错误

mysql - 为什么我的sql用了Max函数却不能用Abs函数?

sql - Listagg Overflow函数实现(Oracle SQL)

mysql - 如何在共享服务器上禁用或更改单个用户的 MySQL 全文停用词?

mysql - 如何提高 MySQL INSERT 和 UPDATE 性能?

php - 需要帮助根据用户在第一个下拉框中选择的内容创建第二个选项下拉框

mysql相交

mysql - 如何合并两个具有不同 set 和 where 子句的更新查询?

php - sql结果放入php数组

mysql - 配置 wamp mysql 以使用 innodb 不工作 - 错误 123