涨薪技术|0到1学会性能测试第65课-SQL捕获阻塞事件

前面的推文我们掌握了JVM调优技术。今天给大家分享MS SQL数据库监控与调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。

01SQL捕获阻塞事件

在SQL Server 2005之前的版本,分析哪些进程产生阻塞以及哪些进程被阻塞,都需要使用脚本手工执行。现在使用SQL Profiler可以直接监控阻塞的情况,使用SQL Profiler监控哪些进程被阻塞,首先需要确定SQL Trace的事件类,监控阻塞的事件类为Errors and Warnings-Blocked process report,如图11-16所示

Blocked process report:表示某个任务已被阻塞,导致超过指定的时间,此事件类不包括系统任务和正在等待未发现死锁(non-deadlock-detectable)的资源任务。若要配置报告的频率,请使用 sp_configure 命令配置阻塞的进程阈值选项。

通过sp_configure命令可以重新配置"blocked process threshold"选项的值,单位为秒,但默认情况下并不会显示阻塞进程的具体报告,下面是一个实例,修改默认情况下阻塞进程的报告并将"blocked process threshold"选项的值设置为12,即每12秒钟报告一次阻塞事件,脚本如下:

复制代码
sp_configure 'show advanced option', 1go reconfiguregosp_configure 'blocked process threshold', 12go reconfiguregosp_configure

运行结果如图11-17所示

实例:创建一个如图11-18所示的简单的表结构,表名为test

按上面的配置,创建一个SQL Trace跟踪,之后打开一个查询窗口,执行如下更新的脚本:​​​​​​​

复制代码
begin tranupdate TESTset name = 'abc123'where id = 1

再打开第二个查询窗口,执行查询操作,查询的是同一行数据,脚本如下:​​​​​​​

复制代码
select *from testwhere id = 1

由于第一个查询窗口中开始了一个事务并且一直没有将该事务关闭,所以导致第二个查询语句脚本阻塞,如果出现阻塞,SQL Profiler会每隔10秒报告一次阻塞事件的情况,跟踪的结果如图11-19所示

该报告是以XML的格式显示,在该报告中详细的显示产生阻塞的进程以及被阻塞的进程。

下期分享SQL捕获Showplan XML数据,敬请关注!

相关推荐
甘露s9 小时前
深入理解 Redis:事务、持久化与过期策略全解析
数据库·redis
生活很暖很治愈9 小时前
GUI自动化测试[3]——控件&数鼠标操作
windows·python·功能测试·测试工具
珠海西格9 小时前
远动通信装置为何是电网安全运行的“神经中枢”?
大数据·服务器·网络·数据库·分布式·安全·区块链
小宇的天下9 小时前
Calibre 3Dstack --每日一个命令day18【floating_trace】(3-18)
服务器·前端·数据库
星空露珠10 小时前
速算24点检测生成核心lua
开发语言·数据库·算法·游戏·lua
what丶k10 小时前
SpringBoot3 缓存抽象深度实践:Caffeine+Redis多级缓存,穿透/雪崩/击穿防御全方案
数据库·redis·缓存
咖啡の猫10 小时前
Redis简单介绍
数据库·redis·缓存
●VON10 小时前
React Native for OpenHarmony:ScrollView 事件流、布局行为与性能优化深度剖析
学习·react native·react.js·性能优化·openharmony
-XWB-10 小时前
【Oracle】Oracle诊断系列(4/6):表空间与对象管理——存储优化与空间规划
数据库·oracle
山峰哥10 小时前
SQL优化全解析:从索引策略到查询性能飞跃
大数据·数据库·sql·编辑器·深度优先