并发控制技术实现

来源 :今日湖北·下半月 | 被引量 : 0次 | 上传用户:fkj1022
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要并发控制是数据库事务处理的重要环节,最新数据库系统大多是基于WEB而开发的应用系统,原有保守式并发控制演变成基于WEB的开放式并发控制,本文首先介绍了WEB开放式并发控制的锁机制,接着针对ADO.net探讨了开放式并发控制的解决方法,并给出了具体的运用。
  关键词并发控制 封锁协议 开放式 时间戳 所有值
  文章编号1008-5807(2011)02-114-01
  
  一、并发控制
  1、并发控制负责正确协调并发事物的执行,保证并发的存取操作不致破坏数据库的完整性和一致性。一个数据库管理系统,其大量的基础数据资源不可能是单一用户进行访问和管理,所以数据库必然是处在一个多用户共享的工作环境中,保障多用户对数据库的共享访问是极其重要的,对于那些有关联的数据,多用户访问同一个或具有这样关系的数据就可能会产生相互干扰的问题,访问同一个数据,如果都是读取,没有干扰,如果有的用户是读取操作,有的是修改、删除操作,显然会产生干扰,多用户访问关联数据类似于访问同一个数据情况,有的用户访问就可能被近等待或者取消,按照什么样的规则等待或取消,保持数据的完整性和一致性,就需要一个控制机制来解决,这就是并发控制技术的存在的意义。
  2、Web应用中并发控制的实现有两种锁机制:即通常所说的“乐观锁(Optimistic Locking)” 和“悲观锁(Pessimistic Locking)”。
  (1)乐观锁(Optimistic Locking)
  乐观锁(optimistic locking)则乐观的认为资料的存取很少发生同时存取的问题,因而不作数据库层次上的锁定,为了维护正确的数据,乐观锁定使用应用程序上的逻辑实现版本控制来解决。并发控制时,数据不一致的情况一旦发生,有几个解决的方法 ,一种是先更新为主,一种是后更新的为主,比较复杂的就是检查发生变动的数据来实现,或是检查所有属性来实现乐观锁定。
  (2)悲观锁(Pessimistic Locking)
  虽然乐观锁能够提高系统的性能,但它是对发生冲突的访问进行事后的补救,应用在用户输入数据量很少的场合比较适合,但如果在 企业 ERP,用户与系统交互涉及大量数据在页面表单上录入,如果事后提交失败后才提示用户要重新录入是很不现实的,所以有必要进行事前控制,这就要采用悲观锁。
  二、开放式并发技术的运用
  一般系统可采用ADO.NET的并发控制,ADO.NET中数据结构基于断开的数据,使用开放式并发技术。在开放式并发中,只有在访问数据库时才设置并保持锁。这些锁将防止其他用户在同一时间更新记录。除了进行更新这一确切的时刻之外,数据始终可用。当试图更新时,已更改行的初始版本将与数据库中的现有行进行比较。如果两者不同,更新将失败,并引发并发错误。这时,将由所创建的业务逻辑来协调这两行。
  开放式并发有两种常规的方式来确定是否已发生更改:版本方法(实际版本号或日期时间戳)和保存所有值方法。
  1、版本号方法
  在版本号方法中,要更新的记录必须增加一个包含日期时间戳或版本号的列。当读取该记录时,日期时间戳或版本号将保存在客户端。然后,将对该值进行部分更新。
  处理并发的一种方法是仅当WHERE子句中的值与记录上的值匹配时才进行更新。该方法的SQL表示形式为:
  UPDATE Table1 SET Column1 = @newvalue1, Column2 = @newvalue2 WHERE DateTimeStamp = @origDateTimeStamp
  或者,可以使用版本号进行比较:
  UPDATE Table1 SET Column1 = @newvalue1, Column2 = @newvalue2 WHERE RowVersion = @origRowVersionValue
  如果日期时间戳或版本号匹配,则表明数据存储区中的记录未被更改,并且可以安全地使用数据集中的新值对该记录进行更新。如果不匹配,则将返回错误。为了确保日期时间戳或版本号的准确性,要在表上设置触发器,以便在发生对行的更改时,对日期时间戳或版本号进行更新:
  CREATE TRIGGER RowVersion ON [dbo].[Table1] FOR INSERT, UPDATE, DELETE
  AS
  UPDATE Table1 SET Table1. DateTimeStamp =getdate() where Table1.Id=( select Id from inserted)
  2、保存所有值方法
  使用日期时间戳或版本号的替代方法是在读取记录时获取所有字段的副本。ADO.NET 中的 DataSet 对象维护每个修改记录的两个版本:初始版本(最初从数据源中读取的版本)和修改版本(表示用户更新)。当试图将记录写回数据源时,数据行中的初始值将与数据源中的记录进行比较。如果它们匹配,则表明数据库记录在被读取后尚未经过更改。在这种情况下,数据集中已更改的值将成功地写入数据库。
  对于数据适配器的四个命令(DELETE、INSERT、SELECT 和 UPDATE)来说,每个命令都有一个参数集合。每个命令都有用于初始值和当前值(或修改值)的参数。由于不存在初始记录,添加新记录(INSERT 命令)只需要当前值;删除记录(DELETE 命令)只需要使用初始值来定位要删除的记录。
  
  参考文献:
  [1]庞振平.数据库原理及应用基础.华南理工大学出版社,2007.8.
