35 mysql

默认存储引擎innoDB,5.7版本所有存储引擎中只有innoDB支持事务。

存储引擎差别

myisam只有表级锁,不支持事务,不支持崩溃恢复,
innoDB支持行级锁,支持事务,通过redo log支持崩溃恢复,保证持久性,undo log回滚,保证原子性,通过锁、MVCC保证事务隔离性。

innoDB锁类型

record lock 记录锁,锁一行。
gap lock 间隙锁,锁一个间隙。
next-key lock = record lock + gap lock,临键锁,锁一个范围,包含记录

并发事务带来哪些问题

  • 脏读 一个事务修改了数据还没提交,另一个事务就读到了
  • 丢失修改 一个事务修改了数据,另一个事务也修改了数据,第一个事务的修改丢失
  • 不可重复读 一个事务内多次读一个数据结果不一样
  • 幻读 一个事务内多次读同一个条件的筛选结果,数量不一样

隔离级别

  • read uncommitted 读未提交 允许读未提交的数据,脏读、幻读、不可重复读
  • read committed 读已提交 阻止脏读,不能阻止幻读和不可重复读
  • repeatable read 可重复读 可以阻止脏读和不可重复读,不能阻止幻读
  • serializable 串行 可阻止脏读,幻读,不可重复读

你可能感兴趣的:(java)