MEMORY对MyISAM与InnoDB的缓存响应

时间:2016-10-24 12:38:57

标签: mysql caching innodb myisam

由于洪水延迟很高,我需要缓存API响应。所以我会将每个响应缓存最多30秒,每当我获得缓存命中时,我会使用缓存数据,如果它小于30秒。

哪种存储引擎最适合它?

首先想到的是 MEMORY ,但它锁定了整个表格,我认为当许多用户在线时可能会遇到麻烦。

然后我考虑了 InnoDB ,但后来我读到MyISAM在许多写操作方面更好。

MyISAM 再次锁定整个表格。

哪种存储引擎最适合作为API响应缓存?

2 个答案:

答案 0 :(得分:1)

以上都不是。

MySQL是一个数据库,而不是缓存。我们的想法是持久存储数据(在InnoDB的情况下,持久存储)。 SQL中没有TTL(生存时间)或数据自动过期。你还必须自己删除超过30秒的数据,否则它会累积。

对于要在30秒后消失的数据,您应该使用缓存服务器。例如,Memcached允许您在缓存中设置对象时以秒为单位设置TTL。

答案 1 :(得分:0)

InnoDB的。

但是...

你说“API响应” - 那是HTML页面吗? AJAX回复? SQL查询?还有别的吗?

数据的变化频率如何?您的设计将提供最多30秒的数据过期;那可以接受吗? “查询缓存”可以避免这种情况,但还有其他问题。

你考虑过memcached吗?

每次插入建议的缓存并检查它的开销是多少?可能比替代品更多。

很可能你有一两个查询比它们要慢得多。修复它们将消除额外缓存的需要。请SHOW CREATE TABLEEXPLAIN SELECT ...。我们或许可以快速找到加速它们的方法。