我有一个客户端的sql server,具有高缓冲IO。 我检查了长runnig查询并添加了新索引,服务器上没有锁。 这是一个磁盘问题吗? 谢谢!
以下链接是活动监视器上等待的图像
答案 0 :(得分:2)
首先尝试检查您的磁盘延迟是否在阈值范围内。以下是一些指标..您可能需要查看这些是否适用于您
平均磁盘秒/写
您可以查看此链接以配置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://www.red-gate.com/products/dba/sql-monitor/resources/articles/monitor-sql-server-io
它可能是任何东西,所以你真的需要调查并看到,根据我的经验,我有一个小的选择,但它每2秒运行一次并杀死我的I / O,尝试查找经常运行的查询一张巨大的桌子