SQL 集群重启或故障转移后服务器极度缓慢

SQL Server Extreme slowness after reboot or fail-over of cluster

我有一个带有 2008 OS 的 SQL Server 2008 R2 SP1 集群。任何时候在接下来的几天发生重启或故障转移时,任何处理都非常缓慢;然而,如果我们让他们 运行宁他们 运行 好多了。我一直在研究当程序缓存被刷新然后所有计划都需要重建时的可能性,这导致了缓慢而不是能够进入现有计划的内存。有没有其他人遇到过这种情况?您如何解决才能使重新启动不会对系统产生如此负面的影响?

您可以做的一件事是在刷新过程缓存后监视资源最密集的查询。一旦您确定哪些查询需要很长时间从磁盘读取才能放回缓冲池,您可以安排一个作业在重新启动后立即启动这些查询,这样当第一个用户执行它时,它已经在缓冲池,将从内存而不是磁盘读取。这是一个在您重新启动后查找 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;

重建计划很可能不是问题。我在我们的系统上看到类似的行为,问题是 HDD 阵列。我测试了我们是否可以迁移到 SSD,它可以将冷启动查询速度提高 10 倍以上。