InnoDB存储引擎

时间:2021-12-18 04:10:56

1、InnoDB存储引擎支持事务行锁以及外键,主要面向在线事务处理(OLTP)的应用,是MySQL5.5.8之后默认的存储引擎

 

2、InnoDB的体系架构主要包括两部分:

(1)后台线程:负责刷新内存池中的数据,以及将已修改的数据文件刷新到磁盘文件。

包括Master Thread、IO Thread、Purge Thread、Page Cleaner Thread等。

(2)内存池

包括缓冲池、LRU List、Free List、Flush List、重做日志缓冲(redo log buffer)、额外的内存池等。

 

3、InnoDB是基于磁盘存储,最小管理单位是读操作时首先将从磁盘读到的页存放在缓冲池中(若页已存在缓冲池中,则直接读取缓冲池),写操作时首先修改在缓冲池中的页,然后通过Checkpoint的机制刷新回磁盘。

 

4、缓冲池中页的类型有:索引页数据页、undo页、插入缓充、自适应哈希索引、InnoDB存储的锁信息、数据字典信息等。

 

5、数据库中的缓冲池是通过LRU算法进行管理的,InnoDB对LRU算法做了一些改造,在缓存列表中加入了midpoint位置,每次读取的新页先放到midpoint位置,过一定时间再插入表头,这样做可防止热点数据被某些准备工作刷出。

 

6、InnoDB关键特性:

(1)插入缓冲(Insert Buffer)

(2)两次写(Double Write)

(3)自适应哈希索引(Adaptive Hash Index)

(4)异步IO(Async IO)

(5)刷新邻接页(Flush Neighbor Page)