SQL Server阻塞blocking案例分析
今天在性能测试过程中发现大量阻塞报警,检查whoisactive(https://github.com/amachanic/sp_whoisactive/)数据发现,阻塞blocking头部session当前执行的语句如下:
<?query —
(@p0 int,@p1 datetime,@p2 bigint,@p3 bigint,@p4 bigint)INSERT INTO [LicenseAction]([LicenseActionTypeID], [ActionDate], [LicenseID], [DocumentID], [TransactionDetailID])
VALUES (@p0, @p1, @p2, @p3, @p4)
SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value]
–?>

被block的session有几十个,但是当前执行的语句都一样:
<?query —
UPDATE dbo.HT
SET IQuantity = IQuantity + 1,
IRIQuantity = IQuantity + 1,
QuotaFilledDate = CASE WHEN FilledDate IS NULL
AND IssuedQuantity + 1 >= QuotaQuantity THEN dbo.udf_GetCurrentDateTime()
ELSE QuotaDate
END
FROM dbo.Hunt
WHERE HID = @HID
–?>
锁等待信息如下:
<Lock resource_type=”KEY” index_name=”PK_Hunt” request_mode=”U” request_status=”WAIT” request_count=”1″ />
可以看出是主键争用,初步分析是不同事务的同时更新相同的主键行造成的,开trace验证
当前执行的虽然是insert语句,但是从whoisactive对于session持有的锁分析得出,事务肯定是有其他对于Pk_hunt的key的争用语句,单个事务的语句信息果然包含对于pk_hunt表的更新存储过程

可以看到确实是不同的transactionid同时更新相同的行造成的阻塞链

分析结果提交给测试人员,检查配置并联系开发人员进行修正。
SQL Server阻塞blocking案例分析的更多相关文章
- SQL Server 连接问题案例解析(1)
SQL Server 连接问题案例解析(1) 转载自:http://blogs.msdn.com/b/apgcdsd/archive/2015/04/27/sql.aspx?CommentPosted ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- 通过SQL Server Profiler来监视分析死锁
在两个或多个SQL Server进程中,每一个进程锁定了其他进程试图锁定的资源,就会出现死锁,例如,进程process1对table1持有1个排它锁(X),同时process1对table2请求1个排 ...
- 如何有效抓取SQL Server的BLOCKING信息
原文:如何有效抓取SQL Server的BLOCKING信息 转自:微软亚太区数据库技术支持组 官方博客 http://blogs.msdn.com/b/apgcdsd/archive/2011/12 ...
- 需要我们了解的SQL Server阻塞原因与解决方法
需要我们了解的SQL Server阻塞原因与解决方法 上篇说SQL Server应用模式之OLTP系统性能分析.五种角度分析sql性能问题.本章依然是SQL性能 五种角度其一“阻塞与死锁” 这里通过连 ...
- sql server 阻塞与锁
SQL Server阻塞与锁 在讨论阻塞与加锁之前,需要先理解一些核心概念:并发性.事务.隔离级别.阻塞锁及死锁. 并发性是指多个进程在相同时间访问或者更改共享数据的能力.一般情况而言,一个系统在互不 ...
- 一个特殊的SQL Server阻塞案例分析
上周,在SQL Server数据库下面遇到了一个有意思的SQL阻塞(SQL Blocking)案例.其实个人对SQL Server的阻塞还是颇有研究的.写过好几篇相关文章. 至于这里为什么要总结一下这 ...
- SQL Server 阻塞分析
一.加锁(locking).阻塞(blocking).死锁(deadlock)定义 加锁:用于管理多个连接的进程.当连接需要访问一块数据时,在这些数据上放置某种类型的锁. 阻塞 ...
- SQL Server 阻塞原因分析
这里通过连接在sysprocesses里字段值的组合来分析阻塞源头,可以把阻塞分为以下5种常见的类型(见表).waittype,open_tran,status,都是sysprocesses里的值,“ ...
随机推荐
- 【iOS】正則表達式抓取网页数据制作小词典
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xn4545945/article/details/37684127 应用程序不一定要自己去提供数据. ...
- allure 这么高大上的测试报告环境,5 分钟搞定
allure 的测试报告是老板喜欢的样子.如果能用上 allure,干嘛还选择其他的测试报告类型呢?python 的 pytest 单元测试框架有 allure 的插件,可以很方便的在 python ...
- 将数据库模型放入到.Net Core的类库中
一.前提概要 今年某天突然无聊,就决定学习.net core,此时的版本已经是.net core 1.1了.之前一直是用.net framework做项目,一直对Html.EditFor()等Html ...
- 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标
//首先用枚举 列出方向 上,下,左,右(枚举的最后一位数后不用符号 否则会报错) public enum dro { up = 1, down = ...
- MySql 5.7关键字和保留字-附表
现在使用navicat图形界面或者Hibernate做映射生成表的时候,渐渐的会忽视掉关键字这个问题,而后续也会不断的产生错误提示,一遍遍的查询代码无果,甚至开始怀疑人生,但是其实很多情况下只是使用了 ...
- MySQL查询最近一周(最近7天)数据
参考:https://blog.csdn.net/ouyang111222/article/details/77638826 -表结构 - CREATE TABLE `zk_score` ( `id` ...
- redis windows相关操作笔记
设置远程访问 1.注释掉bind 127.0.0.1. 2.protected-mode属性从yes改为no. 启动redis服务:redis-server.exe redis.windows.con ...
- 简单Delphi程序设计
- Matlab 中 Data-driven 风格的 API 设计
设计 所谓 data-driven API,指的是用户可以把"操作"作为参数,传入函数,像下面这种: stream = dataStream('load', 'example.cs ...
- Docker 镜像 容器 仓库
Docker 包括三个基本概念镜像(Image)容器(Container)仓库(Repository) Docker 镜像 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资 ...