NoteDeep

InnoDB的整体架构


InnoDB兼具高可靠性和高性能。 在MySQL 5.6中,InnoDB是默认的官方推荐的存储引擎。

InnoDB的整体架构图:(请忽略图中的XTraDB)

InnoDB多线程模型:

多线程

InnoDB存储引擎是多线程的模型,因此其后台有多个不同的线程,负责处理不同的任务:
  1. Master Thread 一个核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证 数据的一致性,包括脏页的刷新、合并插入缓冲、UNDO页的回收等。
  2. IO Thread InnoDB存储引擎大量使用了AIO(Async IO)来处理写IO请求,这样极大地提高了数据库的性能。IO Thread的工作主要是负责这些IO请求的回调处理。
  3. Purge Thread 事务被提交后,其所使用的undolog可能不再需要,因此需要Purge Thread来回收已经使用并分配的undo页。
  4. Page Cleaner Thread Page Cleaner Thread是在InnoDB1.2.x版本中引入的。其作用是将之前版本中脏页的刷新操作都放入到单独的线程中来完成。目的是为了减轻原Master Thread的工作及对于用户查询线程的阻塞,进一步提高InnoDB存储引擎的性能。

InnoDB内存数据对象图:



评论列表

    InnoDB的整体架构