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 版本引入,回刷脏页数据到磁盘