1.事务特性ACID
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)
2.事务隔离级别
读未提交(Read Uncommited)、读已提交(Read Committed)、可重复读(Repeatable Read)、序列化(Serializable)
3.可能出现问题表格
-------------------------
脏读 不可重复读 幻读
RU true true true
RC false true true
RR false false true
S false false false
-------------------------
4.RU和S在实际应用中基本不用,RU会导致脏读,数据不可置信。S锁级别太高,性能差
5.Mysql默认隔离级别为RR,Oracle等其他默认级别为RC,Mysql推荐binlog格式为row
6.Mysql默认级别为RR的原因是,在Mysql早期,binlog只有statement格式,对于master/slave主从复制可能出现顺序错误的bug
后期Mysql推出了row级别日志解决了此问题,所以所有业务型数据库推荐隔离级别为RC
7.推荐隔离级别为RC的原因(RC优于RR的原因)
-RC比RR更不容易出现死锁
-在索引未达成的情况下,RR锁全表,RC锁行,RC效率更高
-update时,RC可以使用半一致性读增加效率,RR只能等待
-RC对比RR劣势在于不可重复读问题,而此问题在业务上完全可以接受,因为commited就已经是新数据了,可以被读取出来展示
原文:https://www.cnblogs.com/scaling/p/11934365.html