InnoDB存储引擎
1、InnoDB存储引擎支持事务、行锁以及外键,主要面向在线事务处理(OLTP)的应用,是MySQL5.5.5之后默认的存储引擎。
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)