欢迎来到天天文库
浏览记录
ID:39810432
大小:736.60 KB
页数:88页
时间:2019-07-11
《事务管理与并发控制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章事务管理与并发控制事务的概念(1.7)事务的概念事务的性质事务管理的基本命令事务举例事务是构成单一逻辑工作单元的操作集合。买卖交易——一手交钱一手交货订票——查询、订位、(交钱)、出票(往返票?)转帐——转出、转入为什么需要事务的概念呢?恢复的需要并发操作的需要买卖交易——一手交钱一手交货订票——查询、订位、(交钱)、出票(往返票?)转帐——转出、转入JamesGray——1998年获得图灵奖在数据库技术、特别是事务处理方面做出了杰出贡献。解决了诸如完整性、安全性、并发控制等一系列技术难题。事务的性质原子性(Atomicity)一致性(Consist
2、ency)隔离性(Isolation)持久性(Durability)事务的这些性质通常称为ACID特性原子性事务的原子性强调了一个事务是一个逻辑工作单元,是一个整体,是不可分割的。一个事务所包含的操作要么全部做,要么全部不做。买卖交易——一手交钱一手交货订票——查询、订位、(交钱)、出票(往返票?)转帐——转出、转入一致性一个事务执行一项数据库操作,事务将使数据库从一种一致性的状态变换成另一种一致性状态。在事务执行前,总是假设数据库是一致的,那么当事务成功执行后,数据库肯定仍然是一致的。买卖交易——一手交钱一手交货订票——查询、订位、(交钱)、出票(往返票
3、?)转帐——转出、转入(帐目平衡)隔离性如果每个事务单独执行能保持原子性和一致性,这些事务并发执行也能保持原子性和一致性,则是事务的隔离性。并发记帐?持久性事务的持久性是指一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。在ATM取钱后银行系统突然发生故障?ACID性质——DBMS的功能如果让用户程序来实现结果会怎样?事务的生命周期事务的结束——提交(Commit)或者撤销(Rollback)事务在活动中的状态活动状态——事务初始时部分提交状态——命令执行完、但未提交失败状态——发现正常操作不能进行撤销状态——撤销事务,恢复到事务前的状态提交状态
4、——成功完成后事务的生命周期命令执行完只要事务没有提交事务就没有结束,还有可能转变到失败状态。活动状态失败状态提交状态撤销状态部分提交状态SQL对事务的支持开始事务结束事务事务保存点隐含事务与自动提交开始事务使用BEGINTRANSACTION命令显式说明一个事务开始,它说明了对数据库进行操作的一个单元的起始点。在事务完成之前出现任何操作错误和故障,都可以撤销事务,使事务回退到这个起始点。结束事务结束事务有两种情况,即成功或失败:成功结束事务的命令是COMMITTRANSACTION,它的作用是提交或确认事务已经完成,所以该命令也称作事务提交。失败的事务需
5、撤销,撤消事务的命令是ROLLBACKTRANSACTION,即撤消在该事务中对数据库所做的更新操作,使数据库回退到事务的起始点。举例:如下程序的结果?BEGINTRANSACTIONCREATETABLETestTran(ColaINTPRIMARYKEY,ColbCHAR(3))INSERTINTOTestTranVALUES(1,'aaa')COMMITTRANSACTIONBEGINTRANSACTIONINSERTINTOTestTranVALUES(2,'bbb')ROLLBACKTRANSACTIONBEGINTRANSACTIONINSER
6、TINTOTestTranVALUES(3,'ccc')COMMITTRANSACTION事务保存点SQL标准还支持“事务保存点”技术,所谓事务保存点就是在事务的过程中插入若干标记,这样当发现事务中有操作错误时,可以不撤消整个事务,只撤消部分事务,即将事务回退到某个事务保存点。事务保存点SQLServer支持事务保存点技术,设置保存点的命令是SAVETRANSACTION,具体格式是:SAVETRANSACTIONsavepoint_name撤消部分事务或回退到事务保存点的命令也是ROLLBACKTRANSACTION,具体格式是:ROLLBACKTRAN
7、SACTIONsavepoint_name假设有订票事务每个中间结点都可以当做一个保存点。北京西安成都兰州昆明银川呼市北京举例:如下程序执行的结果?BEGINTRANSACTIONCREATETABLETestTran(ColaINTPRIMARYKEY,ColbCHAR(3))INSERTINTOTestTranVALUES(1,'aaa')SAVETRANSACTIONtranspoint1INSERTINTOTestTranVALUES(2,'bbb')ROLLBACKTRANSACTIONtranspoint1INSERTINTOTestTranV
8、ALUES(3,'ccc')COMMITTRANSACTION隐含
此文档下载收益归作者所有