欢迎来到天天文库
浏览记录
ID:45035059
大小:1.13 MB
页数:72页
时间:2019-11-08
《08第8章SQL+Server+事务和并发控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQLServer第8章SQLServer事务和并发控制第8章SQLServer事务和并发控制8.1事务8.2事务的分类和控制8.3并发控制8.4事务处理实例分析8.5分布式事务8.6并发控制8.1事务8.1.1事务的概念8.1.2事务对并发控制和保障数据完整的重要性8.1.1事务的概念事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。遇到错误时,可以回滚事务,取消事务内所做的所有改变,从而保证数据库中数据的一致性和可恢复性。1、事务的特性原子性:事务是数据库的逻辑工作单位
2、,事务中的操作要么都做,要么都不做。一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性:一事务的执行不能被其它事务干扰。持续性(永久性):指事务一旦提交,则其对数据库中数据的改变就应该是永久的2、事务和批的区别编程时,一定要区分事务和批的差别。1)批是一组整体编译的SQL语句,事务是一组作为单个逻辑工作单元执行的SQL语句。2)批语句的组合发生在编译时刻,事务中语句的组合发生在执行时刻。3)当在编译时,批中某个语句存在语法错误,系统将取消整个批中所有语句执行,而在运行时刻,如果事务中某个数据修改
3、违反约束、规则等,系统将回滚整个事物。4)如果批内产生一个运行时刻错误,系统默认只回退到产生该错误的语句。一个事务中也可以拥有多个批,一个批里可以有多个SQL语句组成的事务,事务内批的多少不影响事务的提交或回滚操作。8.1.2事务对并发控制和保障数据完整的重要性1.事务与并发控制的关系如果在用户并发访问期间没有保证多个事务正确的交叉运行,用户操作相同的数据时可能会产生一些意想不到的问题。包括:(1)丢失修改或被覆盖(2)读脏数据(3)不能重复读(4)幻影读2.事务对保障数据一致和完整性的作用故障轻则造成运行事务非正常中断,
4、影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失。影响事务正常运行的故障有:(1)事务内部的故障(2)系统故障(3)介质故障(4)计算机病毒8.1.2事务对并发控制和保障数据完整的重要性8.2事务的分类和控制8.2.1事务的分类8.2.2事务控制8.2.1事务的分类SQLServer的事务模式可分为显式事务、隐式事务和自动事务三种。1)显式事务显式事务是指由用户执行T-sql事务语句而定义的事务,这类事务又称做用户定义事务。定义事务的语句包括:BEGINTRANSACTION:标识一个事务的开始,即启
5、动事务。COMMITTRANSACTION、COMMITWORK:标识一个事务的结束,事务内所修改的数据被永久保存到数据库中。ROLLBACKTRANSACTION、ROLLBACKWORK:标识一个事务的结束,说明事务执行过程中遇到错误,事务内所修改的数据被回滚到事务执行前的状态。2)隐式事务在隐式事务模式下,在当前事务提交或回滚后,SQLServer自动开始下一个事务。所以,隐式事务不需要使用BEGINTRANSACTION语句启动事务,而只需要用户使用ROLLBACKTRANSACTION、ROLLBACKWORK、C
6、OMMITTRANSACTION、COMMITWORK等语句提交或回滚事务。在提交或回滚后,SQLServer自动开始下一个事务。执行SETIMPLICIT_TRANSACTIONSON语句可使SQLServer进入隐式事务模式。在隐式事务模式下,当执行下面任意一个语句时,可使SQLServer重新启动一个事务:所有CREATE语句ALTERTABLE所有DROP语句TRUNCATETABLEGRANTREVOKEINSERTUPDATEDELETESELECTOPENFETCH需要关闭隐式事务模式时,调用SET语句关闭IM
7、PLICIT_TRANSACTIONSOFF连接选项即可。3)自动事务模式在自动事务模式下,当一个语句被成功执行后,它被自动提交,而当它执行过程中产生错误时,被自动回滚。自动事务模式是SQLServer的默认事务管理模式,当与SQLServer建立连接后,直接进入自动事务模式,直到使用BEGINTRANSACTION语句开始一个显式事务,或者打开IMPLICIT_TRANSACTIONS连接选项进入隐式事务模式为止。而当显式事务被提交或IMPLICIT_TRANSACTIONS被关闭后,SQLServer又进入自动事务管理模
8、式。示例:BEGINTRANSELECT*FROMStudentINSERTINTOStudentVALUES(‘9711112’,’张三’,…)SELECT*FROMStudentROLLBACK--回滚整个事务或:COMMIT--提交事务8.2.2事务控制SQLServer中有关事务的
此文档下载收益归作者所有