事务隔离级别
9.7、事务隔离性
A教室和B教室中间有一道墙,这道墙可以很厚,也可以很薄,事务的隔离级别
墙越厚,隔离级别越高
事务和事务之间的隔离级别有哪些?4个级别
1)读未提交:read uncommitted (最低的隔离级别)
事务A可以读取到事务B未提交的数据。
这种隔离级别存在问题:就是脏读现象(Dirty Read),称为读到了脏数据。
这种隔离级别一般都是理论上的,大多数的数据库隔离级别都是2档起步
2)读已提交:read committed
事务A只能读取到事务B提交之后的数据。
这种隔离级别解决了脏读现象。
不可重复读取数据:在事务开启之后,第一次读到的数据是3条,当前事务还没有结束,可能第二次再读取的时候,读到的数据是4条,3不等于4。
这种隔离级别是比较真实的数据,每一次读到的数据是绝对真实
oralce数据库默认的隔离级别是:read committed
3)可重复读:repeatable read(提交之后也读不到,永远读取的是刚开启事务时的数据)
可重复读取:事务A开启后,不管是多久,每一次在事务A中读取到的数据都是一致的。即使事务B将数据已经修改
并且提交了,事务A读取到的数据还是没有发生改变,这就是可重复读
可重复读取解决了不可重复读取数据
存在问题:每一次读取到的数据都是幻象,不够真实。
mysql中默认的事务隔离级别是可重复读 repeatable read
4)序列化/串行化:serializable (最高的隔离级别),效率最低,解决了所有问题
这种隔离级别表示事务排队,不能并发