SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)

二、完整的锁兼容性矩阵(见下图)

 

 对上图的是代码说明:见下图。

 

三、下表列出了数据库引擎可以锁定的资源。

名称

资源

缩写

编码

呈现锁定时,描述该资源的方式

说明

数据行

RID

RID

9

文件编号:分页编号:Slot编号

用于锁定堆中的单个行的行标识符。

索引键

KEY

KEY

7

6字节哈希值

索引中用于保护可序列化事务中的键范围的行锁。

分页

PAGE

PAG

6

文件编号:分页编号

数据库中的 8 KB 页,例如数据页或索引页。

范围

EXTENT

EXT

8

文件编号:范围的第一个分页的编号

一组连续的八页,例如数据页或索引页。

 

HoBT

   

堆或 树。 用于保护没有聚集索引的表中的 树(索引)或堆数据页的锁。

数据表

TABLE

TAB

5

数据表IDOBJID字段)

包括所有数据和索引的整个表。

文件

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') begin drop table #temp create table #temp(spid int,dbid int ,objid int,indid int,type varchar(3),resource varchar(20) ,mode varchar(20),status varchar(5)) end begin tran update WBK_PDE_head set [COP_EMS_NO]='abcde' where wbook_no='BE404942850177' insert #temp exec sp_lock @@spid commit tran -----获取dbid --select DB_ID('Test') --只查看定制的数据库的相关资源,sql 2008 select 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=28 order 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=28 order 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的锁机制(一)——概述(锁的种类与范围)中的“示例代码二”相内容。

转载于:https://www.cnblogs.com/lj820403/p/7246622.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

angularjs1访问子组件_Vue学习笔记之组件的应用

Vue组件的应用:1、基础使用:第一步创建组件,第二步注册组件,第三步使用组件。在注册组件是需要用到template的属性。全局组件和局部组件组件的嵌套(父子组件):注意先后顺序,先声明,后面才能用2、…

Qt 程序打包发布总结

1. 概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行。编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装文件。 QT开发…

FTP服务器原理

21.1 FTP服务器原理使用明码传输方式,且有相当多的安全危机历史。因此一般使用功能较少的vsftpd这个软件。21.1.1 FTP功能简介有以下功能文档传输与管理不同等级的用户身份:user,guest,anonymous命令记录与登录文件记录限制用户活…

java对两个表进行排序_Excel工作簿中多个worksheet工作表,如何对工作表进行排序?...

案例:如下图所示,一个Excel文件中,包含了多个工作表,有1-雷哥office,2-雷哥office......但是,我们发现工作表的顺序是比较混乱的,为了方便管理,如何对工作表进行排序呢?方…

华为手机打字声音怎么开启_华为手机这5个超实用小功能,记得要开启,谁用都说好...

华为手机这5个超实用小功能,记得要开启,谁用都说好用过华为手机的用户应该都知道,emui优化的很到位,同时也给用户非常好的体验感,随着系统的优化,功能也是越来越完善,不仅越来越好用&#xff0c…

qt 保存绘制图片时背景变黑_QGraphicsScene绘制背景图片引起的问题

项目是基于Qt的图形视图框架编写的,现有个需求是要在图形中加入自定义的背景图片。心想不就是个背景图片吗?只要重写drawBackground函数我想怎么画就怎么画啊。于是立马从QGraphicsScene类中派生了一个CScene类,并重写了虚函数drawBackground…

JavaScript | JSON基本格式

————————————————————————————————————————————————————————— JSON 语法 "use strict"; // 简单值 "hello,world" // 必须使用双引号// 对象 {"name": "hugh","age&…

jmeter 生成计数器_使用密码摘要生成器扩展JMeter

jmeter 生成计数器最近,我不得不处理一个具有50,000条用户记录的OpenLDAP实例,并进行一些压力测试。 JMeter是填充LDAP的最佳选择。 但是,在我的情况下,OpenLDAP配置为不接受任何明文密码。 因此,我无法使用通过JMet…

c++ 查找 list中最长的字符串_查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)...

查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)给定一个字符串str,找到不重复字符的最长子字符串。比如我们有 “ABDEFGABEF”, 最长的字符串是 “BDEFGA” 和 “DEFGAB”, 长度为6.再如 “BBBB” 最长字符串是 “B”,…

mysql 触发器 本表_MySQL触发器处理本表数据

关于MySQL的触发器,基本上每个Mysql教程里都有讲到,但是我发现那些教程里讲的都是如何处理其他表的数据。在MySQL中写触发器操作关于MySQL的触发器,基本上每个Mysql教程里都有讲到,但是我发现那些教程里讲的都是如何处理其他表的数…

官方野生蝇群流口水分数

官方是什么? 标题太小,但有用的贡献。 Wildfly Swarm允许我们创建相当小的自包含应用程序,包括我们从Wildfly Application Server中需要的应用程序。 在这篇文章中,我们将研究与Wildfly Swarm合作使用的Drools分数 。 该部分背后的…

MySQL 高水位update_Oracle delete 高水位线处理问题

最近遇到oracle 表中数据量很大查询和更新比较慢 需要删除,发现删除后查询速度还是很慢,原来是delete oracle 高水位没有下降的最近遇到Oracle 表中数据量很大查询和更新比较慢 需要删除,发现删除后查询速度还是很慢,原来是delete…

jasperreports_JasperReports JSF插件用例–简单列表报告

jasperreports这是JasperReports JSF插件系列的第一篇“用例文章” ,我将专注于一个简单的需求,并且我将进一步深入。 起点是我们已经为图书商店完成的项目设置,我将向其中添加一个列表,其中包含在数据库中注册的其他图书&#xf…

2个菜鸟Java常量和枚举陷阱

在对Java和Groovy代码进行的各种代码审查中,我经常看到魔术数字和其他随机字符串在整个代码库中乱七八糟。 例如,魔术数字是下面的代码(Groovy)中的4.2: if (swashbuckle > 4.2) {... }4.2是什么意思?…

mysql cluster 外键_Mysql外键约束

Mysql集群创建外键,分为四种约束:no action,restrict,cascade,set null。如果表A的主关键字是表B中的字段,则该字段称为B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性…

Map类集合遍历

转载于:https://www.cnblogs.com/Neil223/p/7275035.html

小米10解锁bl跳过168_2021年小米红米手机官方解锁BL详细教程+跳过168小时方法合集...

MIUI的解锁风控一直在改动,从之前的无需解锁到现在的168小时绑定限制,时至2021年我们再次重新整理下小米的解锁新规则以及小米解锁常见问题解决方法。比如大家常问的如果跳过168小时解锁时间限制等等小米解锁工具下载:http://miuirom.xiaomi.…

android实现箭头流程列表_Android开发关于ExpandableListView上下箭头左右显示的笔记...

释放双眼,带上耳机,听听看~!关键属性:android:layoutDirection""当安卓的layoutDirection “rtl” 时,箭头在右边显示布局:android:layout_width"match_parent"android:layout_height…

mysql 5.5.41 下载_MySQL 5.5.41/5.6.22 发布下载

MySQL 5.5.41 发布下载,此版本更新内容如下:编译改进移除了旧版本 Mac OS X 和 XCode 版本的CMake 工作区 (Bug #18510941)Previously, the MYSQL_MAINTAINER_MODE CMake option was turned on by default for debug builds and off for release builds…

mysql ado.net 实体数据模型_Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源...

熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件。但是这个模型向导默认只显示微软自己的SQL Server数据源,如果想使用Mysql数据源&#…