- 1、本文档共304页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
● 8.3 数据库的并发控制及SQL Server的并发控制机制 ● 8.3.1 事务及并发控制的基本概念 事务是多用户系统的一个数据操作基本单元。允许多个事务并行地执行,对并发执行的事务的控制也就称为并发控制。 1. 事务的概念 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 在SQL语言中,定义事务的语句有三条: BEGIN TRANSACTION; COMMIT; ROLLBACK; 2. 事务并发操作可能产生的数据不一致问题 ● 8.3.2 封锁及封锁协议 1. 锁的类型 (1) 排它锁(Exclusive Locks,简称X锁) 排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。 (2) 共享锁(Share Locks,简称S锁) 共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。 2. 封锁协议 (1) 一级封锁协议 一级封锁协议是事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。 (2) 二级封锁协议 二级封锁协议是:事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。 (3) 三级封锁协议 三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。 ● 8.3.3 封锁出现的问题及解决方法 1. 活锁和死锁 (1) 活锁 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。 解决活锁的方法是采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。 (2) 死锁 多事务交错等待的僵持局面称为死锁。 解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定手段定期诊断系统中有无死锁,若有则解除之。 预防死锁通常有两种方法: 1) 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。 2) 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 2. 并发调度的可串行性 多个事务并发执行的结果与按串行执行的结果相同,这种调度策略称为可串行化(Serializable)的调度,反之称为不可串行化调度。 3. 两段锁协议 1) 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。 2) 在释放一个封锁之后,事务不再申请并获得对该数据的封锁。 4. 封锁的粒度 封锁粒度(Granularity)是指封锁对象的大小。 封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越大,并发度越低,系统开销也越小。 (1)多粒度封锁 (2) 意向锁 如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁。 意向共享锁(IS锁)。 2) 意向排它锁(IX锁)。 3) 共享意向排它锁(SIX锁)。 1. SQL Server的事务类型 SQL Server的事务分为两种类型:系统提供的事务是指在执行某些语句时,一条语句就是一个事务,它的数据对象可能是一个或多个表(视图),可能是表(视图)中的一行数据或多行数据;用户定义的事务以BEGIN TRANSACTION语句开始,以COMMIT(事务提交)或ROLLBAK(回滚)结束。 分布式事务操作会涉及到多个服务器,只有每个服务器的操作都成功时,其事务才能被提交,否则,即使只有一个服务器的操作失败,整个事务就只有回滚结束。 ● 8.3.4 SQL Server的并发控制机制 2. SQL Server的空间管理及锁的级别 (1) 行级锁 行级锁是指事务操作过程中,锁定一行或若干行数据。 (2) 页级锁 一个页有8KB,所有的数据、日志和索引都放在页上。 (3) 簇级锁 一个簇有8个连续的页。簇级锁指事务占用一个簇,这个簇不能被其他事务占用。 (4) 表级锁 指事务在操纵某一个表的数据时锁定了这些数据所在的整个表,其他事务不能访问该表中的数据。 (5) 数据库级锁 锁定整个数据库,防止其他用户或事务对锁定的数据库进行访问 2) 对S2分解。S2的码为HS,选择C→T分解。 得出:?={ S1,S3,S4}
您可能关注的文档
- 教学课件 社科方法论--但昭明.ppt
- 教学课件 建筑装饰空间.ppt
- 教学课件 商务英语精读(第4册)张中宁.ppt
- 教学课件 商务英语精读(第3册)张中宁.ppt
- 教学课件 市场营销-严金才.ppt
- 教学课件 社会保障国际比较.ppt
- 教学课件 实用会计英语(第二版)--李海红.ppt
- 教学课件 实用会计英语.ppt
- 教学课件 移动通信--李立.ppt
- 教学课件 多媒体通信.ppt
- 2025版燃气管道安装与安全监管合同.docx
- 2025版电商企业保密协议及保密设施建设服务合同.docx
- 2025版班组承包合同实施细则与考核标准.docx
- 2025版财务信息保密协议及高管离职后商业机密保护合同.docx
- 2025版禁止过户的二手房买卖协议书.docx
- 2025版离婚协议书起草与赡养费合同.docx
- 2025版菜鸟驿站社区服务站合作协议范本.docx
- 【A4考试版】第一单元两位数乘两位数素养测评卷【思维拓展卷】-2024-2025学年三年级数学下册 苏教版.pdf
- 2025高考年语文专题复习(学生用书)训练任务群二 专题练案6 自传类成长小说.pdf
- 2025高考年语文专题复习(学生用书)训练任务群八 考点练案4 赏析句段作用:小说阅读+散文阅读+古代诗歌阅读.pdf
文档评论(0)