初识innodb

开始学习mysql存储引擎,innodb引擎在mysql中的地位如日中天,当红小生,正好有点时间就搞点事.

innodb自诞生出来就是一个很重要的存储引擎,为了让他强大起来,oracle投入了大量的资源,改善了他的性能,在mysql及5.6及5.7中已经成为默认的表引擎了,同时也是mysql默认的事物型引擎也是最重要 使用最广泛的存储引擎.

    如何查看表引擎

    1 show create table xxx;

    2      show table status like 'xxx'  \G;

进入正题

 innodb概览

 innodb 采用mvcc来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读,并通过间隙锁防止幻读.

 innodb表是基于聚簇索引建立的,对主键查询有很高性能,但是他的二级索引种必须包含主键列.

innodb内部做了很多优化,且其行为是非常复杂的,尽量去阅读以下官方手册中的Innodb事务模型和锁这一节

 innodb特性表

Storage limits64TBTransactionsYesLocking granularityRow
MVCC(多版本并发控制)YesGeospatial data type supportYesGeospatial indexing supportYes[a]
B-tree indexesYesT-tree indexesNoHash indexesNo[b]
Full-text search indexesYes[c]Clustered indexesYesData cachesYes
Index cachesYesCompressed dataYes[d]Encrypted data[e]Yes
Cluster database supportNoReplication support[f]YesForeign key supportYes
Backup / point-in-time recovery[g]YesQuery cache supportYesUpdate statistics for data dictionaryYes

 

四种标准隔离级别

 1 未提交读 脏读

 2 提交读  不可重复读

 3 可重复读 有可能会出现幻读(innodb解决了这个问题)

 4 可串行化  在实际应用种很少用这个级别,只有在非常需要确保数据一致且可以接收没有并发的情况下才考虑用

nickname
content