数据库隔离级别的理解
2016-11-03 10:07
162 查看
数据库的隔离级别
数据库中每个事务都要占用一些资源,比如对表/数据共享操作权限,事务的隔离级别描述了事务对资源共享程度。数据库的事务的隔离级别和解决的问题
隔离级别 | 出现的问题 | 原因 |
---|---|---|
READ-UNCOMMITED | 脏读 | 其他事务(线程)可以读取到当前事务修改但未提交的数据 |
READ-COMMITTED | 不可重复读 | 设置数据库的隔离级别为READ-COMMITTED后可以解决事务脏读;当前事务获取数据的读锁,读完之后就解锁,当前事务有没有结束(即当前事务未提交),这时,其他事务可以对这个数据进行修改(读写),而当前事务再次读取这个数据时,数据在当前事务读取的两次过程中显示不一致,产生了事务中不可重复读现象 |
Repeatable Read(可重读) | 幻读 | 不可重复读通过设置数据库的Repeatable Read隔离级别(即对当前事务的操作的数据加锁,并且只有等等事务结束才释放锁,这样避免了不可重复读);这仅仅保证了一个事务对的数据操作的过程中不被其他事务修改,不能阻止其他事务提交新的数据(向表中插入新数据或删除部分数据),尤其是当前事务统计表中数据时,两次统计的结果不一致导致幻读(像幻觉一般) |
Serializable(可串行化) | 数据库设置的隔离级别为Serializable时,事务读取数据可获得范围锁(如表锁等),事务之间访问这段数据时,必须一个接着一个串行进行访问 |
想法
数据库事务的对数据的访问其实质就多线程对共享数据的访问,隔离级别就是对数据加锁的应用(加锁的粒度问题)。参考
数据库事务的属性-ACID事务、数据库事务、事务隔离级别、锁的简单总结
关于Innodb中的事务隔离级别和锁的关系
相关文章推荐
- 理解数据库的4种隔离级别
- 数据库:自己理解的“数据库事务隔离级别”
- 对数据库事务、隔离级别、锁、封锁协议的理解及其关系的理解
- 自己理解的“数据库事务隔离级别”
- 面试篇之对数据库事务隔离级别的理解
- 数据库的事物隔离级别通俗理解
- 理解数据库事务隔离级别以及脏读, 不可重复读, 幻读
- 数据库的事物隔离级别通俗理解
- 数据库隔离级别深入理解(ORACLE)
- 理解数据库事务隔离级别以及脏读, 不可重复读, 幻读
- 数据库事务隔离级别理解
- 自己理解的“数据库事务隔离级别”
- 理解数据库事务隔离级别以及脏读, 不可重复读, 幻读
- 理解数据库事务隔离级别以及脏读, 不可重复读, 幻读
- 八张图教你彻底理解数据库并发控制之隔离级别(上)
- 数据库事物隔离级别通俗理解
- 关于数据库事务、隔离级别、锁的理解与整理
- 关于数据库事务、隔离级别、锁的理解与整理
- 数据库的事物隔离级别以及锁的一些个人理解
- 八张图教你彻底理解数据库并发控制之隔离级别(中)