SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
来源:互联网 发布:淘宝返现金怎么弄 编辑:程序博客网 时间:2024/06/15 20:58
二、完整的锁兼容性矩阵(见下图)
对上图的是代码说明:见下图。
三、下表列出了数据库引擎可以锁定的资源。
名称
资源
缩写
编码
呈现锁定时,描述该资源的方式
说明
数据行
RID
RID
9
文件编号:分页编号:Slot编号
用于锁定堆中的单个行的行标识符。
索引键
KEY
KEY
7
6字节哈希值
索引中用于保护可序列化事务中的键范围的行锁。
分页
PAGE
PAG
6
文件编号:分页编号
数据库中的 8 KB 页,例如数据页或索引页。
范围
EXTENT
EXT
8
文件编号:范围的第一个分页的编号
一组连续的八页,例如数据页或索引页。
HoBT
堆或 B 树。 用于保护没有聚集索引的表中的 B 树(索引)或堆数据页的锁。
数据表
TABLE
TAB
5
数据表ID(OBJID字段)
包括所有数据和索引的整个表。
文件
FILE
FIL
3
文件编号
数据库文件。
应用程序
APPLICATION
APP
10
6字节哈希值
应用程序专用的资源。
METADATA
元数据锁。
ALLOCATION_UNIT
分配单元。
数据库
DATABASE
DB
2
数据库代码(DBID字段)
整个数据库。
索引
IDX
4
Db_id:object_id:index_id相关的其他资源
索引中的数据行锁定,
四、SQL SERVER要锁定资源时,默认是从最底级开始锁起,例如,索引键值,数据行,以避免大范围锁定,以避免影响其他人同时访问该范围内的其他数据,但是当内存不足时,SQL SERVER会自动扩大锁定范围以减低管理锁定的负荷。下面我们来看一个示例。
--建立SP_LOCK输出缓存表if exists( select * from tempdb..sysobjects where name like '#temp%' and type ='u')begindrop table #tempcreate table #temp(spid int,dbid int ,objid int,indid int,type varchar(3),resource varchar(20),mode varchar(20),status varchar(5))endbegin tranupdate WBK_PDE_head set [COP_EMS_NO]='abcde' where wbook_no='BE404942850177'insert #temp exec sp_lock @@spidcommit tran -----获取dbid--select DB_ID('Test')--只查看定制的数据库的相关资源,sql 2008select spid,数据库=DB_NAME(dbid),对象=OBJECT_NAME(objid),索引=(select name from sysindexes where ID=OBJID and indid=t.indid ),TYPE,resource,mode,status from #temp t where dbid=28order by dbid,objid,indid------以SQL 2005的sys.indexes表查询相关数据 select spid,数据库=DB_NAME(dbid),对象=OBJECT_NAME(objid),索引=(select name from sys.indexes where object_id=OBJID and index_id=t.indid ),TYPE,resource,mode,status from #temp t where dbid=28order by dbid,objid,indid
说明:
1.建立临时表#Temp用以存储系统存储过程sp_lock输出的数据
2.开启事务,然后更新数据(update),但不去确认事务,数据库会锁定相关对象,将sp_lock所呈现的相关数据插入到#Temp表中,并将结果查询出来。
在查询分析器中执行以下代码
select a.*,b.name from #temp a left join sysobjects b on a.objid=b.id order by a.type
图如下示:
另外的示例可以参见SQL SERVER的锁机制(一)——概述(锁的种类与范围)中的“示例代码二”相内容。
- SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
- SQL SERVER的锁机制(一)——概述(锁的种类与范围)
- SQL SERVER的锁机制(一)——概述(锁的种类与范围)
- SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)
- SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)
- SQL SERVER 完整的锁兼容性矩阵
- SQL server锁的机制 (2)
- SQL server锁的机制
- SQL server锁的机制
- SQL server锁的机制
- SQL server锁的机制
- SQL SERVER的锁机制
- sql server锁的机制
- sql server锁的类型与锁机制
- Java锁机制(一)-Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制
- [SQL Server] 锁兼容性
- 数据库的事务和锁机制(SQL Server)
- SQL Server 的锁定和阻塞
- 判段s2中所有字符是否都在s1中
- 希尔排序
- Set和HashSet
- JavaScript: 世界上最被误解的语言|Douglas Crockford
- poj 1676-What time is it?
- SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
- 年终奖双薪不发放违反劳动法吗?
- 算法作业3
- VirtualBox下安装ghost系统
- 【数据结构】选择排序
- Android硬件编程NFC学习笔记(3)
- P2P模式的TCP/UDP套接口通信原理流程图
- vs2010开发安卓(一)
- opencv之滑动条控制视频