热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何捕获阻塞事件以及捕获ShowplanXML数据|性能测试提升篇

捕获阻塞事件在SQLServer2005之前的版本,分析哪些进程产生阻塞以及哪些进程

捕获阻塞事件


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


图11-16 Blocked process report事件类


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

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

sp_configure 'show advanced option', 1
go
reconfigure
go
sp_configure 'blocked process threshold', 12
go
reconfigure
go
sp_configure


运行结果如图11-17所示。


图11-17 运行结果


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


图11-18 test表结构


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

begin tran
update TEST
set name = 'abc123'
where id = 1


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

select *
from test
where id = 1


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


图11-19 跟踪事件报告


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


捕获Showplan XML数据


在数据库调优过程中,分析执行计划前对执行计划进行优化是很重要的内容,在SQL Server中通常有两种方式可以捕获执行计划的相关信息:SQL Server
Management Studio和SQL Server Profiler的Showplan XML事件类。


1) SQL Server Management Studio

  • 提供显示实际执行计划和显示估计执行计划等功能,这将用图形方式来呈现计划,这些功能为直接检查提供了最适合的解决方案,是目前最常用的显示和分析执行计划的方法。


使用SQL Server Management
Studio连接数据库服务器,新建一个查询号窗口,选中查询语句单击右键,在弹出菜单中选择“显示估计的执行计划”选项,如图11-20所示。


图11-20 显示估计执行计划


之后会生成一个图形计划,如图11-21所示。


图11-21 图形查询计划


图形查询计划阅读的方法是由右至左,通常由底部向上,最左边、最上方的步骤是计划中的最后步骤,阅读图形计划需要注意以下几个方面的内容:

  1. 计划中的每个步骤由图标表示,不同的图标表示不同的含义;

  2. 计划中每个步骤都有一个开销百分比,表示该步骤占整个查询计划成本的百分比;

  3. 查询计划会在查询框中为每条语句显示一个执行计划,这些计划会在结果框中顺序列出,每个计划均有相对于批处理的成本,这个成本是通过百分比表示;

  4. 步骤之间通过箭头连接,显示查询执行时采用的顺序以及操作之间的数据流;

  5. 将光标悬停在任意步骤之上时,会弹出一个信息框,显示指定步骤的详细信息和影响到的记录条数;

  6. 步骤间的连接箭头有着不同的厚度,其厚度表示每个步骤之间移动数据行的数量、大小等相对成本,厚度越大表示相对成本越高,通过这个指示器可以快速的衡量查询计划的成本,如果返回过多的数据行,那么说明当前的查询计划可能不是最优的;


2) SQL Server Profiler中的Showplan XML事件类

  • 当Microsoft SQL Server执行SQL语句时,会发生Showplan XML事件类,包括Showplan
    XML事件类以标识Showplan运算符,此事件类将每个事件存储为定义完善的XML文档。


注意:使用SQL Server Profiler中的Showplan XML事件类可以查看查询执行计划,当跟踪中包含Showplan
XML事件类时,其开销将明显影响性能,查询优化后,Showplan
XML将存储查询计划,若要将引起的开销降到最低,请将限制该事件类,仅在监视主要时段内的特定问题的跟踪中使用它。


在配置Profiler跟踪时,使用新的事件类Showplan XML,它包含以下事件的设置:

Showplan XMLXML Showplan输出可作为一个单独的文件进行保存,如图11-22所示;
Stored Procedures-RPC:Completed:指示一个远程过程调用已经完成;
TSQL-SQL:BatchCompleted:指示Transact-SQL批作业已经完成;


图11-22 提取事件设置


在提取事件设置对话框中有提取XML计划和死锁XML两种,保存文件的后缀名为.sqlplan,而关于生成的提取文件又有两种设置:

  1. 单个文件中的所有XML显示计划批(P):表示所有的查询执行计划结果只保存在一个文件中;

  2. 不同文件中的每个XML显示计划批(E):表示不同的查询执行计划使用不同的文件来保存;

  3. Profiler跟踪设置完成后,执行一个跟踪,Profiler捕获到的查询计划结果如图11-23所示。


图11-23 Profiler捕获到的查询计划信息


本章节的内容就学习到这里,大家觉得有用的话记得关注公众号并把文章转发给身边有需要的朋友。


温馨提示:想要自学转行的伙伴可以扫下方二维码进行在线重复学习!

添加老师微信:13691729932 可以获取全套软件测试自学资料!


给大家推荐一个软件测试自学群,识别下方二维码,免费领取学习课件、视频哦。


LoaRunner性能测试系统学习教程:结果分析实践之分析图合并(1)


LoaRunner性能测试系统学习教程:场景设计实践之功能测试脚本(4)


答应我!看完这篇后一定要关注公众号并转发给身边有需要的朋友!



推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
author-avatar
业余爱好者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有