gpt4 book ai didi

sql-server-2005 - SQL Server 事件探查器 2005 : How to measure execution time of insert statement with trigger?

转载 作者:行者123 更新时间:2023-12-02 01:21:07 25 4
gpt4 key购买 nike

我想测量具有替代插入触发器的插入语句的执行时间(使用我猜测的 SQL Server Profiler 的持续时间)。如何衡量该语句的完整时间(包括触发时间)?

最佳答案

您在 SQL Server Profiler 中看到的查询执行时间(持续时间)是执行该查询所花费的时间包括评估任何触发器或其他约束

由于触发器旨在用作检查数据完整性的替代方法,因此在任何触发器也完成之前,SQL 语句不会被视为已完成。

更新:一些常用 SQL Server 探查器事件的概述:

  • SQL:BatchCompleted 当 SQL Server 批处理(一组语句)完成执行时发生 - 持续时间是执行批处理的总时间。

  • SQL:StmtCompleted 当作为批处理的一部分执行的 SQL 语句完成执行时发生 - 同样,持续时间是执行该单个语句的时间。

  • SP:Completed 在存储过程完成执行时发生 - 显示的持续时间是完成存储过程执行的时间。

  • SP:StmtCompleted 当作为存储过程的一部分执行的 SQL 语句完成时发生。

批处理是一组由 GO 语句分隔的 SQL 语句,但是要理解上述内容,您还应该知道所有 SQL Server 命令都是在批处理*的上下文中执行的。

此外,上述每个事件还有一个相应的 Starting 事件 - SP:StartingSQL:BatchStartingSQL :StmtStartingSP:StmtCompleted。这些没有列出持续时间(因为我们还不知道持续时间,因为它尚未完成,但确实有助于显示持续时间记录的开始时间)。

为了更好地理解这些事件之间的关系,我建议您 try catch 一些简单示例(来自 SQL Server Management Studio 中)的一些跟踪,例如:

SELECT * FROM SomeTable
GO

SELECT * FROM SomeTable
SELECT * FROM OtherTable
GO

SELECT * FROM SomeTable
exec SomeProc
GO

正如您所看到的,对于上面的 3 个示例中的每一个,您总是会获得 SQL:BatchStartingSQL:BatchCompleted,但是其他事件类型提供了更多详细信息运行各个命令。

出于这个原因,我通常最倾向于使用 SQL:BatchCompleted 事件,但是如果您尝试测量的语句是作为较大批处理的一部分(或在存储过程中)执行的那么您可能会发现其他事件类之一很有帮助。

参见TSQL Event Category (MSDN)有关各种 SQL Server 分析事件的更多信息 - 有很多!

最后,如果您从 SQL Server Management studio 中执行此命令,请注意记录执行时间的最简单方法是使用客户端统计功能:

alt text

(*) 我非常确定所有内容都是作为批处理的一部分执行的,尽管我还没有在互联网上找到任何证据来证实这一点。

关于sql-server-2005 - SQL Server 事件探查器 2005 : How to measure execution time of insert statement with trigger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com