先来看看在事务应用中可能出现的各种问题.
丢失更新(lost update)
是一个经典的数据库问题。实际上,所有多用户计算机环境都存在这个问题。简单地说,出现下面的情况时(按以下所列的顺序),就会发生丢失更新:
(1) 会话Session1中的一个事务获取(查询)一行数据,放入本地内存,并显示给一个最终用户User1。
(2) 会话Session2中的另一个事务也获取这一行,但是将数据显示给另一个最终用户User2。
(3) User1使用应用修改了这一行,让应用更新数据库并提交。会话Session1的事务现在已经执行。
(4) User2也修改这一行,让应用更新数据库并提交。会话Session2的事务现在已经执行。
这个过程称为“丢失更新”,因为第(3)步所做的所有修改都会丢失。例如,请考虑一个员工更新屏幕,这里允许用户修改地址、工作电话号码等信息。应用本身非常简单:只有一个很小的搜索屏幕要生成一个员工列表,然后可以搜索各位员工的详细信息。这应该只是小菜一碟。所以,编写应用程序时没有考虑锁定,只是简单的SELECT和UPDATE命令。
脏数据
脏数据是指事务A访问并修改了一个数据,但还没有提交回表中,这时事务B访问并使用了该数据,则事务B读到的可能就是一个“脏”的数据。依据脏数据所作的操作就很可能是错误的。
不可重复读
不可重复读是指事务A对某数据进行一次读取后,数据被事务B访问并修改。当事务A再一次访问数据时,会发现跟前一次读到的数据不一致。
幻觉读
幻觉读是指当事务不是独立执行时发生的一种现象。例如事务A对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,事务B也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,操作事务A的用户就会发现表中还有未修改的数据行,就好象发生了幻觉一样。
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事务和事务的隔离级别
数据库事务和隔离级别