事务的并发处理带来的问题

相对于事务的串行处理,并发处理大大增加数据库资源的利用率

但会带来以下几种情况

1脏读

一个事务正在对一条记录做修改,在这个事务未完成提交前;此时,另一个事务也会读取同一条记录,如果不加控制,第二个事务读取这些脏数据,并作进一步处理

2 不可重复读

一个事务的在读取某些数据后的某个时间,再次读取以前的数据 ,却发现读出的数据已发生了改变

3 幻读

一个事务按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其他查询条件的新数据.

这些问题,其实都是数据库读一致性问题,必须数据库提供一定的事务隔离机制来解决

时间: 2024-10-18 10:52:18

事务的并发处理带来的问题的相关文章

[MySQL]对于事务并发处理带来的问题,脏读、不可重复读、幻读的理解与数据库事务隔离级别 - 分析脏读 & 不可重复读 & 幻读

刚开始写博客.. 写的太low. 1.数据库的两种读,每种读读的数据版本不一样,所以也称为MVCC,即多版本并发控制 a) 快照读 select * from where xxx  这种形式的都是快照读. b) 当前读 update , insert ,delete ,select xx from xx for update ,  in share mode 都是当前读 当前读会等待,不会返回数据的历史版本 2.mvcc 的实现原理 mvcc是基于read view.活跃事务列表 做的,以后的文

事务的并发处理

事务特性: acid automic :原子性 consistent:一致性 itegrity:隔离性 durability:持久性 1.一致性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行. 2.原子性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性.事务结束时,所有的内部数据结构都应该是正确的. 3.隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离.事

事务的隔离级别和传播行为

一.事务的隔离级别 1.五种事务的隔离级别 ①读_未提交(read_uncommitted): 会出现脏读.不可重复读.幻读.(隔离级别最低,并发性能高) ②读_已提交(read_committed):会出现不可重复读.幻读.(锁定正在读取的行) ③重复读(repeatable_read):会出现幻读.(锁定所读取的所有行) ④序列化(serializable):保证所有的情况不会发生:(锁表) ⑤默认的隔离级别: 大多数的默认隔离级别是:读已提交(read_commited)如:Sql Ser

事务的特性

事务作为单个逻辑工作单元执行一系列的操作,一个逻辑工作单元必须具有四个属性:原子性,一致性,隔离性,持久性,只有同时满足这四个特性,才能成为一个事务. 一,事务的四个属性 原子性:事务是原子工作单元,对于数据修改,要么全部执行,要么全部不执行. 一致性:事务在完成时,必须保证数据对象的所有状态都保持一致,事务结束时,所有的内部数据结构(索引,索引视图等)都必须是正确的. 隔离性:由并发事务所做的修改必须与其他任何并发事务所做的修改隔离. 持久性:事务完成之后,对数据的修改是永久性的. 二,事务的

事务配置

为什么要进行事务的配置呢? 事务就是对一系列的数据库操作进行统一的提交或者回滚,比如说某个更新操作需要先将之前的数据删除,再添加新的数据,但是如果你删除以后,添加的时候出现异常没有添加成功的话,那么就会出现错误了,你把旧数据删除了,但是新数据又没加上去. 在application.xml文件中进行配置,注意不要在切入点那一层try/catch,会把异常捕获掉,事务就捕获不到了. <!-- 配置事务管理 --> <bean id="transactionManager"

事务隔离

引自:http://blog.csdn.net/turkeyzhou/article/details/7636165 1      什么是事务 1.1 我们为什么需要事务 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作.事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关 操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠.一个逻辑工作单元要成为事务,必须满足所谓的

【持久层】数据库事务基础——事务的隔离级别

内容导读: 前三节数据库事务.并发带来的风险以及数据库锁都是为了铺垫事务的隔离性. 事务的隔离性不是无缘无故就存在的,他的存在是为了解决某一类问题,带来某一些操作的便捷:解决的问题是指数据库并发操作中数据一致性保证,带来的便捷是指定义好隔离级别之后,数据库会为操作自动加锁(不同的隔离级别拥有不同的自动锁粒度),而不用每次操作都手动的加锁. 写着写着觉得没什么可写的,本文已沦为简单的笔记···· 一.数据库事务 将一组数据库操作看作一个具备特殊数据库语义的执行单元,该执行单元具备ACID的事务属性

Hibernate事务与并发问题处理(乐观锁与悲观锁)

目录 一.数据库事务的定义 二.数据库事务并发可能带来的问题 三.数据库事务隔离级别 四.使用Hibernate设置数据库隔离级别 五.使用悲观锁解决事务并发问题 六.使用乐观锁解决事务并发问题 一.数据库事务的定义 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作.事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠

关于Oracle E-Business Suite并发处理机制(Current Processing)

2012年写过一篇关于Oracle E-Business Suite并发管理器的文章,回头看之前总结的内容还是比较单薄,很多点没说到,最近在看这块的内容,索性再写一篇稍微完整的文章来. Oracle E-Business Suite并发处理机制(Current Processing)的好处 区别于普通功能的处理机制,并发处理机制其实是一个异步处理机制,它把程序放到后台来运行,前台的操作还给用户,允许用户可以继续做其他业务. 技术上将,异步处理的好处是降低系统特定时间点的负载,提升系统资源的整体使