什么是脏读:
Step1: 应用A从RDBMS读取了整数X, 此时X=0
Step2: 将10赋值给X,并保存到数据库中X=10,此时数据库还没完成数据库的事务提交操作。
Step3: 应用B从RDBMS读取X, 此时读到的X值为10
Step4: 应用A放弃了提交,因此它将数据库中的X恢复为0。
Step5: 应用B将15加给X,并保存到RDBMS,此时X=25
这种读取到未提交的数据称之为脏读(Dirty Read).
什么是Unrepeatable(不可重复读):
Step1: 从RDBMS读取X
Step2: 另一应用使用新的X值覆盖了RDBMS中的X
Step3:当再次从RDBMS读取X时,发现数据被改动了。
什么是Phantom(幻读):
? Step1: 应用查询RDBMS,返回相应的数据集合
? Step2: 另一应用插入新的数据到RDBMS中
? Step3: 当再次执行查询操作时,新的数据出现在返回结果中。
Unrepeatable Read 和 Phantom 的区别可能是Unrepeateable Read加的行级锁,Phantom是对整个表加锁。
设置合适数据库的事务隔离级别防止上述问题发生:
1Read Uncommited: 将会出现脏读问题。如果不存在并发事务,且只有单个实例处于运行中,则
? ? ? ? ? ? ? ? ? ? 比较适合。
2Read commited: 能解决脏读问题,适用于只需要从RDMBS中读取数据的应用,但不能解决不可
? ? 重复读。Oracle, SQL Server 默认的级别。
3Repeatable Read: 解决Drity Read和Unrepeatable问题。
? ? 可以用"乐观锁"达到同样目的。
4Serializable:
? ? 这个完全串行化独占式操作数据库。性能嘛^-^.
隔离程度越高,数据库并发性越差;隔离程度越低,数据库并发性越好。
分享到:
相关推荐
查询:默认事务隔离级别 mysql> select @@tx_isolation;当前会话的默认事务隔离级别 mysql> select @@session.tx_isolation;当前会话的默认事务隔离级别 mysql> select @@global.tx_isolation;全局的事务隔离级别
事务传播特性&事务隔离级别 详细的事务传播特性&事务隔离级别
介绍数据库事务的四种隔离级别,比较不同隔离级别的区别和影响
MySQL的四种事务隔离级别 1、脏读 2、不可重复读 3、幻读
事务隔离级别 课程目标 了解 —— 事务隔离级别的概念; 理解 —— 事务隔离的四种级别; 掌握 —— 事务隔离级别的设置; 事务隔离级别 事务隔离:每一个事务都有一个所谓的隔离级,它定义了用户彼此之间隔离和交互...
本文档介绍了spring事务隔离级别的使用及详解
06-VIP-深入理解Mysql事务隔离级别与锁机制.pdf
java事务传播特性&事务隔离级别...
MySQL事务隔离级别详解,这个面试经常会面到,必会呀,哈哈
spring事务的传播特性和事务隔离级别
数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为 Read uncommitted:允许脏读。 Read committed: 防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别。 Repeatable read:可以防止脏...
数据库事务隔离级别.docx数据库事务隔离级别.docx数据库事务隔离级别.docx
NULL 博文链接:https://cuishuangjia.iteye.com/blog/964885
SQLSERVER事务隔离级别的实验研究.pdf
事务的属性:1.Propagation:用来设置事务的传播行为事务的传播行为:一个方法运行在了一个开启了事务的方法中时,当前方法是使用原来的事务还是开启了一个新
共享锁主要是为了共享读(select),如果存在事务(一个或多个)拥有对表中数据(关于锁数据的多少,视锁的粒度而定)的共享锁,不允许对锁定的数据进行更新(update)(从锁的角度讲,即不允许事务获取排他锁
前言 ...我们都知道事务的几种性质,数据库中的一致性和隔离性等是实现事务的基本思想,在系统有大量的并发访问的情况下,了解和熟练应用数据库的本身的事务隔离级别,对于写出健壮性,并发处理能力强
Spring事务隔离级别,详细解释SPring事务和事务的隔离级别
数据库事务和隔离级别