InnoDB体系架构
InnoDB存储引擎是一个完整支持ACID事务的MySQL存储引擎, 其特点是 行锁设计, 支持MVCC, 支持外键, 提供一致性非锁定读, 同时被设计用来最有效的利用以及使用内存和CPU
1.InnoDB体系架构
图中简单显示了InnoDB的存储引擎的体系架构, 从图中可见,InnoDB有多个内存块, 可以认为这些内存块组成了一个大的内存池, 负责如下工作 :
- 维护所有进程/线程需要访问的多个内部数据结构
- 缓存磁盘上的数据, 方便快速地读取, 同时在对磁盘文件的数据修改之前在这里缓存
- 重做日志(redo log)缓冲
后台线程的主要作用是负责刷新内存池中的数据, 保证缓冲池中的内存缓存是最新的数据.此外将已修改的数据文件刷新到磁盘文件, 同时保证数据库发生异常的情况下InnoDB能恢复到正常运行状态
1>后台线程
InnoDB存储引擎是多线程的模型, 因此后台有多个不同的后台线程, 负责处理不同的任务
-
Master Thread
主要负责将缓冲池的数据异步刷新到磁盘, 保证数据的一致性, 包括脏页的刷新, 合并插入缓冲(INSERT BUFFER), UNDO页的回收
-
IO Thread
在InnoDB存储引擎中大量使用了AIO(Async IO)来处理写IO请求, 这样可以大大