一:InnoDB的版本
| 版本 | 功能 |
|---|---|
| mysql5.1静态版老版本InnoDB | 支持ACID,行锁设计、MVCC |
| mysql5.1动态版InnoDB Plugins | 新增compree和dynamic页格式 |
| mysql5.5版InnoDB | 增加了linux的 AIO、多回滚段 |
| mysql5.6I版nnoDB | 增加全文索引、在线索引添加 |
二:InnoDB的体系架构
InnoDB存储引擎 有多个内存块,组成一个大的内存池。
后台线程:主要负责刷新内存中的数据,保证缓存池中的缓存内存数据是最近的数据。同时负责将已修改的数据文件刷新到磁盘,保证数据库发生异常能恢复到正常状态。
主要包含;Master Thread、io Thread、Purge Thread、page cleaner Thread
Master Thread:核心线程,主要负责将缓冲池的数据刷新到磁盘,保证数据一致性,同时负责脏页刷新、undo页回收、合并插入缓冲(insert buffer)
io Thread:InnoDB存储引擎中使用了大量AIO来处理写请求,io Thread主要负责这些请求的回调,主要包含write、read、insert buffer、log io thred。
Purge Thread:回收已经使用并分配的undo页,1.1版本之前由master Thread负责,1.1版本开始可以Purge Thread独立负责,减轻核心线程压力,提高性能,以及cpu的使用率。
page cleaner Thread:1.2版本开始引入的,负责脏页的刷新。减轻master Thread压力,提高性能,以及cpu的使用率。
内存
InnoDB数据也是存在磁盘中,以页的方式进行管理。由于cpu、磁盘性能问题,基于磁盘的数据库系统通常采用缓冲池技术提高性能。缓冲池可以看做为内存区域,读取数据时,先磁盘页fix到缓冲池,下次读取先找缓冲池,在找磁盘。对于操作,也是先更新缓冲池,然后基于一定的频率刷新到磁盘。也就是checkPoint机制。