一、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 缓存池文档地址

Mysql InnoDB存储引擎【二】InnoDB Buffer Pool 缓存池相关推荐

  1. 「MySQL 数据库 存储引擎」InnoDB和MyIsAm的区别

    我们应该深刻意识到Mysql数据库的核心为存储引擎 MySql数据库的插件型体系结构,可以使用不同的存储引擎-- 而每个存储引擎都有各自的特点,开发人员可以根据不同的业务和应用建立不同的存储引擎表. ...

  2. MySQL常用存储引擎之Innodb

    在MYSQL5.5版本之后,具体是在5.58版本之后,InnoDB代替MYISAM称为MYSQL的默认存储引擎,说实话呢,是一个非常重要的事情,之前在使用MYSQL时,说别人使用InnoDB,而不用m ...

  3. 修改MySql默认存储引擎为InnoDB,启动报错

    修改my.cnf [mysqld] 后加入 default-storage-engine=InnoDB后 否启动mysql时会遇到下述错误: [ERROR] Plugin 'InnoDB' init ...

  4. MySQL技术内幕 InnoDB存储引擎 之 InnoDB体系架构

    后台线程 1.Master Thread 2.IO Thread 3.Purge Thread 4.Page Cleaner Thread  内存 重做日志在以下三种情况下将重做日志缓存中的内容刷新到 ...

  5. java innodb存储引擎_MySQL InnoDB存储引擎的事务隔离级别

    我们知道,在关系数据库标准中有四个事务隔离级别:未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed):只能读取 ...

  6. 《MySQL技术内幕:InnoDB存储引擎》第2版笔记

    第1章 MySQL体系结构和存储引擎 1.1 定义数据库和实例 在MySQL数据库中,数据库文件可以是fm.MYD.MYI.ibd结尾的文件. MySQL数据库由后台线程以及一个共享内存区组成. My ...

  7. mysql技术内幕innodb存储引擎——表索引算法和锁_(转)Mysql技术内幕InnoDB存储引擎-表索引算法和锁...

    表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...

  8. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

  9. MySQL技术内幕InnoDB存储引擎(表索引算法和锁)

    表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...

最新文章

  1. vs按f5没反应_《死神vs火影》中最受欢迎的游戏角色,仙鸣当之无愧上榜
  2. redis持久化的几种方式
  3. Python中元组的介绍以及常见操作
  4. Mac是大脑,iPad是四肢 如何实现的呢?右键而已
  5. 三个简单的问题,让你顺势而为
  6. redis——数据结构(字典、链表、字符串)
  7. 精选| 2020年12月R新包推荐(第49期)
  8. 数组——询问学号(洛谷 P3156)
  9. org.springframework.dao.InvalidDataAccessApiUsageException
  10. Spring学习总结(28)——Spring获取request对象的几种方法及线程安全性总结
  11. 【Docker篇之三】Dockerfile创建镜像
  12. headfirstjava 学习笔记(chapter1-5)
  13. 接口调用频繁限制,接口限制流量
  14. XP IIS下配置.net的问题总结与简单解决方法
  15. Java8 新特性之流式数据处理
  16. python 操作微信订阅号(2022.7.1)
  17. DC综合基础知识学习
  18. 自动关机及取消代码,bat文件代码
  19. 歪写数学史(三个“L”)
  20. HTML+CSS写个人简历

热门文章

  1. Python3.X中的print
  2. 【数据结构】基于二叉链表的二叉树结点个数的统计
  3. 购买二手钢琴与新钢琴的利弊
  4. unity实现现实书籍
  5. 复制东西老你的计算机需要管理员,win10电脑复制文件到C盘需要管理员权限的解决方法...
  6. 用编码控制呼叫转移的设置
  7. python利用flask搭建接口中转数据给DLL文件
  8. linux命令解压tar命令,菜鸟学Linux命令:tar命令 压缩与解压缩
  9. 广西男子酒驾冲撞宵夜摊多人受伤 民众自发抬车救人
  10. 2021.11.6洛谷凸边形对角线——c语言