我试图决定这个性能计数器是否值得监视:\\ SERVER \ MSSQL:Transactions \ Longest Transaction Running Time。
所以在testing期间,我尝试创build一些长时间运行的事务,但是我似乎无法让这个计数器读取任何大于零的值。
但是我找不到一个能做到的事务或查询。 作为一个起点,我在DBCC OPENTRAN的帮助中使用了示例查询(一个事务中的插入),但没有运气。
有没有一个查询影响这个柜台?
晚会晚了。 我相信在过去的六年中,文档已经更新,以解释这个问题的答案,但是根据我的testing,这个答案并不完全正确。
来自联机丛书 :“自从事务开始以来,活动时间比任何其他当前事务更长的时间(以秒为单位)该计数器仅在数据库处于读取提交快照隔离级别时显示活动,不logging数据库处于任何其他隔离级别的任何活动 “。
根据我的testing,这是不正确的。 如果RCSI未启用,但允许快照,则会显示SNAPSHOT查询的最长运行事务时间。
另一个棘手的事情是,计数器只更新每60秒。
基本上,当你使用快照或者RCSI的时候,监视是否会阻止版本存储清理非常有用。
这个计数器似乎有点慢/点击更新,我并不完全相信它做的正是它的解释所暗示的,但是我似乎通过从一个大表中select进入而获得了最大的成功,在一个开放式的交易。
有趣的是,发起回滚似乎导致计数器统计信息立即更新,提交效率不高,有时甚至没有更新。 正如我所说,我不认为这个计数器正是我们所想的,可能只是一个近似值/平均值。
问候,马克@retracement
这应该给你在柜台的价值。 你显然必须手动停止它。
SELECT '1' AS field1 INTO #tmp BEGIN TRANSACTION WHILE 1=1 BEGIN UPDATE #tmp SET field1=1 END COMMIT TRANSACTION DROP TABLE #tmp