什么会导致客户端服务器上的高缓冲I / O?

时间:2018-01-24 14:47:32

标签: sql sql-server

我有一个客户端的sql server,具有高缓冲IO。 我检查了长runnig查询并添加了新索引,服务器上没有锁。 这是一个磁盘问题吗? 谢谢!

以下链接是活动监视器上等待的图像

https://i.stack.imgur.com/EVXdt.png

2 个答案:

答案 0 :(得分:2)

首先尝试检查您的磁盘延迟是否在阈值范围内。以下是一些指标..您可能需要查看这些是否适用于您

平均磁盘秒数/读取值
enter image description here

平均磁盘秒/写

enter image description here

您可以查看此链接以配置Perfmon:SQL Server disk performance metrics – Part 1 – the most important disk performance metrics

此链接还提供了压力测试IO并获取报告的工具..

How to use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem

如果您的磁盘IO在延迟范围内,请尝试查找导致高IO的查询,高磁盘IO的原因之一可能是不合适的索引,您可能需要添加正确的索引,以便SQL赢得了阅读不必要的数据

此外,您的内存可能更少,因为内存较少会导致SQL刷新缓冲池缓存。这也可能导致IO问题

DMV to check queries causing high IO

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_logical_reads DESC;

答案 1 :(得分:1)

查看这两个链接

https://blogs.msdn.microsoft.com/sqljourney/2013/06/03/how-to-troubleshooting-sql-server-io-bottlenecks/

https://www.red-gate.com/products/dba/sql-monitor/resources/articles/monitor-sql-server-io

它可能是任何东西,所以你真的需要调查并看到,根据我的经验,我有一个小的选择,但它每2秒运行一次并杀死我的I / O,尝试查找经常运行的查询一张巨大的桌子