SQL Server Profiler 工具的使用

embedded/2024/9/22 21:12:48/

在很多时候,我们需要优化接口的执行效率,一方面是提高代码在内存中的执行效率,另一方面就是提高数据库操作相关的效率了。

.NET中在System.Diagnostics类库下提供了Stopwatch类用来分析代码的执行耗时。那么如果是牵扯到数据库相关的操作,我们可以利用SSMS自带的分析工具,来查看进来的每一条sql语句的执行时间,以此来定位问题。

首先打开SSMS,选择工具>SQL Server Profiler。打开SQL Server Profiler的登录页面。用连接数据库的登录名和密码进行登录即可。

打开之后需要设置一下跟踪属性,其中常规里,可以设置把跟踪记录导出到文件或者表,如果为了方便仔细分析,可以选择保存到文件,之后停止跟踪的时候,就会生产一个.trc文件,之后在SQL Server Profiler在打开这个文件,就可以慢慢分析了。
在这里插入图片描述
在事件选择里,可以选择跟踪哪些事件,以及列名。
在这里插入图片描述

但是这里有一个问题,这个跟踪的是整个服务里面的所有数据库,如果数据库比较多,或者连接比较活跃的话,那跟踪记录就会不断的刷新,就不容易找到关键信息。

所以我们现勾选显示所有列。然后点开列筛选器。在这里输入DatabseID或者DatabaseName都可以定位到某一个数据库,获取DatabseID的SQL语句

--查看当前数据库的id 
SELECT DB_ID()

然后就可以开始观察了。重点需要关注的一个是说TextData,这里是我们执行过的所有SQL语句,另一个是Duration,这个表示执行sql的耗时。如果有耗时特别夸张的就可以分析sql语句是不是可以优化,通过添加索引等方式来减少SQL语句的执行时间。
在这里插入图片描述

我下面把其他列名的含义也都列一下。

字段含义
TextData包含执行的SQL语句或存储过程的文本。这是分析查询性能时最关键的列之一。
StartTime 和 EndTime分别表示事件开始和结束的时间戳。这两个时间戳对于分析查询执行时间和识别并发问题非常有用。
Duration表示事件(如SQL语句执行)持续的时间,通常以微秒为单位。这个值对于识别性能瓶颈至关重要
CPU表示事件(如SQL语句执行)消耗的CPU时间,通常以毫秒为单位。它反映了查询在CPU上的执行效率
Reads 和 Writes分别表示事件执行期间从磁盘读取和写入的数据量(以逻辑读取和写入次数为单位)。这两个值对于评估查询对I/O的影响很重要。
SPID表示执行该事件的服务器进程ID。它可以帮助识别哪个客户端会话或进程产生了特定的数据库活动
LoginName执行事件的登录名。这有助于识别是哪个用户或应用程序导致了特定的数据库活动
ApplicationName发起数据库活动的应用程序的名称。这有助于将数据库活动与特定的应用程序或工具关联起来
DatabaseName事件发生时所在的数据库名称。这有助于了解哪个数据库受到了影响
ObjectName 和 ObjectType分别表示事件涉及的对象名称和对象类型(如表、视图、存储过程等)。这对于识别哪些数据库对象被查询或修改非常有用。
EventClass表示事件的类别,如SQL:BatchStarting、SQL:BatchCompleted、Login等。这个列帮助用户识别追踪文件中各种事件的类型。
EventSubClass提供了EventClass的进一步细分,以提供更具体的事件信息。
Status表示事件的状态,如成功、失败等。这有助于识别执行过程中是否出现了问题
Error如果事件执行失败,则此列将包含错误代码和消息。这对于诊断问题非常有帮助

study hard and make progress every day.


http://www.ppmy.cn/embedded/104177.html

相关文章

Java的动态代理(实际案例秒懂!)

在看动态代理解决两个案例之前,请先看链接VCR 《java代理》2分钟动画_哔哩哔哩_bilibili 一.动态代理-精致小案例 需求分析 传统方法 就是定义一个接口,然后实现类去实现规定的run方法 缺点:代码很冗余,有一些运行前和运行后…

Vue项目安装依赖(npm install)报错的解决

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Notepad++回车不自动补全

问题 使用Notepad时,按回车经常自动补全,但我们希望回车进行换行,而不是自动补全,而且自动补全使用Tab进行补全足够了。下文介绍设置方法。 设置方法 打开Notepad,进入设置 - 首选项 - 自动完成,在插入选…

CentOS 部署 RocketMQ 详细指南

1. RocketMQ 5.3.0 简介 什么是 RocketMQ? Apache RocketMQ 是一个分布式消息中间件,最初由阿里巴巴开发并开源。它基于发布-订阅(Pub-Sub)模式,具有高性能、低延迟和高可靠性等特点。RocketMQ 支持大规模消息流处理…

在centos系统中kill掉指定进程

如上图,我想kill掉 python3 func_tg_1_vps.py这个进程(而不kill掉python3 func_tg_2_vps.py)。 解决方法: 第一步:首先使用ps -ef | grep python3命令,查出所有包含python3的命令 拿其中一条讲解 root …

GLM大模型 - CogVideoX:5B 开源,2B 转为 Apache 协议

8月6日,我们发布并开源了CogVideoX-2B模型,受到广大开发者的欢迎。 为了促进社区的自主使用和开放式创新,我们现决定将参数规模更大、性能更强的产品级模型 CogVideoX-5B 开源,同时 CogVideoX-2B 的开源协议调整为更加开放的Apac…

git中的分支是什么?分支有哪些好处?如何建立分支?

git中的分支是什么? 在Git中,分支是版本库中记录版本位置(支线)的一种方式。分支可以被视为一条时间线,每次提交都会在这条时间线上形成一个新的版本。通过分支,开发者可以在不影响主线(通常是…

高级java每日一道面试题-2024年8月31日-框架篇[Spring篇]-你对Spring事务传播机制了解多少?

如果有遗漏,评论区告诉我进行补充 面试官: 你对Spring事务传播机制了解多少? 我回答: 在Java的Spring框架中,事务管理是一个非常重要的特性,它帮助开发者以声明式或编程式的方式控制事务的边界、传播行为、隔离级别、超时设置和回滚规则等。事务的传…