谈一谈 InnoDB
-
InnoDB是MySQL的默认事务型引擎,用来处理大量短期事务
-
InnoDB的性能和自动崩溃恢复特性使得它在非事务型存储需求中也很流行,所以我们优先考虑InnoDB
-
InnoDB的数据存储在表空间中,表空间由一系列数据文件组成。MySQL4.1之后,InnoDB可以把每个表的数据和索引放在单独的文件中
-
InnoDB采用mvcc来支持高并发,并且实现了4个标准的隔离级别。并且支持行级锁。
默认级别是可重复读(REPEATABLE READ),并且通过间隙锁策略来防止幻读,间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定防止幻行的插入 -
InnoDB表是基于聚簇索引建立的,InnoDB的索引结构和其他的存储引擎有很大不同,聚簇索引(聚簇索引是一种数据的存储方式,它的数据行只存放在索引(B+树)的叶子中,内部节点不存放数据。)对主键查询有很高的性能,不过它的二级索引中必须包含主键列,所以如果主键很大的话,其他所有的索引都会很大,因此如果表上的索引很多的话,主键应该尽量小
-
InnoDB的存储格式是平台独立的,可以将数据和索引文件从一个平台复制到另一个平台
-
InnoDB内部做了很多优化: