【问题标题】:Isint Memcached doing the same job as Buffer pool in Innodb?Isint Memcached 与 Innodb 中的缓冲池做同样的工作吗?
【发布时间】:2014-12-13 13:07:08
【问题描述】:

这就是我的理解:

Innodb 中的缓冲池:这将存储 Sql 表中的索引和数据,并将其缓存以供将来查询,因此它不需要一直打扰 Mysql。

Memcached:用于存储从 Innodb 接收到的数据并将其缓存,因此不需要每次都继续询问 Innodb。

他们不是都在做同样的事情,即在 Ram 中缓存响应,以便更快并减少 I/O 和 sql 解析吗?那为什么要在 Innodb Buffer pool 之上再增加一层 memcached 呢?

【问题讨论】:

    标签: mysql caching memcached buffer innodb


    【解决方案1】:

    缓冲池由 InnoDB 管理。进行查询所需的一切都必须在缓冲池中,因此当从磁盘读取新数据以用于当前查询时,如果需要,已经存在其中的数据会被逐出。

    即使表在缓冲池中,表之间的连接仍然会完成并且代价可能很高。

    另一方面,

    Memcached 是键值存储。不能对存储在那里的数据执行任何关系操作,只能进行插入和检索。它也是分布式的,因此可以构建巨大的集群。

    通常,长时间运行或繁重查询的结果会在 memcached 中存储一段时间,承担数据库的负载。

    【讨论】:

    • 感谢您的回复@AndreasWederbrand 我慢慢开始了解其中的区别。但是我仍然不清楚 memcached 真正存储的是什么。你能告诉我傻瓜语言中的“键值存储”是什么意思吗?当我在 wiki 和其他页面中阅读时,它解释了键值对等的关联数组。但发现很难掌握它真正的数据。
    • 假设在一个真实的例子中,我有一个列出最近 10 篇文章标题和描述的网页。所以查询将从 Innodb 缓冲池中获取结果,其中数据存储在表格模型中(我可以理解)。那么在查询匹配并且数据返回到 memcached 之后,这个“返回的数据”是实际存储在 memcached 中的吗?键值实际上是指来自查询的数据吗?或者 memcached 如何在 Key value 存储中打破这个返回的数据结果?
    • 键值存储就像一个带有键和值的哈希映射。通常,您会根据传入的请求构建一个密钥,然后在获取后将整个结果存储在 memcached 中。在随后的请求中生成相同的键并检查 memcached 是否为它存储了一个值。如果是这样,只需返回它即可。
    • 对...现在很有意义。在这种情况下,我觉得为 memcached 分配一个更大的内存可能会更好,这样它就可以容纳更多的数据,而不是开始删除旧的。从您的回答中,我可以清楚地了解 memcached 与 Innodb 缓冲池的不同之处。非常感谢您以更简单的方式理解它。 :)
    • 你不能只制作一个键值 MySQL 表,然后将该表加载到缓冲池中而不是使用 Memcached 吗?为什么要使用 Memcached?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多