MSSQL如何获取存储过程中正在执行的真实SQL语句(定位存储过程中最耗时部分)--SQL Server Profiler

0    199    5

Tags:

👉 本文共约2278个字,系统预计阅读时间或需9分钟。

简介

SQL Server存储过程优化的重点和难点在于如何找到存储过程中最耗时的部分。尤其对于很长的存储过程,或者多层嵌套调用的存储过程,难度会更大。

需求

1、SQL server如何找到存储过程中的正在执行的真实的sql语句?????

2、如何定位存储过程中最耗时的SQL语句???

模拟存储过程一直在运行:

方法1:直接查询

以下SQL的internal_SQL_TEXT就是存储过程真实的内部SQL,而Parent_SQL_TEXT就是存储过程全部内容。

方法2:查看执行计划

存储过程可能包含单个查询,也可能包含整个查询系列。

在后一种情况下,您将看到多个执行计划,但是处理每个计划的方式与其他任何执行计划没有区别。

在运行存储过程的时候,勾选“包括实际的执行计划(Ctrl+M)”,在执行完后就会显示存储过程中的所有语句的执行计划和花费的时间比例,这在调试慢的存储过程时非常有用。 也可以不执行存储过程而使用“显示预估的执行计划(Ctrl+L)”来预估一下存储过程中的所有语句的执行计划

方法3:SQL Server Profiler(推荐)

路径:工具--》SQL Server Profiler

通过 SQL Server Management Studio,可以使用 SQL Server Profiler 来监视数据库活动。在 SQL Server Profiler 中,选择 "TSQL_SPs" 模板,建议保存到表中,选择事件和需要的列,然后选择spid列,然后启动跟踪会话。在跟踪结果中,可以查看每个存储过程的执行情况,以及存储过程中执行的实际 SQL 语句。

勾选显示所有列,一定要有Duration列,表示运行时间

勾选显示所有事件,然后设置事件:

a、Stored Procedures下的第2个和倒数第2个选项:

  • RPC:Completed

  • SP:StmtCompleted

b、TSQL下的第3、4、5、6、7个:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复