time 
设为首页】【收藏本站
当前位置: 主页 > 数据库 > 数据库理论 > 数据库应用基础系列: 第2章 并发操作的一致性问题 (2)

数据库应用基础系列: 第2章 并发操作的一致性问题 (2)

时间:2009-03-22 21:48 点击:3865次 字体:[ ]




  本文示例源代码或素材下载

  2.2 SQL Server 2000+ADO.NET实现并发控制2.2.1 并发一致性问题

  常见并发并发一致性问题包括:丢失的修改、不可重复读、读脏数据、幻影读(幻影读在一些资料中往往与不可重复读归为一类)。

  2.2.1.1 丢失修改

  下面我们先来看一个例子,说明并发操作带来的数据的不一致性问题。

  考虑飞机订票系统中的一个活动序列:

  甲售票点(甲事务)读出某航班的机票余额A,设A=16.

  乙售票点(乙事务)读出同一航班的机票余额A,也为16.

  甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.

  乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.

  结果明明卖出两张机票,数据库中机票余额只减少1。

  归纳起来就是:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。前文(2.1.4数据删除与更新)中提到的问题及解决办法往往是针对此类并发问题的。但仍然有几类问题通过上面的方法解决不了,那就是:

  2.2.1.2 不可重复读

  不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:

  事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。

  事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。

  事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读)



本文地址 : http://www.fengfly.com/plus/view-29865-1.html
标签: 操作 应用 问题 一致性 并发 系列
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: