第08章事务管理19621.pptVIP

  • 0
  • 0
  • 约1.16万字
  • 约 86页
  • 2019-08-10 发布于湖北
  • 举报
第8章 事务管理 事 务 并发控制 恢 复 事 务 事务的概念 事务的性质 SQL对事务的支持 事务的概念 事务是构成单一逻辑工作单元的操作集合。 为什么需要事务的概念呢? 恢复的需要 并发操作的需要 事务的性质 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 原子性 事务的原子性强调了一个事务是一个逻辑工作单元,是一个整体,是不可分割的。一个事务所包含的操作要么全部做,要么全部不做。 一致性 一个事务执行一项数据库操作,事务将使数据库从一种一致性的状态变换成另一种一致性状态。 在事务执行前,总是假设数据库是一致的,那么当事务成功执行后,数据库肯定仍然是一致的。 隔离性 如果每个事务单独执行能保持原子性和一致性,这些事务并发执行也能保持原子性和一致性,则是事务的隔离性。 持久性 事务的持久性是指一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。 SQL对事务的支持 开始事务 结束事务 事务保存点 隐含事务与自动提交 开始事务 使用BEGIN TRANSACTION命令显式说明一个事务开始,它说明了对数据库进行操作的一个单元的起始点。在事务完成之前出现任何操作错误和故障,都可以撤销事务,使事务回退到这个起始点。 结束事务 成功结束事务的命令是COMMIT TRANSACTION,它的作用是提交或确认事务已经完成,所以该命令也称作事务提交。 撤消事务的命令是ROLLBACK TRANSACTION,即撤消在该事务中对数据库所做的更新操作,使数据库回退到事务的起始点。 事务保存点 SQL标准还支持“事务保存点”技术,所谓事务保存点就是在事务的过程中插入若干标记,这样当发现事务中有操作错误时,可以不撤消整个事务,只撤消部分事务,即将事务回退到某个事务保存点。 事务保存点 SQL Server支持事务保存点技术,设置保存点的命令是SAVE TRANSACTION(在SQL标准中是SAVEPOINT命令),具体格式是: SAVE TRANSACTION savepoint_name 撤消部分事务或回退到事务保存点的命令也是ROLLBACK TRANSACTION,具体格式是: ROLLBACK TRANSACTION savepoint_name 事务保存点 在SQL标准中还支持取消事务保存点的命令RELEASE SAVEPOINT,在SQL Server目前的版本中不支持取消事务保存点。 隐含事务与自动提交 SQL标准规定事务的开始是隐含的,在发出COMMIT(提交事务)或ROLLBACK(撤消事务)命令之前,该事务将一直保持有效。一个事务被提交或撤消之后,又将自动启动下一个新事务。 隐含事务与自动提交 SQL Server也可以设置成隐含事务方式,设置隐含事务方式的命令是: SET IMPLICIT_TRANSACTIONS ON 取消隐含事务方式的命令是: SET IMPLICIT_TRANSACTIONS OFF 隐含事务与自动提交 当是隐含事务方式时,不需要用BEGIN TRANSACTION命令显式的启动或开始一个事务,但需要用COMMIT或ROLLBACK命令结束事务; 当是非隐含事务方式时,如果没有用BEGIN TRANSACTION命令显式的启动或开始一个事务,则每条操作数据库的语句都将作为独立的事务被自动提交或撤消,这时候不需要、也不能执行COMMIT或ROLLBACK命令。 并发控制 干扰问题 解决干扰——封锁 封锁不当——死锁 封锁与隔离级别 干扰问题 丢失更新问题 未提交依赖问题 不一致分析问题 幻象读问题 丢失更新问题 例: 旅客A来到A售票处,要买一张15日北京到上海的13次直达快速列车的软卧车票,售票员A(下称用户A)在终端A查看剩余票信息; 几乎在同时,旅客B来到B售票处,也要买一张15日北京到上海的13次直达快速列车的软卧车票,售票员B(下称用户B)从终端B查到了同样的剩余票信息; 旅客A买了一张15日13次7车厢5号下铺的软卧票,用户A更新剩余票信息并将它存入数据库; 这时用户B不知道用户A已经将15日13次7车厢5号下铺的软卧票卖出,使旅客B也买了一张15日13次7车厢5号下铺的软卧票,用户B更新剩余票信息并将它存入数据库(重复了用户A已经做过的更新)。 丢失更新问题 未提交依赖问题 未提交依赖问题也称为读“脏”(Dirty Read)数据问题,查询一个已经被其他事务更新、但尚未提交的元组,将会引起未提交依赖问

文档评论(0)

1亿VIP精品文档

相关文档