sqlserver中表锁定的原理及解锁演示

sqlserver中表锁定的原理及解锁演示

ID:34725938

大小:370.68 KB

页数:8页

时间:2019-03-10

sqlserver中表锁定的原理及解锁演示_第1页
sqlserver中表锁定的原理及解锁演示_第2页
sqlserver中表锁定的原理及解锁演示_第3页
sqlserver中表锁定的原理及解锁演示_第4页
sqlserver中表锁定的原理及解锁演示_第5页
资源描述:

《sqlserver中表锁定的原理及解锁演示》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、有几个朋友留言建议结合例子来演示一下,上篇已经说过锁的几种类型,可以利用系统动态视图sys.dm_tran_locks查看到,重要的栏位如下:resource_type被锁的资源类型(Database,FILE,Object,PAGE,KEY,EXTENT,RID,APPLICATION,METADATA,HOBT,APPOCATION_UNIT)request_mode锁的类型(共享锁,更新锁,排它锁,架构锁等)resource_description资源描述request_session_idRequestsessionID一:下面以A

2、dventureWorks2008为示例数据库做简要的说明,过滤掉一般的数据库的共享锁,作为示例必须要看到锁,所以用WITH(HOLDLOCK)来保持锁.1.Sharedlocks(S)共享锁1USEAdventureWorks200823BEGINTRAN4select*fromSales.SalesOrderHeaderWITH(HOLDLOCK)5whereSalesOrderID='43662'678SELECTresource_type,request_mode,resource_description,1request_sess

3、ion_id,DB_NAME(resource_database_id)asresource_database2FROMsys.dm_tran_locks3WHEREresource_type<>'DATABASE'45--ROLLBACKTRAN在事务回滚之前,查看锁的类型:其他session对Table只读,不能更新,在开一个新的session测试:6select*fromSales.SalesOrderHeaderwhereSalesOrderID='43662'78go9updateSales.SalesOrderHeaderset

4、OrderDate=GETDATE()whereSalesOrderID='43662'select可以正常执行,update语句一直处于等待状态,等待上面的session释放锁.2.Updatelocks(U):更新锁是共享锁和独占锁的组合.用UPDLOCK保持更新锁10USEAdventureWorks20081112BEGINTRAN13select*fromSales.SalesOrderHeaderWITH(UPDLOCK)14whereSalesOrderID='43662'151SELECTresource_type,requ

5、est_mode,resource_description,2request_session_id,DB_NAME(resource_database_id)asresource_database3FROMsys.dm_tran_locks4WHEREresource_type<>'DATABASE'56ROLLBACKTRAN查看到锁的信息:3.Exclusivelocks(X):独占锁是为了锁定数据被一个session修改的数据,而不能够被另外的session修改.只能指定NOLOCK来读取.7USEAdventureWorks2008

6、89BEGINTRAN1011updateSales.SalesOrderHeadersetShipDate=GETDATE()12whereSalesOrderID='43662'1314SELECTresource_type,request_mode,resource_description,15request_session_id,DB_NAME(resource_database_id)asresource_database--,*16FROMsys.dm_tran_locks1WHEREresource_type<>'DATABA

7、SE'23ROLLBACKTRAN查看锁:4.Intentlocks(I):意向锁用于建立锁的层次结构.意向锁包含三种类型:意向共享(IS)、意向排他(IX)和意向排他共享(SIX)。数据库引擎使用意向锁来保护共享锁(S锁)或排他锁(X锁)放置在锁层次结构的底层资源上。意向锁之所以命名为意向锁,是因为在较低级别锁前可获取它们,因此会通知意向将锁放置在较低级别上。意向锁有两种用途:防止其他事务以会使较低级别的锁无效的方式修改较高级别资源。提高数据库引擎在较高的粒度级别检测锁冲突的效率。5.Schemalocks(Sch):架构锁Schemas

8、tabilitylock(Sch-S):保持架构稳定性,用在生成执行计划时,不会阻止对数据的访问.Schemamodificationlock(Sch-M):用在DDL操作时.当

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

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

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