当前位置:首页 >时尚 >SQL Server查询使用键查找时锁申请及释放顺序  当然看的及释过程中

SQL Server查询使用键查找时锁申请及释放顺序  当然看的及释过程中

2024-05-28 21:11:29 [百科] 来源:避面尹邢网

SQL Server查询使用键查找时锁申请及释放顺序

作者:JentleWang 数据库 SQL Server 最近看了高兄的查查找一篇文章,SQL Server高频,询使序高并发访问中的键查找死锁解析,很有收获,用键里面讲到了键查找引起的时锁申请死锁问题。

 当然看的及释过程中,其实自己有个疑问:

对于键查找这类查询,放顺会申请哪些锁,查查找锁申请和释放的询使序顺序是怎样的?

SQL Server查询使用键查找时锁申请及释放顺序  当然看的及释过程中

准备

SQL Server查询使用键查找时锁申请及释放顺序  当然看的及释过程中

备注:测试表仍然使用高兄文中创建的测试表testklup

SQL Server查询使用键查找时锁申请及释放顺序  当然看的及释过程中

在开始之前,使用dbcc ind 命令先看下测试表的用键数据组织情况

然后语句执行计划图如下:

查看申请了哪些锁

为了得到查询会申请哪些锁,通过如下这条查询就可以得到

  1. begin tran  
  2. select cont2 from testklup with(HOLDLOCK) where nlskey=1 

 

在默认的时锁申请事务隔离级别下,开启事务,及释然后查询中使用HOLDLOCK提示。放顺HOLDLOCK将共享锁保留到事务完成,查查找而不是询使序在相应的表、行或数据页不再需要时就立即释放锁。用键

然后使用DMV视图sys.dm_tran_locks来查看持有锁的情况,查询结果如下:

从查询结果,可以得出申请了如下的锁:

1)在表object上申请了IS锁

2)在非聚集索引PAGE上申请了IS锁

3)在非聚集索引KEY上申请了S锁

4)在聚集索引的PAGE上申请了IS锁

5)在聚集索引的KEY上申请了S锁

查看锁申请和释放的顺序

我们使用SQL Profiler来跟踪锁申请和释放的事件。模板选择TSQL-LOCKS,只跟踪运行语句的会话spid,同时事件增加Lock:Acquired和Lock:Released。执行查询跟踪结果如下:

 

从上图可以得出如下信息:

1) 非聚集索引申请的S锁需等到键查找在聚集索引上查找完毕后才释放。这其实也是键查找导致死锁发生的条件

2)锁申请和释放的顺序有点类似于进栈和出栈,先申请的***释放

3)疑问:为什么没有键查找在聚集索引Key上申请的S锁记录呢?锁肯定是有,但不清楚为什么Profiler没有记录到,因为我跟踪查询加HOLD时,是会在***申请一个S锁的,结果如下:

小结

通过本文,我们知道了一个简单的键查找查询会申请哪些锁,同时,锁申请和释放的顺序是怎样的。在非聚集索引上申请的锁一直到键查找执行完毕才会释放。

原文链接:http://www.cnblogs.com/JentleWang/p/3911167.html

责任编辑:彭凡 来源: 博客园 SQL Server查询

(责任编辑:热点)

    推荐文章
    • 清明假期酒店预订量同比增长4.5倍 哪些城市热度较高?

      清明假期酒店预订量同比增长4.5倍 哪些城市热度较高?清明节一般放假三天,部分特殊人员可能需要值班,所以在清明节期间或是无法外出游玩了。临近清明节期间,你打算去哪里游玩呢?目前数据指出,清明假期酒店预订量上升,同比增长4.5倍。去年清明节,由于需要做好疫 ...[详细]
    • 开源巨献:Google最热门60款开源项目

      开源巨献:Google最热门60款开源项目开源巨献:Google最热门60款开源项目作者:佚名 2018-01-04 21:54:57新闻 开源 本文为大家整理了 Google 开源的项目,看看有没有感兴趣的,排名顺序按照 Github ★S ...[详细]
    • 【讨论】Docker会取代虚拟机吗?

      【讨论】Docker会取代虚拟机吗?【讨论】Docker会取代虚拟机吗?作者:colstuwjx编译 2015-08-20 10:31:55开源 Linux Docker无疑是当下最具影响力的开源项目。Docker何以如此的成功? 它是 ...[详细]
    • JDBC连接数据库实现—手把手教你打造一款简单的图书管理系统

      JDBC连接数据库实现—手把手教你打造一款简单的图书管理系统JDBC连接数据库实现—手把手教你打造一款简单的图书管理系统作者:Java进阶者 2021-06-24 10:52:35开发 后端 数据库 本文基于JDBC数据库基础,带大家打造了一款简易的图书管理系 ...[详细]
    • 抖音dou+是什么意思 抖音dou+的常见问题有哪些?

      抖音dou+是什么意思 抖音dou+的常见问题有哪些?对于抖音用户来说,可以使用的功能还是非常的多的,作为抖音用户,如果希望自己发布的视频获得更多的曝光率,那么就需要掌握一些技巧。大家知道抖音dou是什么意思吗?下面进行介绍。抖音dou+是什么意思?抖音 ...[详细]
    • 陆岷峰教授

      陆岷峰教授作者 | 陆岷峰 来源 | 零壹财经专栏 摘要: 防范系统性金融风险是构建新安全格局的核心,而商业银行信用风险是系统性金融风险的关键,因此,如何构建健全的信用风险预警体系是当前商业银行需要深入研究的重 ...[详细]
    • 德银(DB.US)完成收购英国精品投行Numis

      德银(DB.US)完成收购英国精品投行Numis原标题:德银(DB.US)完成收购英国精品投行Numis)智通财经获悉,德意志银行(DB.US)周五表示,该行已完成对总部位于伦敦的精品投行Numis的收购,扩大了该行与英国企业客户的联系。德意志银行 ...[详细]
    • 打散算法的三种解决方案及其选型场景

      打散算法的三种解决方案及其选型场景打散算法的三种解决方案及其选型场景作者:闲鱼技术 2020-08-20 20:51:17大数据 算法 打散是在推荐、广告、搜索系统的结果基础上,提升用户视觉体验的一种处理。主要方法是对结果进行一个呈现 ...[详细]
    • 东方国信(300166.SZ)公布消息:拟使用节余募集资金永久补充流动资金

      东方国信(300166.SZ)公布消息:拟使用节余募集资金永久补充流动资金东方国信(300166.SZ)公布,公司于2021年3月9日召开了第四届董事会第三十二次会议和第四届监事会第二十五次会议,审议通过了《关于使用节余募集资金永久补充流动资金的议案》,公司经中国证券监督管 ...[详细]
    • 内衣品牌海外营销拆解

      内衣品牌海外营销拆解电商渠道傲人的销售数据,催化了许多细分领域新兴电商品牌的诞生,比如女士内衣。不同于传统品牌线下铺设门店的策略,这些电商品牌从成立初期就开始尝试网络营销,通过网络完成塑造品牌形象、积累人气、销售的闭环。 ...[详细]
    热点阅读