简介
- innodb是基于表的存储引擎
- 支持事务,行锁设计,mvcc,外键,提供一致性非锁定读 。
1:概览
InnoDB存储引擎主要包含后台线程和内存池,内存池的主要又是缓冲池。
- 后台线程主要进行内存和磁盘之间双向的数据刷新
- 内存主要缓存磁盘上的数据
2:后台线程
2.1:Master thread
主要将缓冲池中的数据异步刷新到磁盘,包括脏页的刷新等
2.2:IO thread
2.3:Purge thread
3:内存
内存主要包含缓冲池
3.1:缓冲池
InnoDB存储引擎是基于磁盘的,并将其的记录按照页的方式进行管理。但是由于CPu读取速度和磁盘速度之间的差距,需要使用缓冲池来提升数据库的性能
读取与修改
在数据库中进行读取页的操作时,首先讲从磁盘读取到的页存放到缓冲池中,这个过程称为“FIX”在缓冲池中。下一次再读取相同的页时,首先判断该页是否在缓冲池中。若在缓冲池中,称该页在缓冲池中被命中,直接读取该页。否则,读取磁盘上的页。
要对数据库的数据进行修改时,先要修改缓冲池中页,然后再在合适的时候刷新到磁盘。注意并不是修改后就刷新到磁盘,而是通过一种称为Checkpoint的机制刷新回磁盘。