我有一个客户端的 SQL Server 具有高Buffer I/O。
我检查了长时间运行的查询,添加了新索引,并且服务器上没有锁定。是磁盘问题吗?
以下是活动监视器上等待的详细信息:
首先尝试检查您的磁盘延迟是否在阈值内..以下是一些指标..您可能需要看看这些是否适用于您
平均磁盘秒/写入
您可以查看此链接以配置 Perfmon: SQL Server 磁盘性能指标 – 第 1 部分 – 最重要的磁盘性能指标
此链接还提供工具来对您的 IO 进行压力测试并获取报告。
如何使用 SQLIOSim 实用程序模拟磁盘子系统上的 SQL Server 活动
如果您的磁盘 IO 在延迟范围内,请尝试查找导致高 IO 的查询,磁盘 IO 高的原因之一可能是索引不合适,您可能需要添加正确的索引,以便 SQL 不会读取不必要的数据
你也可能有更少的内存,因为更少的内存会导致 SQL 刷新缓冲池缓存。这也会导致 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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19236 次 |
| 最近记录: |