用户抱怨SQL Server数据库运行非常慢。通过默认跟踪的这个查询,可以识别出log file autogrow活动导致的长时间运行。为什么如此之慢?
SELECT te.name AS [trace_events_name] , t.DatabaseName , t.NTDomainName , t.ApplicationName , t.LoginName , t.Duration , t.StartTime , t.EndTime FROM sys.fn_trace_gettable(CONVERT(VARCHAR(150), ( SELECT TOP 1 f.value FROM sys.fn_trace_getinfo(NULL) f WHERE f.property = 2 )), DEFAULT) T JOIN sys.trace_events TE ON T.EventClass = TE.trace_event_id WHERE te.trace_event_id = 93 AND t.StartTime BETWEEN ‘2012-04-17 13:00:00.000‘ AND ‘2012-04-17 15:00:00.000‘
有些因素导致log file autogrow性能较差,例如:
1) 如果一个大型事务导致日志增长,SQL事务需要等待日志自动增长完成。该事务需要写入SQL Server事务日志文件。通常,我们会在SQL错误日志中看到一条信息。
2) 自动增长和自动收缩可能在SQL Server数据库上导致冲突。
3) 衡量在SQL事务日志文件上的物理碎片。
4) 文件立刻初始化(Instant file initialization)只与数据文件有关。将不会有利日志文件增长。
5) 最小化事务的大小。正常提交有助于维护更小的日志文件。
6) 跟进存储性能。收集Perfmon性能计数器信息,例如:Logical Write Bytes/sec和Logical Read Bytes/sec。
本文出自 “滴水石穿” 博客,请务必保留此出处http://ultrasql.blog.51cto.com/9591438/1582298
SQL Server 默认跟踪应用4 -- 检测日志文件自动增长
原文地址:http://ultrasql.blog.51cto.com/9591438/1582298