Use*_*ser 2 triggers sql-server-2005 insert sql-server-profiler
我想测量一个插入语句的执行时间(使用我猜测来自SQL Server Profiler的持续时间),该语句上有一个替代插入触发器.如何衡量此声明的完整时间,包括触发时间?
您在SQL Server探查器中为查询看到的执行时间(持续时间)是执行该查询所花费的时间,包括评估任何触发器或其他约束.
由于触发器旨在用作检查数据完整性的替代方法,因此在任何触发器也已完成之前,不会认为SQL语句已完成.
更新:一些常用的SQL Server探查器事件的概述:
SQL:BatchCompleted在SQL Server批处理(一组语句)已完成执行时发生 - 持续时间是执行批处理的总时间.
SQL:StmtCompleted在作为批处理的一部分执行的SQL语句完成执行时发生 - 持续时间是执行该单个语句的时间.
SP:已完成在存储过程已完成执行时发生 - 显示的持续时间是完成存储过程执行的时间.
SP:StmtCompleted在作为存储过程的一部分执行的SQL语句完成时发生.
批处理是由语句分隔的一组SQL语句GO,但是为了理解上述内容,您还应该知道所有SQL服务器命令都在批处理*的上下文中执行.
另外,上述各事件也有相应的Starting事件- ,,SP:Starting 和.这些不列出持续时间(因为我们还不知道持续时间,因为它没有完成,但是有助于显示持续时间记录开始时).SQL:BatchStartingSQL:StmtStartingSP:StmtCompleted
为了更好地理解这些事件之间的关系,我建议您尝试捕获一些简单示例的痕迹(来自SQL Server Management Studio中),例如:
SELECT * FROM SomeTable
GO
SELECT * FROM SomeTable
SELECT * FROM OtherTable
GO
SELECT * FROM SomeTable
exec SomeProc
GO
Run Code Online (Sandbox Code Playgroud)
正如你应该看到,每个的3例以上,你总能得到一个SQL:BatchStarting和SQL:BatchCompleted,但是其他事件类型提供更多的细节上各个命令运行.
出于这个原因,我通常倾向于使用SQL:BatchCompleted最多的事件,但是如果您尝试测量的语句是作为更大批处理(或存储过程)的一部分执行的,那么您可能会发现其他事件类之一有用.
有关各种SQL Server性能分析事件的详细信息,请参阅TSQL事件类别(MSDN) - 有很多!
最后,如果从SQL Server Management Studio中执行此命令,请注意记录执行时间的最简单方法是使用客户端统计功能:
(*)我很确定所有内容都是作为批处理的一部分执行的,尽管我没有在互联网上找到任何证据来证实这一点.
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |