我有一个带有2008操作系统的SQL Server 2008 R2 SP1群集。任何时候发生重新启动或发生故障转移,接下来的几天任何处理都非常缓慢;但是如果我们让它们继续运行它们会跑得更好。我一直在研究过程缓存被刷新然后需要重建的所有计划的可能性,这导致缓慢而不是能够为现有计划进入内存。有没有其他人经历过这个以及你做了什么来解决所以重启不会对系统造成负面影响?
答案 0 :(得分:0)
您可以做的一件事是在刷新过程缓存后监视资源最密集的查询。一旦你识别了什么查询需要花费很长时间从磁盘读取以放回缓冲池,你可以安排一个作业在重新启动后立即启动那些查询,所以当第一个用户去执行它时,它已经在缓冲池,将从内存而不是磁盘读取。以下是重新启动后查找I / O密集型查询的查询:
SELECT TOP 25 cp.usecounts AS [execution_count]
,qs.total_worker_time AS CPU
,qs.total_elapsed_time AS ELAPSED_TIME
,qs.total_logical_reads AS LOGICAL_READS
,qs.total_logical_writes AS LOGICAL_WRITES
,qs.total_physical_reads AS PHYSICAL_READS
,SUBSTRING(text,
CASE WHEN statement_start_offset = 0
OR statement_start_offset IS NULL
THEN 1
ELSE statement_start_offset/2 + 1 END,
CASE WHEN statement_end_offset = 0
OR statement_end_offset = -1
OR statement_end_offset IS NULL
THEN LEN(text)
ELSE statement_end_offset/2 END -
CASE WHEN statement_start_offset = 0
OR statement_start_offset IS NULL
THEN 1
ELSE statement_start_offset/2 END + 1
) AS [Statement]
FROM sys.dm_exec_query_stats qs
join sys.dm_exec_cached_plans cp on qs.plan_handle = cp.plan_handle
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
ORDER BY qs.total_physical_reads DESC;
答案 1 :(得分:0)
重建计划很可能不会成为问题。我看到我们系统上的simmilar行为,问题是HDD阵列。我测试过如果我们可以转移到SSD,它会加速冷启动查询超过10倍。