我是这样理解的:
Innodb 中的缓冲池:它存储来自 Sql 表的索引和数据并缓存它以供将来查询,因此它不需要一直打扰 Mysql。
Memcached:用于存储从 Innodb 接收到的数据并对其进行缓存,因此无需每次都询问 Innodb。
他们不是都在做同样的事情,即在 Ram 中缓存响应,这样它会更快并减少 I/O 和 sql 解析吗?那为什么要在 Innodb Buffer pool 之上再加一层 memcached 呢?
最佳答案
缓冲池 由 InnoDB 管理。执行查询所需的一切都必须在缓冲池中,以便在从磁盘读取新数据以用于当前查询时,如果需要,已经存在的数据将被逐出。
即使表在缓冲池中,表之间的联接仍会完成并且可能代价高昂。
Memcached 另一方面是一个键值存储。不能对存储在那里的数据执行任何关系操作,只能插入和检索。它也是分布式的,可以构建巨大的集群。
通常,长时间运行或大量查询的结果会在 memcached 中存储一段时间,从而承担数据库的负载。
关于mysql - 是不是 Memcached 和 Innodb 中的 Buffer pool 做同样的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433651/