READ_UNCOMMITTED 读未提交 1 --脏读问题
允许读未提交的和已提交的数据。
脏读
通俗的讲,一个事务在处理过程中读取了另外一个事务未提交的数据。
你都还没提交,我就读到了你刚操作的数据,万一你回滚了怎么办,你说这脏不脏。
READ_COMMITTED 读已提交 2 --不可重复读 解决了脏读问题
允许读已提交的数据,但不要求可重复读,即两次读取之间,数据肯能被修改,导致读取结果不一样
不可重复读
通俗的讲,一个事务范围内,多次查询某个数据,却得到不同的结果。
与脏读的区别:脏读是读到未提交的数据,而不可重复读读到的却是已经提交的数据,但实际上是违反了事务的一致性原则。
REPEATABLE_READ 可重复读 4 ----幻读–解决了不可重复读
只允许读已提交数据,并且在两次读取同一数据时,不允许其他事务修改此数据
幻读指的是
一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。
SERIALIZABLE 可串行化 8
并发调度为可串行化调度
重复读可以解决不可重复读问题。写到这里,应该明白的一点就是,不可重复读对应的是修改,即UPDATE操作。但是可能还会有幻读问题。因为幻读问题对应的是插入INSERT操作,而不是UPDATE操作。
值得一提的是:
大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。
Mysql的默认隔离级别是Repeatable read。