一、架构

InnoDB 架构图.jpg

1、缓存

Buffer Pool

(1) 数据页内存管理
实现:分代管理LRU算法(类JVM)
innodb-buffer-pool-管理.png

Redo Log Buffer

(1) 刷盘时机

  • Master Thread 定时刷盘:每隔1s
  • redo log buffer空间使用率超过50%
  • 事务commit

    Additional Buffer Pool

    额外数据结构存储区,比如buffer control block

    2、后台线程

    Master Thread

    职责
    缓存管理大管家,包含了缓存管理的所有功能:缓存合并(insert buffer)、脏页刷盘、数据页回收(undo log)。其中部分职责可以下放到其他线程中去执行

    I/O Thread

    职责
    负责文件I/O请求的回调,包含4种线程类型。
    image.png

    Purge Thread

    职责
    负责回收已经分配使用的undo页。

    Page Clean Thread

    职责
    负责脏页刷盘工作。

二、设计

1、Write Ahead Log

随机写优化为顺序写。redo日志用于保障,已提交事务的ACID特性。

2、Read Ahead

3、Group Commit

  • 减少IO次数
  • 提高刷盘(flush)收益率