数据库原理与应用第七章.ppt
《数据库原理与应用第七章.ppt》由会员分享,可在线阅读,更多相关《数据库原理与应用第七章.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 并发控制并发控制 干扰问题 解决干扰封锁 封锁不当死锁 封锁与隔离级别 干扰问题 丢失更新问题 未提交依赖问题 不一致分析问题 幻象读问题 丢失更新问题 例:旅客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也买
2、了一张15日13次7车厢5号下铺的软卧票,用户B更新剩余票信息并将它存入数据库(重复了用户A已经做过的更新)。总的效果:15日13次7车厢5号下铺的软卧票卖了两次。其原因是:允许了用户B在过时的信息基础上去更新数据库,而没有迫使他去看最新的信息。丢失更新问题 用SQL术语描述丢失更新问题未提交依赖问题 未提交依赖问题也称为读“脏”(Dirty Read)数据问题,查询一个已经被其他事务更新、但尚未提交的元组,将会引起未提交依赖问题。不一致分析问题 不一致分析问题也称为不可重复读问题,很多应用可能需要校验功能,这时往往需要连续两次或多次读数据进行校验和分析,结果由于其他事务的干扰,使得前后结果不
3、一致,从而产生校验错误(即不一致的分析)。幻象读问题 幻象读问题与不一致分析问题有关,当事务A读数据时,事务B在对同一个关系进行插入或删除操作,这时事务A再读同一条件的元组时,会发现神秘地多出了一些元组或丢失了一些元组,把这种现象称作幻象读。封锁 封锁的基本技术 封锁机制 SQL Server中与封锁有关的命令 封锁粒度 意向锁 封锁的基本技术当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。以丢失更新问题为例,实施封锁的基本思想是:当一个用户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻更新相同的表或记录,迫使其他
4、用户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。封锁的基本技术实施封锁以后的时间序列封锁机制 共享封锁 独占封锁 更新封锁 有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束(提交或撤消)时才释放(无论如何,所有的封锁都会在事务结束时自动释放)。共享封锁 共享封锁是为读操作设置的一种封锁,所以也称作读封锁,或简称S锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。这种封锁可以保证最大的并发性,任何数量的用户都可以同时对同样的数据施加这种共享锁。已经实施共享锁的表拒绝来自其他事务的独占封锁和更新封锁。独占封锁 独占
5、封锁也叫排他封锁,它是为修改操作设置的一种封锁,也称为写封锁,或简称为X锁,这是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但不拒绝一般的查询操作。更新封锁 当需要对一个记录或一组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁的记录,拒绝来自其他用户的任何封锁,但不拒绝一般的查询操作。SQL Server中与封锁有关的命令 SQL Server的封锁操作是在相关语句的“WITH()”子句中完成的,该短语可以在SELECT、INSERT、U
6、PDATE和DELETE等语句中指定表级锁定的方式和范围。SQL Server中与封锁有关的命令常用的封锁关键词有:TABLOCK:对表施行共享封锁,在读完数据后立刻释放封锁,此类封锁可以避免读“脏”数据,但不具有可重复读的特性。HOLDLOCK:与TABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁,这样可以保证数据的可重复独特性。NOLOCK:不进行封锁,此关键词仅应用于SELECT语句,这样可能会读取未提交事务的数据,即有可能发生“脏”读。TABLOCKX:对表实施独占封锁。UPDLOCK:对表中的指定元组实施更新封锁;这时其他事务可以对同一表中的其他元组也实施
7、更新封锁,但是不允许对表实施共享封锁和独占封锁。SQL Server中与封锁有关的命令DECLARE d datetime,t char(6),s char(2),n char(10)BEGIN TRANSACTIONSELECT n=座位号 FROM R WITH(UPDLOCK)WHERE 日期=d AND 车次=t AND 座别=s AND 状态 IS NULLIF UPDATE R SET 状态=Y WHERE 座位号=n AND 日期=d AND 车次=t AND 座别=sCOMMIT TRANSACTIONELSEROLLBACK TRANSACTION封锁粒度 封锁的对象可以是表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 第七
限制150内