其他文献
大地回春送吉羊.2015年农历春节前夕,中共中央台办、国务院台办主任张志军,海协会会长陈德铭,中共中央台办、国务院台办副主任叶克冬,中共中央台办、国务院台办副主任龚清概,
期刊
浙江省建筑业走出去特点分战略目标明确清晰,政策导向鲜明有力.2010年年初浙江省政府再次出台,进一步明确了工作目标、支持措施和保障机制,各地主管部门认真贯彻落实,加大激
我是一本语文教辅书。重点难点提示、知识点精析与应用、综合能力测试……全包在我身上,我的宗旨是:树品牌典范,拓成才之路。我出生在一家全国知名的出版社,为了农家孩子更好
[摘 要]蒙克是一位用情感创作的艺术家,他的作品常常带有强烈的主观性和忧郁、悲伤的情调。比如他的《呐喊》一类的作品,尤其能体现这一特点。这种特有的作品风格来源于他本人的经历、创作观念以及他意识和潜意识中的各种强烈的情绪。本文将对以上的内容做一些介绍和讨论,这样有助于解析蒙克的艺术,以及艺术创作和主观情绪之间的关系。  [关键词]爱德华蒙克 《呐喊》 情绪 升华  [中图分类号]J202[文献标识
期刊
反洗钱主体涵盖特定非金融机构银行、证券、保险等金融系统是洗钱的易发、高危领域。但金融机构并不是洗钱的唯一渠道,随着金融监管制度的不断严格和完善,洗钱逐步向非金融机
党的十六届三中全会从全局和战略的高度,深刻阐述了坚持以人为本,全面、协调,可持续的发展观.工商行政管理机关必须把科学发展观渗透到市场监管执法的各项工作中去,落实到想
《反洗钱法》的颁布将对遏制贪污腐败、打击非法交易、调节收入分配等产生积极的效果,将在构建社会主义和谐社会过程中发挥重要的作用。笔者认为,《反洗钱法》的实施应该从减
目前,我国的建筑运行能耗已经占到全社会总能耗的30%左右.因此,建筑节能被普遍认为是我国各种节能途径中潜力最大、最为直接的有效方式,是缓解能源紧张、解决社会经济发展与
摘 要:本文通过对美国和日本城镇化模式的探讨得到其对中国城镇化发展的启示:应该在尊重市场主导地位和资源配置决定性作用的同时,强化政府在城镇化进程中的规划引导作用;国家整体的城镇化可以因地区不同而呈现多样化;要统筹城乡发展,不片面追求快速的城镇化;注重产业发展对城镇化发展的引领、颠覆作用。  关键词:城镇化;美国模式;日本模式  一、引言  城镇化是具有中国特色的城市化,是综合我国国情的提法。城市化