ms-sql 锁机制

ms-sql 锁机制

ID:21701049

大小:613.06 KB

页数:25页

时间:2018-10-24

ms-sql 锁机制_第1页
ms-sql 锁机制_第2页
ms-sql 锁机制_第3页
ms-sql 锁机制_第4页
ms-sql 锁机制_第5页
资源描述:

《ms-sql 锁机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MS-SQL锁机制2011-11-21概要锁定的概述锁模式分类锁粒度锁的持续时间锁的所有权查看锁锁定实例(一)锁的概述为什么要引入锁锁是任何多用户数据库系统的一个至关重要的功能,悲观和乐观并发模型都用到了锁。只不过两种模型中,其他进程处理被锁定数据的方式不同。多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:丢失更新A、B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果。2.脏读A用户修改了数据,随后B用户读取该数据,但A用户回滚事务,未提交,此时B用户的数据与数据库内的数据产生不一致。3.不可重复读A用户读取数据,随后B用户读出该数据并修改,此时A用户再读

2、取数据时发现前后两次的不一致。并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致。(二)锁模式—锁的类型共享锁数据被读取时有SQLServer自动获得。可在表、页面、索引键或单个行上持有共享锁。通常,共享锁只要数据读取完毕就释放,但这会可以通过使用查询提示或不同的事务隔离级别而改变。独占锁当数据INSERT、UPDATE或DELTE操作修改时,SQLServer自动获得数据上的独占锁。在一个特定的数据源上,同一时刻只有一个进程可以获得独占锁;如果一个进程独占地锁定了请求的数据源,那么别的进程无法再此数据源上获得任何种类的锁。独占锁一直持有到事务结束。更新锁更新锁

3、实际上并不是一种独立的锁,而是共享锁和独占锁的混合。当SQLServer执行数据修改操作却首先需要搜索表以找到需要修改的资源时会获得更新锁。不要被名字误导,更新锁并不只是用于UPDATE操作。对任何需要在进行实际修改之前搜索数据的修改操作使用更新锁。这样操作包括,首先更新及删除,带有聚集索引的表上进行插入操作。4.意向锁意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须先对它的上层结点加意向锁。例如,对任一元组加锁时,必须先对它所在的关系加意向锁。于是,事务T要对关系R1加X锁时,系统只要检查根结点数据库和关系R1是否己加了不相容的锁,而不再需要搜索

4、和检查尺中的每一个元组是否加了X锁。下面介绍三种常用的意向锁:意向共享锁(IntentShareLock,简称IS锁);意向排它锁(IntentExclusiveLock,简称IX锁);共享意向排它锁(ShareIntentExclusiveLock,简称SIX锁)。类型:IS锁:如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。例如,要对某个元组加S锁,则要首先对关系和数据库加IS锁。IX锁:如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。例如,要对某个元组加X锁,则要首先对关系和数据库加IX锁。SIX锁:如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即

5、SIX=S+IX。例如对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会、更新个别元组(所以要对该表加IX锁)。5.特殊锁模式包含三种额外的锁模式:架构稳定锁、架构修改锁和大容量更新锁。当查询被编译时,架构稳定锁会纺织其他进程获取架构修改锁(在表结构被修改时获得)。在执行BULKINSERT命令或者使用bcp实用工具导入数据时会获取大容量更新锁。6.转换锁转换锁不会由SQLServer直接请求,而是从有一种模式转换到另一种模式所造成的。SQLServer支持的3类转换锁是SIX、SIU和UIX。其中最常见的是SIX。如果事务持有一个资源上的共享锁(S),然后又需要一个IX

6、锁,此时出现的锁模式就是SIX。例如:假设发出一下批命令:SETTRANSACTIONISOLATIONLEVELREPEATABLEREADBEGINTRANSELECT*FROMMAINUSER;UPDATEMAINUSERSETIDCARD=‘123456’WHEREUSERID=1;如果表恨到,SELECT语句会获得一个共享表锁,UPDATE语句获得单个独占锁以执行单个行的更新,而键级别的X锁意味着在页和表级别上存在IX锁。当一个进程在一张表上拥有共享锁并在该表的一行上拥有更新锁时,就出现了SIU锁;而当一个进程在一张表上拥有更新锁并在一行上拥有独占锁时就出现了UIX锁。7.键范围锁只

7、在可序列化隔离级别中为了锁定一定范围内的数据而被获取。键范围锁只能在键上获取。其他大多数锁模式能够应用于几乎任何锁资源上。例如,共享锁和独占锁可以在表、页、行或键上获取。锁模式简表缩写锁模式说明SShared允许其他进程读取但不能修改锁定的资源XExclusive防止别的进程修改或者读取锁定资源中的数据UUpdate防止其他进程过的更新锁或独占锁;在搜索要修改的数据时使用ISIntentShare

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。