数据库缓存 buffer pool详解

什么是buffer pool

buffer pool, 又称之缓存池, 是mysql中为了提升查询性能而引入的缓存, 如果每次查询和修改都去操作磁盘的话, 性能就会很差, 从而引入

Buffer Pool包含多个缓冲页(默认大小通常为16KB),每个缓冲页都有对应的控制信息,如表空间编号、页号等。当数据库请求数据时,首先会在Buffer Pool中查找所需的数据页。如果找到了(称为缓存命中),则直接使用该数据;如果没有找到(称为缓存未命中),则从磁盘读取数据页到Buffer Pool中,并可能替换掉Buffer Pool中最近最少使用的(LRU)数据页来为新数据腾出空间。

修改的时候也是会写入内存

但是因为buffer pool是基于内存的,所以空间不可能无限大,他的默认大小是128M,当然这个大小也不是完全固定的,我们可以调整,可以通过修改MySQL配置文件中的innodb_buffer_pool_size参数来调整Buffer Pool的大小。

复制代码
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';  -- 查看buffer pool

SET GLOBAL innodb_buffer_pool_size = 512M; -- 修改buffer pool

buffer pool和query cache的区别

在Innodb中,除了buffer pool,还有一个缓存层是用来做数据缓存,提升查询效率的,很多人搞不清楚他和buffer pool的区别是什么。

首先就是他们目的和作用不同。Buffer Pool用于缓存表和索引的数据页,从而加速读取操作;而Query Cache用于缓存查询结果,减少重复查询的执行时间。

Buffer Pool主要与存储引擎InnoDB相关,而Query Cache也支持其他的引擎,如MyISAM等。所以,Query Cache是位于Server层的优化技术,而Buffer Pool 是位于引擎层的优化技术。

需要注意的是,在MySQL 5.7版本中,Query Cache已经被标记为废弃,并在MySQL 8.0版本中彻底被移除了。

相关推荐
龙亘川1 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路1 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna2 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白2 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
晚安日记wanna2 小时前
索引建了却不走?7 个失效原因逐层排查
数据库·mysql·性能优化
KID1412号2 小时前
PostgreSQL入门
数据库·postgresql
Elastic 中国社区官方博客2 小时前
使用 Lucene 搜索你的 Bean — 索引
java·大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
ShineWinsu4 小时前
对于Redis:主从复制的解析
linux·数据库·c++·redis·缓存·面试·主从复制
许彰午4 小时前
03-Linux环境准备依赖包内核参数与用户组
linux·运维·服务器·数据库
阳光九叶草LXGZXJ4 小时前
达梦数据库-报错-16-MERGE INTO提示:无效的列名[XX]
linux·运维·数据库·sql·学习