Mysql InnoDB存储引擎【二】InnoDB Buffer Pool 缓存池

一、Innodb 架构图

1.整体架构图-内存结构 & 磁盘结构

在这里插入图片描述

二、Buffer Pool 缓存池

1. 缓存池实现

采用页面链表表(划分可能容纳多行的页) + 中点插入策略(新增加的页插入到链表中间,中点位置3/8)。

2. 中点插入策略(优化版LRU)

  1. 中点插入策略优点:最小化进入缓冲池并且再也不会被访问的数据量,确保频繁访问的热点页扔存在缓存池中。
  2. 相比LRU算法优化点:所有新读的页面都被插入到LRU列表尾部的3/8处。当这些页面第一次在缓冲池中被访问时,它们会被移动到列表的前面(最近使用的结束)。因此,从未被访问过的页面永远不会出现在LRU列表的前面部分,并且比使用严格的LRU方法更快地“老化”。这种安排将LRU列表分为两个部分,插入点的下游页面被认为是“旧的”。
    缓存池抗扫描优化点参数:
    (1).innodb_old_blocks_pct: 37修改插入位点 3/8.
    (2).innodb_old_blocks_time: 1000(毫秒)第一次访问页之后的指定时间内再次访问该页,该页不会被移动到LRU队列头部。,防止一个页被快速连续的访问几次后,再也不访问。

3. 缓存池预读技术

  1. 何为预读技术
    预读技术是指请求是一个I/O请求,异步地预取缓冲池中的多个页,以应对即将使用这些页的情况。

  2. 线性预读技术:
    它根据按顺序访问的缓冲池中的页面来预测可能很快需要哪些页面。通过配置参数innodb_read_ahead_threshold,可以通过调整触发异步读请求的连续页面访问次数来控制InnoDB何时执行预读操作。在添加此参数之前,InnoDB只会在读取当前盘区最后一页时计算是否对整个下一个盘区发出异步预取请求。
    优化参数: Innodb_read_ahead_threshold:56

  3. 随机预读技术:它根据缓冲池中已经存在的页面预测何时可能很快需要页面,如果缓存池中发现有相同范围的页,如果在缓冲池中发现同一个范围中有13个连续的page, InnoDB会异步发出一个预取范围剩余page的请求。

4. Buffer Pool 缓存池默认大小

默认大小是128M。

mysql 缓存池文档地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值