无论是在操作系统还是在数据库中,都不免有进程并发的操作,而进程并发不就难免会造成数据的错误(也称为时间的错误)
在操作系统中运用的是Pv操作解决并发的问题,今天我想说的是在数据库中如何避免并发带来的三个问题
1丢失更新的问题
2读取数据问题
3不可重复读问题
下面用例子来说明该问题
丢失更新的问题
丢失更新原因就在于多个事务同时对一个数据操作,每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新。
例如:
当事务A和事务B同时修改某行的值,
1.事务A将数值改为1并提交
2.事务B将数值改为2并提交。这时数据的值为2,事务A所做的更新将会丢失。
时间
|
更新事务A
|
数据库中a的值
|
更新事务B
|
T0
|
|
100
|
|
T1
|
Find a
|
|
|
T2
|
|
|
Find a
|
T3
|
a:=a-30
|
|
|
T4
|
|
|
a:=a*20
|
T5
|
Upd a
|
|
|
T6
|
|
70
|
Upd a
|
T7
|
|
200
|
|
上面的实例我们可以看到,当程序正确执行的时候,结果是140或170。但是按表中的并发执行,结果A是200,原因就在于事务A的更新被事务B的被重写覆盖掉了,导致事务A的丢失。
读脏数据
在数据库技术中。我们把未提交随后被撤销的数据称为“脏数据”。
看实例
·
1.Mary的原工资为1000,财务人员将Mary的工资改为了8000(但未提交事务)
2.Mary读取自己的工资,发现自己的工资变为了8000,欢天喜地!(在缓存中读取)
3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000像这样,Mary记取的工资数8000是一个脏数据。
不可重复读
不可重复读,主要是同一个事务前后两次读取的结果不一致造成的
实例
1.在事务1中,Mary 读取了自己的工资为1000,操作并没有完成
2.在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务.
3.在事务1中,Mary 再次读取自己的工资时,工资变为了2000
事务1前后两次读取同一个数据出现不同的结果。这就造成的数据的不可重复读的问题。
以上三个问题是数据库事务并发中经常出现的问题。如何避免出现该问题呢。就需要对数据进行加锁。锁的问题下篇博客精彩讲述。
相关推荐
数据库思维导图——并发控制 并发控制 多事务执行方式 (1)事务串行执行 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共享资源的特点 (2)交叉并发方式...
数据库并发控制PPT 并发控制的机制和方法
数据库的并发控制 数据库并发控制的含义 事务 并发控制的必要性 基于封锁的并发控制技术 基于时间戳的并发控制技术
分布式数据库并发控制分布式数据库并发控制
Hibernate事务和并发控制Hibernate事务和并发控制Hibernate事务和并发控制
关于数据库并发控制的一些介绍 数据库并发控制 sql server
数据库并发控制及SQL 包含内容包括:数据库并发控制及SQL Server的并发控制机制 事务及并发控制的基本概念 封锁机制 SQL Server的并发控制机制 等等
增加并发控制后的globalmem程序
并发控制指的是当多个用户同时更新运行时,用于保护数据库完整性的各种技术。并发机制不正确可能导致脏读、幻读和不可重复读等此类问题。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响...
讲述了数据库中的并发控制,包括事务处理,加锁机制,以及恢复,日志记录
Oracle中使用锁进行并发控制
并发控制—悲观锁和乐观锁
掌握事务的概念及性质 掌握数据库恢复的基本技术和策略 ...2、掌握并发控制的技术:封锁机制、三级封锁协议、 活锁的避免、死锁的预防、诊断及解除 3、掌握并发调度的正确性标准和技术(可串行性、 两段锁协议)
分布式数据库 分布式数据库系统 第八章 分布式并发控制 东北大学
关于数据库并发控制,该PPT主要以高等教育数据库系统概论为基础,介绍了锁的使用
并发控制指的是当多个用户同时更新行时,用于保护数据库完整性的各种技术。并发机制不正确可能导致脏读、幻读和不可重复读等此类问题。
DB2和 Oracle的并发控制(锁)比较,详解说明。
这是一节关于研究生研一分布式设计课程中的课件,里面的内容是关于分布式事务的并发控制。
数据库并发控制PPT学习教案.pptx
数据库的进阶操作,对于并发控制和回复的介绍