mysql - 是不是 Memcached 和 Innodb 中的 Buffer pool 做同样的工作?

标签 mysql caching memcached buffer innodb

我是这样理解的:

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/

相关文章:

java.sql.SQLException : Connection com. mysql.jdbc.JDBC4Connection@1ab9c42 已关闭

.net - Linq to SQL 缓存依赖

http - Google Cloud Storage 文件缓存和过期问题

php - 强制 memcached 写入池中的所有服务器

php - 查询返回空

mysql - 拆分一列数据

java - 无法在 Java 中使用 cachingHttpClient 缓存 HttpResponse?

java - Google App Engine 的 Memcache (Java) 是全局缓存吗?

node.js - Memcached:如何修改最大项目大小?

python - 导入错误 : No module named 'MySQL'