InnoDB的关键特性

1.插入缓冲,主要是针对非主键索引的插入和更新操作,如果是主键索引,顺序的插入就可以了,数据页的存放还是主键id的执行顺序,但是非主键索引,叶子节点的插入不再是顺序的,这个时候需要离散的访问非聚集索引,插入性能会变得很低。

 

插入缓冲的作用就是,对于非聚集索引的插入和更新,不是每一次直接插入索引页中,而是先判断非聚集索引页是否里,如果存在,那么直接插入,不存在就先插入到缓冲池中,然后以一定的频率合并缓冲区和索引页。

 

插入缓冲使用满足两个条件,1,非聚集索引, 2,索引不是唯一的

 

插入缓冲存在一个问题,在写密集的时候,插入缓冲会占用过多缓冲池内存,默认情况下最大可以占用1/2缓冲池内存。

 

2.两次写

 

如果说插入缓冲给InnoDB带来的是性能,那么两次写给InnoDB带来的就是数据的可靠性,如果在写一个页的时候,服务器宕机,那么就会导致这个页只写了一部分的情况,我们称这种情况叫做写失效,两次写就是准备一个副本,当写失效的时候,通过写副本来恢复原来的数据,在进行重做,至于如果进行,InnoDB存储引擎提供了一个两次写缓冲,大小为2M,另一个就是物理磁盘上共享表空间中连续的128个页。

 

当操作系统将页写入磁盘的时候宕掉了,那么在恢复过程中,InnoDB存储引擎可以从共享表空间中的doublewrite中找到该页的副本,然后将副本拷贝到表空间,在做重用日志。

 

3.自适应哈希索引

 

哈希是一种非常快的查找方法。官方的数据是,使用自适应哈希索引后,读取和写入数据可以提高2倍,对于辅助索引的的链接操作,性能可以提高至5倍

你可能感兴趣的:(数据库)