InnoDB存储引擎
InnoDB存储引擎支持事务,其设计目标主要是面向在线事务处理(①OLTP)的应用。其特点是是行锁设计、支持外键,并支持类似Oracle的非锁定读,即默认读取操作不会产生锁。从Mysql数据库5.5.8版本开始,InnoDB 是默认的存储引擎。
InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,并实现SQL标准的4种隔离级别,默认为REPEATABLE 级别。同时,使用一种被称为next-key locking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDB存储引擎还提供插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用功能。
对于表中数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,因此每张表的存储都是按照主键的顺序进行存放。如果没有显示地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此为主键。
InnoDB存储引擎是Mysql数据库最为常用的一种引擎,其处理插入/更新操作的速度平均为800次/秒,而Facebook、Google、Yaohoo 等公司的成功应用已经证明了InnoDB存储引擎具备的高可用、高性能
以及高可扩展性。在以后的章节我会根据《Mysql技术内幕 InnoDB存储引擎》给大家总结InnoDB,并加上自己的理解和一些查阅的资料。
InnoDB存储引擎的版本
InnoDB各版本功能对比
版本 | 功能 |
老版本InnoDB | 支持ACID、行锁设计、MVCC |
InnoDB1.0.x② | 增加了compress(压缩)和dynamic(动态)页格式 |
InnoDB1.1.x | 增加了Linux AIO(异步IO)、多回滚段③ |
InnoDB1.2.x | 增加了全文索引支持、在线索引添加 |
①
从Mysql5.1版本时,Mysql数据库允许存储引擎开发商以动态方式加载引擎,所以InnoDB1.0.x也称InnoDB plugin(插件)
③
InnoDB现在可以使用多个回滚段来提升性能和可扩展性,并且能够极大地增加并发事务处理数量,而之前的几个 InnoDB版本最多只能处理 1023个并发事务处理操作。
现在 MySQL5.5 可以支持高达 128 KB 的并发事务处理操作,创建回滚数据(undo data)(来自插入、更新和删除操作)。这种改进措施减少了在单个回滚段上的互斥争用,增加了吞吐量。
补充
DDL:数据库模式定义语言,关键字:create
DML:数据操纵语言,关键字:Insert、delete、update
DCL:数据库控制语言 ,关键字:grant、remove
DQL:数据库查询语言,关键字:select