Mysql 知识积累
B树和B+树的区别
- 相同点:都有根节点和叶子节点,叶子节点都是有顺序的
- 不同点:B+树在B树基础上叶子节点增加了双向指针,叶子节点上都冗余了一份根节点
InnoDB与MyISAM区别
- InnoDB支持事务,MyISAM不支持事务
- InnoDB支持行锁,MyISAM支持表锁
- InnoDB支持外键,MyISAM不支持
- InnoDB是聚集索引,MyISAM是非聚集索引
事务特性
- 原子性
- 一致性
- 隔离型
- 持久性
事务隔离级别
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
Read Uncommitted | Y | Y | Y |
Read Committed | N | Y | Y |
Repeatable Read | N | N | Y |
Serializable | N | N | N |
- 读未提交(Read Uncommitted)容易产生脏读,不可重复读,幻读问题
- 读已提交(Read Committed)容易产生不可重复读,幻读问题
- 可重复读(Repeatable Read)是mysql默认的事务隔离级别机制,容易产生幻读问题但是innodb存储引擎除外
- 串行化(Serializable)不会产生任何问题但是需要加读锁,会导致性能问题
- 脏读指读取到其它事务未提交的数据
- 不可重复读指并发更新时俩次查询相同数据与预期数据不一致
- 幻读指并发新增删除时产生数量变化操作时,另一个事务前后查询数据不符合预期
Repeatable Read事务隔离级别下InnoDB不会产生幻读的原因
未完待续