中级数据库工程师笔记(十七)------ 事务管理

事务的基本概念

事务是用户定义的一个数据库操作序列,这些操作序列要么全做要么全都不做,是一个不可分割的工作单位。

事务具有以下特性(ACID特性):

  • 原子性
  • 一致性
  • 隔离性
  • 持续性(永久性)

事务通常以BEGIN TRANSACTION(事务开始)语句开始,以COMMIT或ROLLBACK语句结束。

COMMIT称为事务提交语句,表示事务执行成功的结束。

ROLLBACK称为事务回滚语句,表示事务执行不成功的结束,即把事务对数据库的修改进行恢复。

并发操作

在多用户共享系统中,多个用户同时存取同一数据。

(1)并发操作的优点:

         增加了处理器和磁盘的可用性,加大事务吞吐量。

(2)并发操作可能带来的问题:

  • 丢失更新:T1、T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果。
  • 不可重复读:T1读数据后,T2执行更新操作,使T1无法再现前一次读取结果。
  • 读脏数据:T1修改数据并写回磁盘,T2读取同一数据后,T1被撤销即数据恢复原值,T2读的数据与DB中的不一致,称为“脏”数据。

封锁是实现并发控制的一个非常重要的技术。

(3)封锁类型

  • 排它锁(X锁或写锁)

保证其他事物在T释放A上的锁之前,不能修改A。

  • 共享锁(S锁或读锁)

保证其他事物可以读A,但在T释放A上的S锁之前,不能对A做任何修改。

(4)封锁协议

  • 一级封锁协议。事物T在修改数据R之前必须对其加X封锁,直到事物结束才释放。一级封锁协议可防止丢失修改,并保证事物T是可恢复的。在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。
  • 二级封锁协议。在一级封锁的基础上,事物读数据的时候加S锁,读取之后释放。二级封锁协议可以防止丢失更新,读脏数据。在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
  • 三级封锁协议。一级封锁协议加上事物T在读取数据R之前先对其加S锁,直到事物结束才释放。三级封锁协议可防止丢失修改、防止读“脏”数据,还进一步防止了不可重复读。
  • 两段式协议。所有事物必须分为两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值