为什么不像memcached那样使用MySQL?

时间:2011-07-22 13:13:49

标签: mysql caching memcached memcachedb memory-table

出于同样的原因,在一个应用程序中同时使用NoSQL和RDBMS是有意义的。除了NoSQL缓存之外,我还有一个RDBMS缓存。

我在考虑使用MySQL服务器和所有使用内存引擎的表。

这种做法有什么警告吗?

为了澄清,我建议这里仅使用MySQL服务器进行缓存,而不是用于我的应用程序的实际数据存储。

3 个答案:

答案 0 :(得分:5)

内存表完全存储在内存中,因此速度非常快。

它使用的哈希索引也非常快,非常适合临时表和查找。

内存表具有表级锁,因此如果需要并发,则这是一个问题

无交易

当服务器关闭或崩溃时所有行都丢失

尽管表定义保持不变,但数据将全部消失。

您可以查看official documents on the Memory Engine

修改

内存存储引擎是缓存目的的理想选择。

以下是Memory Engine适用的一些内容:

  • 查找/映射表
  • 缓存定期添加数据的结果
  • 用于数据分析目的
  • 会话管理
  • 低延迟操作
  • 比其他策略更好,例如CREATE TEMPORARY TABLE因为内存表仍然存在(如果这是你需要的)

有一些消极因素:

  • 它不支持TEXT或BLOB列,如果发生此类事件,表格将转换为磁盘上的MyISAM
  • 该表不应包含太多数据,因为它占用了可以分配给索引/查询缓存的资源

如果您需要缓存,总而言之,内存引擎应该是您的最佳选择。

答案 1 :(得分:0)

另一个原因,
与磁盘空间相比,RAM受到很大限制 你可以拥有高达TB的磁盘驱动器,
但几乎不能让记忆力上升到太字节

答案 2 :(得分:0)

如果你得到了$$,关于MySQL和InnoDB的following article能力将会引起很大的兴趣。

它胜过任何类型的缓存,内存引擎或memcached。缺点是 - 它需要ram,很多。