Chapter 8 事务和锁(new)

Chapter 8 事务和锁(new)

ID:45037315

大小:690.50 KB

页数:36页

时间:2019-11-08

Chapter 8 事务和锁(new)_第1页
Chapter 8 事务和锁(new)_第2页
Chapter 8 事务和锁(new)_第3页
Chapter 8 事务和锁(new)_第4页
Chapter 8 事务和锁(new)_第5页
资源描述:

《Chapter 8 事务和锁(new)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Chapter10事务和锁2事务和锁(TransactionandLock)概述事务(Transaction)是SQLServer中的单个逻辑工作单元,一个事务内的所有语句被作为一个整体执行。在事务的执行过程中,如果遇到错误,则可以回退事务,取消该事务所作的全部改变,从而保证数据库数据的一致性和可恢复性。即一个事务要么其中的语句全部正确执行,要么全部语句不起作用。锁(Lock)是SQLServer中用以控制用户并发操作的一种重要方法,通过锁定资源可以防止多个用户同时对一个数据进行修改,或查询正在被修改的数据,从而保证事务的完整性和数据库的一致性。3事务和锁-事务事务(Transac

2、tion)以一个银行事务为例,将1000美元从支票帐上转到存款帐上。事实上,这个事务由两项操作组成:一个减少支票帐目;一个增加存款帐目。假设第一阶段完成之后,银行服务器关闭,没有进入第二阶段,会对财务状况发生什么影响呢?通过把两个操作集中到一个事务中,两者就可以作为一个工作单元,要么成功,要么失败。从而避免错误。4事务和锁-事务事务(Transaction)事务是一个逻辑工作单元,有四个特性,称为ACID属性:原子性(Atomicity):一个事务中的相关修改要么全部成功,要么全部失败一致性(Consistency):事务完成后,所有数据处于应有的状态,所有内部结构正确,能够准确反

3、映事务所作的工作隔离性(Isolation):一个事务不会干扰另一个事务的进程持久性(Durability):事务完成后,所有改变都是永久性的T-SQL开发人员要保证事务的原子性和一致性,即将修改正确的集中起来。SQLServer则要保证事务的隔离性和持久性5事务和锁-事务事务的定义自动事务(AutoCommit):每条T-SQL语句本身都是一个事务,在完成时自动提交。这是SQLServer的默认操作方式显式事务(Explicit):这种方法可以用BEGINTRAN与COMMIT/ROLLBACKTRAN/WORK命令控制事务隐式事务(Implicit):SQLServer发出某个

4、SQL命令时,自动启动事务。开发人员要显式用COMMIT/ROLLBACKTRAN/WORK命令完成事务注意:SQLServer用数据库事务日志记录数据库中发生的修改,每个日志记录标上惟一日志序号,通过使用日志记录,当遇到错误或服务器出故障时撤销所有未完成的事务。事务提交之后,就不能再撤销,要取消已经提交的事务,惟一的方法是用另一个事务逆转这个改变;事务提交之前,可以撤销。6事务和锁-自动事务自动事务(AutoCommit)自动事务是SQLServer的默认事务方式,每条T-SQL命令执行结束后自动提交或回退自己的工作。每条SQL语句本身都是一个事务,隐含开始和结束控制点例1:[i

5、mpliedbegintransaction]UpdateaccountSetbalance=balance+1000Whereaccount_no=‘123456’[impliedcommitorrollbacktransaction]7事务和锁-自动事务自动事务(AutoCommit)例2:以上面的银行转帐为例declare@checking_accountchar(10),@saving_accountchar(10)set@checking_account=‘c001’set@saving_account=‘s003’Updatecheck_accountSetbalanc

6、e=balance-1000Whereaccount_no=@checking_accountUpdatesave_accountSetbalance=balance+1000Whereaccount_no=@saving_account声明两个局部变量给局部变量赋值一条语句,一个事务,一次提交支票帐上的余额减1000存款帐上的余额加10008事务和锁-自动事务自动事务(AutoCommit)存在的问题:每条语句顺利完成之后隐式提交,因此,如果支票减帐事务已经提交,则修改无法撤消,除非编写另一个修改事务把1000美元加回到支票帐上如果在更新过程中系统崩溃,则无法知道哪一部分修改完成

7、了,哪一部分没有完成,则在修改过程中难以得到正确结果9事务和锁-显式事务显式事务(Explicit)显式事务是用户通过T-SQL语句定义的事务,这类事务称为用户定义事务格式:BEGINTRAN[SACTION][transaction_name

8、@tran_name_variable][WITHMARK[‘description’]]WITHMARK[‘description’]说明事务必须标记到日志文件中,其中description是一个字符串,描述标记的意义。SQ

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

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

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