用户抱怨SQL Server数据库运行非常慢。通过默认跟踪的这个查询,可以识别出log file autogrow活动导致的长时间运行。为什么如此之慢?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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。
本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1582298 ,如需转载请自行联系原作者