插入缓冲
插入缓冲Insert Buffer和数据页一样,是物理页的一个组成部分(并不是内存缓冲池的一种)
插入时按照主键建立B+索引,当有另一个非聚集的辅助索引,我们需要离散的访问非聚集索引页,如果同时插入两颗B+树,则会降低插入效率
Innodb开创性的使用插入缓冲,对于非聚集索引的插入或更新操作,不是直接插入到索引页中,而实先判断插入的非聚集索引页是否在缓冲池,如果在则修改缓冲池中的索引页,如果不在,则放入一个该索引页在缓冲池中。最后再以一定的频率执行合并操作,将缓冲池的索引页刷入磁盘
使用条件
两次写
解决数据可靠性
当数据库宕机,某个页只写了一部分,我们称为部分写失效(partial page write),而redo log是对整个页的操作,我们即使执行了redo log,也无法恢复丢失的半页,因此我们需要一个半页的副本。
当发生部分写失效的时候,我们先通过副本恢复这半页,然后执行redo log。
这就是doublewrite
