- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库应用技术16.ppt
16.1 并发异常问题 SQL Server 作为多用户数据库系统,可同时运行多个事务并行存取数据,充分利用系统资源,发挥数据库共享资源的特点。在这种情况下,可能出现多个并发的事务同时存取数据存取同一数据的情况。在并发操作中,需要使用某种并发控制机制,以保证在多用户程序情况下数据的一致性、完整性。 16.1.1丢失更新 例如,当两个事务T1和T2同时更新某条记录时,它们读取入记录并修改,事务T2提交的结果破坏了T1提交的结果,导致T1的修改结果丢失,因此出现“丢失更新(Lost Update)”问题。 16.1.2脏数据 “脏”数据是指事务T1修改某一条记录,将其写入数据库,事务T2读取同一条记录后,T1由于某种原因被撤销,此时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,该数据为“脏”数据。 16.1.3不可重复读取 不可重复读取也称作不一致的分析,是指事务T1读取数据后,事务T2对同一数据执行更新操作,使T1再次读取该数据时,得到与前一次不同的值。 16.1.3不可重复读取 例如,资金转帐过程中需要打印票据,系统中事务活动顺序如下: 1.事务T1打印A帐户转帐前的余额,设A=10万元。 2.事务T1从A帐户中转出1万元,A=9万元。 3.事务T2 从B帐户转入A帐户2万元,A=10万元,T2提交。 4.事务T1打印 A帐户转帐后的余额,A=11万元,T1提交。 因为T2在T1操作过程中,更新了A帐户的余额,使得T1在第二次读取(转帐后)A帐户余额时得到的结果加上转出的资金与第一次读取(转帐前)的帐户余额不一致,多了2万元。 16.1.4幻影数据 事务T1按一定条件从数据集中读取数据后,事务T2对该数据集删除或插入了一些记录,这时事务T1再按相同条件读取数据时,发现少了或多了一些记录。 16.1.4幻影数据 例如,统计订单系统中事务活动如下: 1.事务T1打印订单表中的订单记录。 2.事务T2向订单表插入了新的订单记录,T2提交。 3.事务T1统计订单表中的记录总数,T1提交。 因为事务T2在T1结束前向订单表中插入了新的记录,导致事务T1打印的订单记录数量和T1统计出来的订单数量不一致。 16.2 锁 锁(Locking)是最常采用的并发控制机制。锁就是事务对某个数据库中的资源如表、记录存取前,先向系统发出请求,封锁该资源。 SQL Server 有两种主要类型的锁:基本锁和用于特殊情况的专用锁。 16.2.1 基本锁 基本锁的类型有两种:排他锁(Exclusive Locks)和共享锁(Share Locks)。 1.排他锁(X封锁) 排他锁又称为“写锁” 。 2.共享锁(S封锁) 共享锁又称为“读锁”。 16.2.2 锁的相容性 不同的锁相互作用,其相容性可以用下表来表示,其中“X”表示事务在对象上加排他锁,“S”表示事务在对象上加共享锁,“-”表示事务没有对对象加锁: 16.2.3 封锁协议 对操作的数据加什么类型的锁,什么时候释放锁,这些内容构成了不同的封锁协议。 1.一级封锁协议 2.二级封锁协议 3.三级封锁协议 16.2.4 锁的粒度 锁的粒度指封锁目标的大小。下表列出了SQL Server能够对下列资源加锁: 16.2.4 锁的粒度 选择多大的封锁粒度,根据对数据的操作而定。如果只与个别记录有关,可以以记录为单位进行加锁,而操作涉及表中的大部分记录时,可以封锁整个表。 封锁的粒度与并行度和系统并发控制的开销有关。封锁的粒度越细,并发性越高,但系统的开销也越大。 为了获得最佳的性能, SQL Server 能够自动在一个与任务相适应的级别上锁定资源,将封锁的代价最小化。 16.2.5 专用锁 1.更新锁 一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (S) 锁,然后修改行,此操作要求锁转换为排它 (X) 锁 。 2.意向锁 意向锁表示 SQL Server如果获得了一个对象(资源)的锁,则说明该结点的下层对象正在被加锁,并且对任意对象加锁时,必须对他的上层对象加锁。 16.2.5 专用锁 意向锁 16.2.5 专用锁 3.架构锁 执行表的数据定义语言 (DDL) 操作(例如添加列或除去表)时使用架构修改 (Sch-M) 锁。 4.大容量更新锁 当将数据大容量复制到表,且指定了 TABLOCK 提示或者使用 sp_tableoption 设
您可能关注的文档
最近下载
- 武汉市2025届高中毕业生四月调研考试 英语试卷(含答案详解).pdf
- 硕士研究生论文的选题与写作.ppt
- 2019年7月安徽省砀山县事业单位幼儿教师招聘考试《幼儿保教知识与能力》真题试卷(含答案).pdf VIP
- 确保室内空气质量的施工方案与技术措施.pdf
- 中小银行上云趋势研究分析报告 2024.pptx
- 证券从业人员证券投资基金基础知识题库与答案.doc
- 小学家长会英语老师课件.pptx VIP
- 第七单元《红楼梦》薛宝钗、林黛玉人物形象赏析 公开课一等奖创新教案统编版高中语文必修下册.docx VIP
- 最新部编版五年级下册语文单元教材分析(全册) .pdf VIP
- 春季学期《工业控制网络》试题.doc
文档评论(0)