rpc_completed 持续时间 (micro_sec) = rpc_starting.timestamp - rpc_completed.timestamp 吗?就我而言,我看到了它们之间的巨大差异。持续时间只有几毫秒,其中 rpc_starting.timestamp - rpc_completed.timestamp 为 6 - 10 秒。
我在企业 2016 sp2-cu14 上,持续时间字段以微秒为单位。我为在 rpc_starting 和 rpc_completed 中捕获 sp_statement_starting 和 sp_statement_completed、sp_batch_starting/sp_batch_completed 做了类似的事情。它显示了相同的情况。我的问题是“哪一个告诉我查询实际花费了多少时间?是 sp_statement_completed 中的持续时间还是开始和完成之间的差异?”
事件中的“持续时间”
sp_statement_completed
是查询在服务器上实际花费的时间。它不包括向客户端发送结果所花费的时间(通常,请参阅此处了解详细信息)。我不是 100% 确定为什么扩展事件时间戳列显示“开始”和“完成”事件之间存在如此大的差异,但这不是您想要关注的地方。
我不相信持续时间列代表
rpc_starting
和rpc_completed
事件之间的 timestamp_UTC 列的时间差异。假设您使用的任何版本的 SQL Server 仍然相关(2008 R2+),该列以微秒为单位(任何旧版本都以毫秒为单位),因此在您的示例中是一个非常小的值(例如 1,872 微秒 = 0.00187 秒)。根据微软的描述,我的猜测是从字面上看,该特定事件发生并被记录需要多长时间。