网络数据库讲稿(并发控制机制)

网络数据库讲稿(并发控制机制)

ID:14333480

大小:93.00 KB

页数:6页

时间:2018-07-28

网络数据库讲稿(并发控制机制)_第1页
网络数据库讲稿(并发控制机制)_第2页
网络数据库讲稿(并发控制机制)_第3页
网络数据库讲稿(并发控制机制)_第4页
网络数据库讲稿(并发控制机制)_第5页
资源描述:

《网络数据库讲稿(并发控制机制)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、并发控制机制一、并发控制的概念SQLServer是多用户系统,即支持多个不同的程序或多个用户独立执行同一个程序同时存取数据库中相同的数据。SQLServer以事务为单位,可同时运行多个事务并行存取数据。多个事务交迭地执行,称为并发处理。并发处理可能会导致数据完整性与一致性方面的问题,如丢失更新、读出的是未提交的数据、非一致检索的问题等。为此,SQLServer必须对这种并发操作提供一定的控制以防止它们彼此干扰,从而保证数据库的正确性不被破坏,这种处理就是并发控制。通常使用锁来实现并发控制,协调并发操作以保证事务的隔离性,保持数据的一致性。二、并发异常问题当多个事务交错执行时,

2、可能出现不一致性的问题,也称为并发控制问题,典型的并发处理产生的错误结果有如下三种。1.丢失更新当两个事务T1和T2同时更新某条记录时,它们读取记录并修改,事务T2提交的结果破坏了T1提交的结果,导致T1的修改结果丢失。现以一个库存进出的实例进行分析。假设当前某商品S1的在库数量是200,现在有两个并发事务T1和T2都将更新在库存中的数量,T1是采购入库事务,T2是卖出出库事务,即事务事务完成后的计算结果T1:入库400库存数量=库存数量+400T2:出库80库存数量=库存数量-80表1给出了在正常情况下这些事务的执行顺序和正确的结果,正确的最后执行结果应该是520。表1两个

3、事务正常执行的过程执行顺序事务步骤数据库中结果1T1读出库存数量2002T1库存数量=库存数量+4003T1将结果写回数据库6004T2读库存数量6005T2库存数量=库存数量-806T2将结果写回数据库520由于事务的处理是并发执行的,它们执行的过程流可能是交替的,如表2的执行过程,在这种执行顺序中会产生丢失更新时事务的执行顺序,表中当第二个事务T2执行时,T1还未提交。表2发生数据丢失更新的过程执行顺序事务步骤数据库中结果1T1读出库存数量2002T2读出库存数量2003T1库存数量=库存数量+4004T2库存数量=库存数量-805T1将结果写回数据库600(将被丢失)6

4、T2将结果写回数据库120在表2中,由于事务T1和T2是交替执行的,在将更新的结果写回数据库时,T1写入后马上由T2写入它所计算出的值,此时最后数据库中的结果是120,与表1中所得出的结果是完全不同的,因此,如果对数据库更新时的并发事务不加以控制,将会出现大量的不可预期的错误结果。2.读未提交数据当两个事务T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2使用了T1的结果,如果在T2读取数据之后T1又撤消事务,就可能引起错误。读未提交数据产生的根源是违反了事务的隔离性。仍以上述实例来讨论。假定事务T1在增加了400个商品后,在没有提交之前撤消了这个操作,所以事务

5、T2应该是从原来的库存数量200中减去80,正确结果应该是120。正确的操作顺序和结果如表3所示。表3两个事务正常的执行顺序执行顺序事务步骤数据库中结果1T1读出库存数量2002T1库存数量=库存数量+4003T1将结果写回数据库6004T1**ROLLBACK**2005T2读出库存数量2006T2库存数量=库存数量-807T2将结果写回数据库120当T1和T2的交替执行步骤如表4时,T2使用了T1末提交的数据,从而产生了错误数据520。我们把读出的这种未提交的数据称为废数据或者脏数据。表4T2使用T1未提交数据后产生的错误执行顺序事务步骤数据库中结果1T1读出库存数量20

6、02T1库存数量=库存数量+4003T1将结果写回数据库6004T2读出库存数量6005T2库存数量=库存数量-806T1**ROLLBACK**2007T2将结果写回数据库5203.不可重复读取有时,一个事务可能对同一个数据连续读两次,然而事务的并发执行可能导致在两次读之间插入了另一个更新事务,这样会使前一个事务的两次读出的同一个数据值不一致,这就是不可重复读取问题。由于事务很可能读某些变化之前或变化之后的数据,就可能产生不一致的结果。例如:资金转帐过程中需要打印票据,系统中事务活动顺序如下:(1)事务T1打印A帐户转帐前的余额,设A=10万元。(2)事务T1从A帐户转出1

7、万元,A=9万元。(3)事务T2从B帐户转入A帐户2万元,A=11万元,T2提交。(4)事务T1打印A帐户转帐后的余额,A=11万元,T1提交。总之,一个数据库事务中可能包含多个输入/输出操作,最终结果将使数据库从一个一致性的状态变成另一个一致性的状态,即在事务执行之前或之后数据库处于一致性的状态。然而,在事务的执行期问,数据库可能暂时处于一个不一致性的状态。若在数据库不一致性状态时读取数据,就有可能产生一些问题。解决这类问题的常用方法是对所修改的对象进行封锁,实现事务的隔离性。三、锁的概念锁就是事务对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。