Mysql

Posted by Qiuyu Zhang on 2023-07-27

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不会产生幻读的原因


未完待续