SqlServer2005 性能调校之 利用Sql Server Profiler捕捉阻塞事件(转)
2013-02-19 15:37
381 查看
文章来源:http://www.cnblogs.com/hongkongli/archive/2013/02/01/2889524.html
在SQLServer2005之前,从不同的来源可以得到很多可用的脚本,来捕获哪些数据库进程产生阻塞以及哪些进程被阻塞。然而,这些脚本需要手工执行。sp_blocker就是一个实例。
然而,我们可以利用Sql Server Profiler ,来自动的捕获被阻塞的进程。要用Sql Server Profiler捕获这些进程,我们需要用到Sql Server Profiler 的Blocked Process Report事件。
.Blocked Process Report:这表示一个任务被阻塞的时间已经超出了特定时间长度。这个事件类不包含系统任务或等待非死锁可检测(non-deadlock-detectable)资源的任务。
为了配置Sql Server Profiler,我们必须在SqlServer中为捕获阻塞事件配置一个阈值。
现在我通过一个例子来实现,利用Sql Profiler捕捉阻塞事件:
一.配置Blocked Process Report
1.打开Sql Server Profiler工具 如图:
2.新建跟踪 如图:
3.选择要跟踪的数据实例,如图:
4.选择跟踪模板,为空白,如图:
5.选择Blocked Process Report 事件,如图:
为了配置阈值及生产报表的频度,可使用sp_configure命令来配置Blocked Process
Report选项,默认情况下是不产生阻塞进程报表的。在代码实例中,Blocked Process
Report配置为5秒钟报告一次阻塞事件,配置之后,再次执行sp_configure验证是否配置成功:
如上图,出现如红色的行,证明配置成功了。
二.通过示例里数据库PerformanceDB来实现阻塞事件做个实验。
我们为实验开两个查询窗口:
1.第一个窗口中,执行如下UPDATE语句,这段代码有意令事务保持打开,从而可以触发阻塞事件。
2.第二个窗口中,执行相同条件的数据行。由于数据已经被UPDATE 事务阻塞,因此这个查询将会被阻塞
但满足阻塞事件的阈值(在sp_configuer中为5秒)之后,Sql Profiler 会自动捕获每个阻塞事件。对于Sql Profiler中捕获的每个阻塞事件,Sql Profiler为阻塞者记录下执行语句,它会精确的定位哪个进程是阻塞者以及哪个进程被阻塞。这些数据会以XML格式显示,如图(会5秒钟捕捉一次):
配置Sql Profiler来捕捉阻塞事件,使得性能监视以及调校任务比以前容易了很多,我们测量阻塞事件的发生频度以及每天发生的阻塞事件数目,将会提供性能数据的定量检测。
在SQLServer2005之前,从不同的来源可以得到很多可用的脚本,来捕获哪些数据库进程产生阻塞以及哪些进程被阻塞。然而,这些脚本需要手工执行。sp_blocker就是一个实例。
然而,我们可以利用Sql Server Profiler ,来自动的捕获被阻塞的进程。要用Sql Server Profiler捕获这些进程,我们需要用到Sql Server Profiler 的Blocked Process Report事件。
.Blocked Process Report:这表示一个任务被阻塞的时间已经超出了特定时间长度。这个事件类不包含系统任务或等待非死锁可检测(non-deadlock-detectable)资源的任务。
为了配置Sql Server Profiler,我们必须在SqlServer中为捕获阻塞事件配置一个阈值。
现在我通过一个例子来实现,利用Sql Profiler捕捉阻塞事件:
一.配置Blocked Process Report
1.打开Sql Server Profiler工具 如图:
2.新建跟踪 如图:
3.选择要跟踪的数据实例,如图:
4.选择跟踪模板,为空白,如图:
5.选择Blocked Process Report 事件,如图:
为了配置阈值及生产报表的频度,可使用sp_configure命令来配置Blocked Process
Report选项,默认情况下是不产生阻塞进程报表的。在代码实例中,Blocked Process
Report配置为5秒钟报告一次阻塞事件,配置之后,再次执行sp_configure验证是否配置成功:
--首先执行以下语句配置 sp_configure 'show advanced options',1 GO RECONFIGURE GO sp_configure 'blocked process threshold',5 GO RECONFIGURE GO --然后再执行 sp_configure
如上图,出现如红色的行,证明配置成功了。
二.通过示例里数据库PerformanceDB来实现阻塞事件做个实验。
我们为实验开两个查询窗口:
1.第一个窗口中,执行如下UPDATE语句,这段代码有意令事务保持打开,从而可以触发阻塞事件。
USE PerformanceDB BEGIN TRAN UPDATE dbo.Orders_new SET EmpID=445,Filler='b' WHERE orderId=430
2.第二个窗口中,执行相同条件的数据行。由于数据已经被UPDATE 事务阻塞,因此这个查询将会被阻塞
SELECT * FROM dbo.Orders_new WHERE orderId=430
但满足阻塞事件的阈值(在sp_configuer中为5秒)之后,Sql Profiler 会自动捕获每个阻塞事件。对于Sql Profiler中捕获的每个阻塞事件,Sql Profiler为阻塞者记录下执行语句,它会精确的定位哪个进程是阻塞者以及哪个进程被阻塞。这些数据会以XML格式显示,如图(会5秒钟捕捉一次):
配置Sql Profiler来捕捉阻塞事件,使得性能监视以及调校任务比以前容易了很多,我们测量阻塞事件的发生频度以及每天发生的阻塞事件数目,将会提供性能数据的定量检测。
相关文章推荐
- SqlServer2005 性能调校之 利用Sql Server Profiler捕捉阻塞事件
- SqlServer2005 性能调校之 利用Sql Server Profiler捕捉阻塞事件
- SqlServer2005 性能调校之利用sys.dm_db_index_physical_stats查看索引大小/碎片
- SQL Server Profiler -- 性能调校
- 【SQL Server学习笔记】SQL Server查询性能调优、捕捉和评估查询性能
- 利用事件委托提升性能
- SQL Server 利用Profiler观察执行计划是否重用时SP:Cachemiss,SP:CacheInsert以及SP:CacheHit的含义
- 利用扩展事件(Xevents)捕捉高消耗查询
- 读书笔记(三):【SQL Server 2005 Performance Tuning性能调校】(2):【SQL Server 架构简介】
- 初涉SQL Server性能问题(3/4):列出阻塞的会话
- sql server性能分析--查询死锁和阻塞的sql语句
- 如何监控和解决SQL Server的阻塞(2)(事件通知)
- 读书笔记(三):【SQL Server 2005 Performance Tuning性能调校】(2):【SQL Server 架构简介】
- sqlserver2005安装错误:性能监视器计数器要求:SQL Server 2005 中为安装程序增加计数器注册表项值
- SQL Server扩展事件(Extended Events)-- 性能注意事项
- profiler跟踪事件存为表之后性能分析工具
- SQL SERVER性能分析--死锁检测数据库阻塞语句
- sql server性能分析--检测数据库阻塞语句
- SQL SERVER性能分析--死锁检测数据库阻塞语句
- 读书笔记(三):【SQL Server 2005 Performance Tuning性能调校】(0):【开篇】