1、InnoDB主要引擎特色数据库
InnoDB是Windows发行版下默认的存储引擎,它有如下特色:并发
1)、支持事务,主要面向事务处理(OLTP)方面的应用函数
2)、行锁设计,支持外键高并发
3)、将数据放入一个逻辑的表空间性能
4)、使用多版本并发控制(MVCC)来得到高并发性,而且实现了SQL标准的四种隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE,默认为REPEATABLE级别;操作系统
5)、使用next-key locking策略避免幻读现象;设计
6)、提供了插入缓冲、二次写、自适应哈希索引、预读等功能日志
7)、表数据采用汇集方式索引
2、关键特性事务
1、插入缓冲
对于非汇集索引的插入或更新操做,不是每一次都直接插入索引页。而是先判断插入的非汇集索引页是否在缓冲池中,若在则直接插入,不然先放入插入缓冲池中。
插入缓冲需知足两个条件:
1)索引是辅助索引
2)索引不是惟一的
可经过命令SHOW ENGINE INNODB STATUS查看插入缓冲信息。
插入缓冲带来的是性能的提升。
2、两次写
两次写带来数据的可靠性;
解决部分写失效问题:当数据库正在从内存向磁盘写一个数据页时,数据库宕机,从而致使这个页只写了部分数据
原理图:
组成部分:
内存中的doublewrite buffer,大小2M
物理磁盘上共享表空间中连续的128页,两个区,共大小2M
工做过程:
当缓冲池的脏页刷新时,并不直接写磁盘,而是先将脏页拷贝到内存中的doublewrite buffer中,而后该buffer分两次写,每次写入1M到共享表空间的物理磁盘上,而后当即调用fsync函数同步磁盘,避免缓冲写带来的问题。若是操做系统在将该页写入磁盘的过程当中崩溃了,则在恢复过程当中,InnoDB引擎可从共享表空间中的doublewrite中找到页的一个副本,将其拷贝到表空间文件,而后重作日志。
可以使用skip_innodb_doublewrite禁用两次写功能。
3、自适应哈希索引
InnoDB存储引擎会监控对表上的索引的查找,若观察到创建哈希索引能够带来速度的提高则创建哈希索引。InnoDB会自动根据访问的频率和模式来为某些页创建哈希索引。