Preskočiť na obsah
Skript

I/O latencia podľa databázových súborov

Priemerná latencia čítania a zápisu pre každý MDF / NDF / LDF súbor od štartu inštancie.

i-o-latencia-podla-databazovych-suborov.sql 18 riadkov · T-SQL
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | I/O latencia podľa databázových súborov
   Účel:  Priemerná latencia čítania a zápisu pre každý MDF / NDF / LDF súbor od štartu inštancie.
   Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;

SELECT DB_NAME(v.database_id) AS database_name, f.name AS logical_file_name,
       f.type_desc, f.physical_name,
       v.num_of_reads, v.num_of_writes,
       CAST(v.io_stall_read_ms * 1.0 / NULLIF(v.num_of_reads,0) AS decimal(18,2)) AS avg_read_ms,
       CAST(v.io_stall_write_ms * 1.0 / NULLIF(v.num_of_writes,0) AS decimal(18,2)) AS avg_write_ms,
       CAST(v.num_of_bytes_read / 1048576.0 AS decimal(18,1)) AS read_mb,
       CAST(v.num_of_bytes_written / 1048576.0 AS decimal(18,1)) AS written_mb
FROM sys.dm_io_virtual_file_stats(NULL,NULL) AS v
JOIN sys.master_files AS f ON f.database_id=v.database_id AND f.file_id=v.file_id
ORDER BY COALESCE(v.io_stall_read_ms*1.0/NULLIF(v.num_of_reads,0),0)
       + COALESCE(v.io_stall_write_ms*1.0/NULLIF(v.num_of_writes,0),0) DESC;
## Kedy použiť

Pri čakaní PAGEIOLATCH_* alebo WRITELOG, pomalom restore či podozrení na preťažené úložisko.

## Ako čítať výsledok

`avg_read_ms` = io_stall_read_ms / num_of_reads, `avg_write_ms` obdobne. Orientačne: log súbor nad ~5 ms zápisu a dátové súbory nad ~20 ms čítania stoja za preskúmanie.

> [!WARNING]
> Hodnoty sú kumulatívne od štartu SQL Servera – pre incident urob dva odbery a porovnaj rozdiel. Je to latencia z pohľadu SQL Servera, nie čistá latencia disku.

**Oprávnenia:** `VIEW SERVER STATE` (na SQL Server 2022 stačí aj `VIEW SERVER PERFORMANCE STATE`).  
**Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022

## Súvisiace recepty

- [Transaction log – obsadenie, reuse wait a VLF](script.php?id=33&s=transaction-log-obsadenie-reuse-wait-a-vlf)