MySQL02-InnoDB存储引擎

1.InnoDB 体系架构

  • 维护所有进程、线程需要访问的多个内部数据结构
  • 缓存磁盘上的数据,方便快速读取,同时在对磁盘文件的数据修改之前在这里缓存
  • 重做日志(redo log)文件
    在这里插入图片描述

后台线程

  1. Master Thread:将缓存池中的数据异步刷新到磁盘,保证数据的一致性
  2. IO Thread:InnoDB 中使用异步IO(AIO)来处理IO请求
  3. Purge Thread:回收已经使用并分配的undo页 ??
  4. Page Cleaner Thread:将之前版本中Master Thread中的脏页刷新操作放入到该线程完成

脏页:缓存池中的页和磁盘上的页数据不一致,即对缓存池中的页进行了修改操作

内存

  1. 缓存池

数据文件是按照的方式存储在磁盘上的,在数据库系统中,由于CPU 与 磁盘之间的速度鸿沟,基于磁盘的数据库系统通产使用缓存池(一块内存区域)的技术来提高数据库的整体性能。

缓存磁盘上的数据,方便快速读取
对于页的修改操作,首先修改缓存池中的页,然后再以一定的频率刷新到磁盘上(刷新回磁盘的操作并不是每次修改页时触发的,而是一种称为 Checkpoint 的机制刷新回磁盘)
在这里插入图片描述

  1. 缓存池的管理
  • LRU(Latest Recent Used,最近最少使用)算法:频繁使用的页在列表前段,最少使用的在后端。

2.Checkpoint 技术

  • Checkpoint 技术的目的是解决以下几个问题
    1) 缩短数据库的恢复时间
    2) 缓存池不够用时,将脏页刷新到磁盘
    3) 重做日志不可用时,刷新脏页

重做日志(Redo log):记录数据页的修改信息,防止数据丢失。当由于发生宕机而导致数据丢失时,通过重做日志来完成数据恢复

Undo log:记录数据页被修改前的信息,可以使用undo日志来实现回滚操作,保证事务的一致性

  • Checkpoint 分类
    1)Sharp Checkpoint:数据库关闭时将所有脏页刷新回磁盘
    2)Fuzzy Checkpoint:运行时只刷新一部分脏页(InnoDB运行时使用)

3.Master Thread的工作方式

内部由多个循环组成
1)主循环:

  • . 分为每秒操作:刷新日志缓存(redo log)(总是),至多刷新100个脏页(可能),合并至多插入缓存(可能)。
  • . 每10秒操作:基本操作就是,刷新日志缓存(redo log)(总是),刷新100个脏页(可能),合并至多5个插入缓存(总是),删除无用的Undo页(总是),刷新100个或10个脏页(总是)。

2)后台循坏:数据库空闲或关闭的时候,切换到该循环
3)刷新循环
4)暂停循环

4.InnoDB关键特性

  1. 插入缓存
    Insert Buffer使用必须同时满足:
    1)索引是辅助索引
    2)索引不唯一

  2. 两次写

  3. 自适应哈希索引

  4. 异步IO

  5. 刷新邻接页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值