作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 mysql 架构,我遇到了两个概念。第一个是查询缓存,我的理解是它存储了至少运行过一次的查询,如果查询处理器看到缓存在那里的查询,它就不再去解析器并将结果直接带到缓存中。
但是,还有缓冲池,它是存储引擎缓冲管理器的一部分,根据我的理解,它有点做同样的事情。
所以我的问题是,如果逻辑层有缓存,为什么物理层也需要缓存?我在想,如果在查询缓存中找到一个查询,它将永远不会在缓冲池中搜索,如果在缓存中找不到该查询,那么它也永远不会从缓冲池中检索到。我错过了什么吗?
最佳答案
对于查询缓存,您已经掌握了它。它基于查询映射到精确查询结果的原始文本。它存在严重的缩放问题,这就是为什么 MySQL-8.0 removed it .
innodb缓冲池,是数据库底层数据和索引页的存储。它确保所有最近使用的数据都在磁盘之外,并且能够在不求助于(与 ram 相比)慢得多的存储的情况下进行查询。
因此,缓冲池服务于对同一数据的所有查询,而查询缓存仅服务于特定查询(以较大的可扩展性成本)。
关于mysql - mysql查询缓存和缓冲池有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61333318/
我是一名优秀的程序员,十分优秀!