这就是我所理解的:
Innodb中的缓冲池:它存储来自Sql表的索引和数据并将其缓存以供将来查询,因此不需要一直打扰Mysql。
Memcached :这用于存储从Innodb收到的数据并对其进行缓存,因此无需每次都询问Innodb。
他们是不是都在做同样的事情我在Ram中缓存响应所以它更快并减少了I / O和sql解析?那么为什么要在Innodb缓冲池顶部添加另一层memcached?
答案 0 :(得分:2)
缓冲池由InnoDB管理。执行查询所需的所有内容都必须位于缓冲池中,以便在从磁盘读取新数据以在当前查询中使用时,如果需要,可以逐出该数据。
表之间的连接仍然完成,即使表位于缓冲池中,也可能成本很高。
另一方面,Memcached 是一个键值存储。不能对存储在那里的数据执行关系操作,只需插入和检索。它也是分布式的,可以构建庞大的集群。
通常,长时间运行或重度查询的结果会在memcached中存储一段时间,从而加载数据库。