InnoDB 体系架构

内存池

  • 缓冲池 Buffer Pool
  • 重做日志缓冲 Redo Log Buffer
  • 额外内存池

后台线程

Master Thread

  • undo 页回收
  • 脏页刷新
  • 合并插入缓冲

IO Thread

  • 使用 AIO 进行处理 IO 请求
  • AIO、NIO、BIO 的区别
    • AIO — 异步非阻塞 IO
    • NIO — 异步阻塞 IO
    • BIO — 同步阻塞 IO
  • 为什么在 Java 开发中使用 NIO 较多,而不是 AIO
    • web 开发网络 IO 为主,NIO 已经能满足高并发场景
    • Java 的 AIO 实现不是真正的异步非阻塞 IO,使用线程池模拟这个过程,实际上底层还是同步阻塞 IO(worker 线程),线程数量和 IO 数量受限于线程池大小限制
    • 主流生态上 NIO 为主

Purge Thread

  • 回收 undo log,在 InnoDB 1.1 之前是在 Master Thread 上进行的

Page Cleaner Thread

  • 1.2 版本引入,回刷脏页数据到磁盘

关联