什么是SQL Server Profiler中的“审核注销”?


91

我正在运行数据导入(使用C#/ Linq),自然地,我试图尽可能地优化查询。为此,我正在使用SQL Server Profiler在数据库上运行跟踪,并通过SQL登录名(该名称可以唯一地归因于我的数据导入过程)过滤跟踪。

奇怪的是,我的大多数SQL语句都非常快:)-很少有查询甚至突破1ms的标记。但是在我所有的查询之间都隔开几行,其中EventClass是“ Audit Login”或“ Audit Logout”-“ Audit Logout”的持续时间可能长达一分钟!

这与我在导入中使用交易记录有关吗?如果是这样,有什么方法可以找到哪些是最热门的查询,以便我清理这些查询?



Answers:


81

如果我没记错的话,审核注销的持续时间就是打开连接的时间。例如,与命令速度无关-只是登录“登录”的时间。


9
有趣,谢谢!但是,当“登录”和“注销”之间的查询的读取次数仅为56时,为什么读取次数如此之高(〜400,000)?
Shaul Behr 2010年

从登录到注销的毫秒数。不是连接内查询使用的实际次数。400 000ms大约是7分钟。查看CPU,读取和写入列以尝试查找对CPU和/或磁盘使用率较高的查询-两者均会降低性能。
Thies,2010年

对不起,您是说Reads对时间测量的反应吗?
Johnny_D

1
考虑到只有一个操作列出了注销与“读取”之间的3个读取值,因此注销的“读取”值确实很高。
Triynko 2015年

1
应该注意的是,该Reads列不代表查询返回的行,而是逻辑磁盘读取数。甚至不返回任何内容的查询可能会扫描整个100万条记录的表,以查找不返回任何内容,这将产生非常大的读取次数。因此,读取的数量与查询的数量并没有真正地自然相关。
佩斯

12

登录/注销事件与设置/拆除有关。IIRC时间是“已登录时间”,与其他日志事件的处理持续时间相反。

通常,除非您怀疑连接池管理等存在问题,否则将隐藏这些事件。

批次的原始时间应足以诊断实际活动所花费的时间,包括任何交易的影响等。


是否可以更详细地检查“设置/拆除”?请参阅以下相关问题:stackoverflow.com/questions/44920375/…–
Stefan,

3

Audit Logout事件类指示用户已注销(注销)Microsoft SQL Server。此类中的事件由新连接或从连接池重用的连接触发。

这是连接登录的总时间,包括空闲时间,因此它并不表示性能问题。同样,对登录/注销进行概要分析也不太可能导致性能问题。寻找性能不佳的查询(可能是长期运行的查询)最好。

有关更多信息,我建议https://msdn.microsoft.com/en-us/library/ms175827.aspx :)


1
从连接池重用连接时,您确定会触发“审核注销”事件吗?我认为连接池是为什么您会看到较高的Audit Logout持续时间的一个示例,因为连接在整个生命周期中都是打开的,但一直处于空闲状态
Adam Goodwin

2

同样值得注意的是,在此答案中,“审核登录/注销”可能仅表示连接正在从连接池中重用/返回到连接池中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.