数据库隔离级别

2020-05-07  本文已影响0人  策马踏清风

数据库隔离级别是只多个并行的事务之间的锁策略

隔离级别

等级 名称 说明 产生的问题
0 Read Uncommitted 读未提交,即并行的事务中没有提交的数据其它事务也可以查询的到 脏读(读取到别的事务回滚前的脏数据)、不可重复读(一个事务多次读取的数据不一样)、幻读(一个事务多次读取的数据条数不一样)
1 READ COMMITTED 读提交,不会读到其它事务没提交的数据 不可重复读(一个事务多次读取的数据不一样)、幻读(一个事务多次读取的数据条数不一样)
2 REPEATABLE READ 重复读,不能修改其它事务已读取但为提交的数据 幻读(一个事务多次读取的数据条数不一样)、性能损失
3 Serializable 串行化,事务间串行执行 不存在并行的事务,所以没问题

问题分析

  1. 脏读:读到别的事务还没回滚前的脏数据,只有读未提交下允许读其他事务没提交的数据,所以只有读未提交才会有
  2. 不可重复读:并行的事务将数据更改了,导致另一个事物两次读一条数据的结果都不一样。即不能保证两次读取数据相同,即不可重复读。重复读禁止事务修改被其它事务读的数据,所以避免此问题。(针对update、delete)
  3. 幻读:和不可重复读类似,但是被改变的是匹配查询语句的数据条数。第一次读匹配一条,被另一个并行事务修改后又读到了两条。此为幻读。幻读并不是改变已经读到的数据,而是增加条目,所以只有串行化可以解决(针对insert)
上一篇 下一篇

猜你喜欢

热点阅读