buffer pool和查询缓存的区别

发布时间:2024年01月23日

在学习buffer pool的时候我产生了疑问,buffer pool和查询缓存是一个东西吗?

结论:不是一回事。

buffer pool

buffer pool我之前介绍过,它的出现是为了提高查找效率,缓存磁盘上的数据页。

buffer pool虽说是内存中的一段连续空间,但是它实际上是介于存储引擎和数据层之间。可以把这个连续的空间看成是磁盘,先去这个“磁盘空间”去找,如果找不到再去实际的磁盘寻找,找到后存到buffer pool。

查询缓存

看上图,查询缓存是一个sql经历的第一个阶段,sql语句都会生成一个hash值作为key,查询结果就是value,有结果返回,没有结果生成hash值,进入语法解析阶段、优化器生成执行计划。

buffer pool在查询流程中的作用

有一个冷知识,数据和索引都是B+树进行管理的,B+树的根节点都是放在内存中的,也就是放在Buffer pool中。之后二分法找到下一层的非叶子节点,存到buffer pool进行操作,当然如果数据页缓存在buffer pool中就直接使用buffer pool中的缓存页,减少了磁盘的io交互。

总结

查询缓存和BufferPool完全是两个东西。查询缓存位于server层,BufferPool是Innodb数据引擎中的核心组件。

文章来源:https://blog.csdn.net/zyjzyjjyzjyz/article/details/135777015
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。