MySQL高级--01_1--数据库缓冲池(buffer pool)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


数据库缓冲池(buffer pool)

DBMS 会申请占用内存来作为数据缓冲池,在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool 之后才可以访问。

在这里插入图片描述

1 缓冲池 vs 查询缓存

缓冲池和查询缓存是一个东西吗?不是。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.缓冲池如何读取数据

  1. 缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中
  2. 如果存在就直接读取
  3. 如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进行读取。

在这里插入图片描述

3. 查看/设置缓冲池的大小

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 多个Buffer Pool实例

在这里插入图片描述

5. 引申问题

Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子。

在这里插入图片描述

6.调优策略

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. Buffer Pool的内存淘汰策略

Redis–06–持久化策略—内存优化策略
在这里插入图片描述
在这里插入图片描述

冷热分区的LRU策略

LRU链表会被拆分成为两部分,一部分为热数据,一部分为冷数据。冷数据占比 3/8,热数据5/8。

image.png

数据页第一次加载进来,放在LRU链表的什么地方?

放在冷数据区域的头部

冷数据区域的缓存页什么时候放入热数据区域?

MySQL设定了一个规则,在 innodb_old_blocks_time 参数中,默认值为1000,也就是1000毫秒。

意味着,只有把数据页加载进缓存里,在经过1s之后再次对此缓存页进行访问才会将缓存页放到LRU链表热数据区域的头部。

为什么是1秒?

因为通过预读机制和全表扫描加载进来的数据页通常是1秒内就加载了很多,然后对他们访问一下,这些都是1秒内完成,他们会存放在冷数据区域等待刷盘清空,基本上不太会有机会放入到热数据区域,除非在1秒后还有人访问,说明后续可能还会有人访问,才会放入热数据区域的头部。

8.Redo Log跟Buffer Pool的关系 重做日志 持久性

事务–04—MySQL事务日志----redo日志

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.更新操作的流程:

1.从存储引擎层,拿到数据,记录到Buffer Pool,进一步的返回给Server层

2.server层会把这个数据页里面的数据进行修改

3.调用存储引擎,记录到Buffer Pool

4.Redo Log Undo Log 记录

5.事务提交

image.png在这里插入图片描述

相关推荐

  1. 数据库连接01:连接初始化

    2023-12-09 00:42:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-09 00:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-09 00:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-09 00:42:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-09 00:42:03       20 阅读

热门阅读

  1. 解决Nginx访问php文件直接下载

    2023-12-09 00:42:03       33 阅读
  2. React 好用的工具库

    2023-12-09 00:42:03       35 阅读
  3. 关于 React 如何自定义配置 HighCharts tooltip

    2023-12-09 00:42:03       33 阅读
  4. CentOS 7 安装 Nginx

    2023-12-09 00:42:03       36 阅读
  5. 与脾气不太好的领导,相处原则和相处技巧分享

    2023-12-09 00:42:03       33 阅读
  6. flutter布局详解及代码示例(补充)

    2023-12-09 00:42:03       34 阅读
  7. MySQL 错误 1292 是什么?怎么解决?

    2023-12-09 00:42:03       38 阅读
  8. MySQL查看和修改时区

    2023-12-09 00:42:03       39 阅读
  9. 数据结构详解各种算法

    2023-12-09 00:42:03       35 阅读