【问题标题】:Why not use MySQL like memcached?为什么不像 memcached 那样使用 MySQL?
【发布时间】:2011-10-11 01:21:00
【问题描述】:

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

我正在考虑将 MySQL 服务器与所有使用内存引擎的表一起使用。

这种方法有什么警告吗?

澄清一下,我在这里建议仅将 MySQL 服务器用于缓存目的,而不是用于我的应用程序的实际数据存储。

【问题讨论】:

    标签: mysql caching memcached memcachedb memory-table


    【解决方案1】:

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

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

    内存表有表级锁,所以如果需要并发,这是个问题

    没有交易

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

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

    您可能想查看official documents on the Memory Engine

    编辑:

    内存存储引擎非常适合用于缓存目的。

    以下是内存引擎的一些优点:

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

    有一些负面影响:

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

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

    【讨论】:

    • 酷,我们应该谈谈 RAM-RAID 吗? x)
    • memcahd 服务器崩溃时不是所有数据都丢失了吗?我建议将基于 My SQL 内存的服务器作为缓存机制,而不是应用程序的实际数据存储
    【解决方案2】:

    如果您收到了 $$,关于 MySQL 和 InnoDB 功能的following article 将会非常有趣。

    它优于任何类型的缓存、内存引擎或 memcached。缺点是 - 它需要内存,很多。

    【讨论】:

      【解决方案3】:

      另一个原因,
      与磁盘空间相比,RAM 非常有限,
      您可以拥有高达 TB 的磁盘驱动器,
      但几乎不能让内存达到 TB

      【讨论】:

      • 理论上,使用 memcache 可以解决您的问题,虽然成本效益高,但不会让您的老板满意。
      • 啊……还有什么原因?
      • 这意味着 RAM 比磁盘贵得多,计算机科学 101?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2012-05-12
      • 2011-05-13
      • 2020-07-15
      • 1970-01-01
      • 2011-06-08
      • 2011-01-17
      相关资源
      最近更新 更多