1. 特点
- 支持事务
- 支持行锁
- 支持外键
- 支持类似于Oracle 的非锁定读,即默认读取操作不会产生锁
2. InnoDB 中的数据
- InnoDB 存储引擎将数据放在一个逻辑的表空间中,由InnoDB 存储引擎自身进行管理,对外透明
- 从MySQL 4.1 版本开始,可以将每个InnoDB 存储引擎的表单独存放到一个独立的ibd 文件中
- InnoDB 存储引擎支持用裸设备(row disk)来建立其表空间
3. InnoDB 与高并发性、高性能、高可用
- InnoDB 通过使用多版本并发控制(MVCC)来获得高并发性
- 实现了SQL 标准的4中隔离级别,默认为repeatable 级别
- 使用一种被称为next-key locking 的策略来避免幻读现象的产生
- InnoDB 提供了插入缓存(Insert Buffer)功能
- InnoDB 提供了二次写(double write)功能
- InnoDB 提供了自适应哈希表索引(adaptive hash index)功能
- InnoDB 提供了预读(read ahead)功能
- InnoDB 提供刷新邻接页(Flush Neighbor Page)
- InnoDB 提供异步IO(Async IO)
- InnoDB 采用聚集的方式对表中的数据进行存储,如果没有显示的在表定义时指定主键,InnDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。从而数据能按主键的顺序进行存放。
4. InnoDB 存储引擎的版本
版本 | 功能 |
---|---|
老版本 InnoDB | 支持ACID、行锁设计、MVCC |
InnoDB 1.0.x (官方称为 InnoDB Plugin) | 继承了上述版本的所有功能,增加了compress和dynamic页格式 |
InnoDB 1.1.x | 继承了上述版本的所有功能,增加了Linux AIO、多回滚段 |
InnoDB 1.2.x | 继承了上述版本的所有功能,增加了全文索引支持、在线索引添加 |