Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x) na Linuxu
Vrátí tabulku se statistikami vstupně-výstupních operací disku pro každé zařízení s Linuxem, která zobrazuje celkovou aktivitu mimo SQL Server v kumulativní aktualizaci (CU) 1 a novějších verzích SQL Serveru 2025 (17.x).
Zobrazení dynamické správy vrátí jeden řádek na diskové zařízení s Linuxem.
| Název sloupce | Datový typ | Nullovatelný | Description |
|---|---|---|---|
dev_name |
nvarchar(256) | Ne | Název zařízení. |
major_num |
bigint | Ne | Hlavní číslo zařízení. |
minor_num |
bigint | Ne | Menší číslo zařízení. |
reads_completed |
bigint | Ne | Počet dokončených čtení |
reads_merged |
bigint | Ne | Počet sousedních čtení sloučených do jednoho požadavku |
sectors_read |
bigint | Ne | Počet přečtených sektorů. |
read_time_ms |
bigint | Ne | Milisekundy strávily servisní čtení. |
writes_completed |
bigint | Ne | Počet dokončených zápisů |
writes_merged |
bigint | Ne | Počet sousedních zápisů sloučených do jednoho požadavku |
sectors_written |
bigint | Ne | Počet psaných sektorů. |
write_time_ms |
bigint | Ne | Milisekundy strávily servisní zápisy. |
ios_in_progress |
bigint | Ne | Počet IOs, které jsou aktuálně ve frontách požadavků |
io_time_ms |
bigint | Ne | Milisekundy, které zařízení strávilo vstupně-výstupními operacemi |
weighted_io_time_ms |
bigint | Ne | Vážený počet milisekund strávených vstupně-výstupními operacemi |
Povolení
Vyžaduje VIEW SERVER PERFORMANCE STATE oprávnění na serveru.
Poznámky
Rozsah na úrovni hostitele: Výsledky odrážejí všechny aktivity na zařízení, včetně SQL Serveru, dalších služeb a operací systému na pozadí. Pokud chcete přiřazovat účinky úloh databáze, korelujte tyto výsledky se statistikami čekání SQL Serveru, jako
WRITELOGje například aPAGEIOLATCH_*.Interpretovat časové sloupce:
Měření Výpočet Průměrná latence čtení (ms/op) read_time_ms / NULLIF(reads_completed, 0)Průměrná latence zápisu (ms/op) write_time_ms / NULLIF(writes_completed, 0)Využití zařízení (%) v intervalu io_time_ms / (elapsed_ms) * 100Průměrná délka fronty weighted_io_time_ms / elapsed_msSektorové jednotky: Linux obvykle hlásí sektory v 512 bajtových jednotkách. Ověřte velikost sektoru vašeho prostředí a odpovídajícím způsobem upravte výpočty.
Použití s opatrností u víceklientských hostitelů: Vysoké hodnoty můžou pocházet z úloh jiných než SQL Serveru. Korelace se systémovými nástroji nebo jinými zobrazeními dynamické správy pro přisuzování
Toto zobrazení dynamické správy použijte s jinými zobrazeními dynamické správy specifické pro Linux pro holistické monitorování:
Scénáře použití
Pomalé vyprázdnění protokolu (skupiny dostupnosti nebo samostatné): Vysoká
write_time_ms/writes_completedse zvýšenými oprávněnímiio_time_msznačí latenci zápisu na úrovni zařízení. Corroborate s čekánímWRITELOG.Kontrolní bod nebo úlohy náročné na čtení: Rostoucí
read_time_ms/reads_completeds trvalouread_MBpsodezvou naznačuje omezení propustnosti podle latence. Zvažte nastavení úrovně úložiště nebo fronty.Hlučné sousedy na sdílených hostitelích: Špičky v
device_utilization_pctaavg_queue_lengthbez odpovídajících změn úloh SQL Serveru znamenají externí vstupně-výstupní tlak. Ověřte monitorování hostitele.
Examples
A. Aktuální snímek aktivity zařízení
Tento dotaz vrátí snímek aktivity pro aktuální úložné zařízení.
SELECT dev_name,
reads_completed,
read_time_ms,
writes_completed,
write_time_ms,
ios_in_progress,
io_time_ms,
weighted_io_time_ms
FROM sys.dm_os_linux_disk_stats
ORDER BY io_time_ms DESC;
B. Latence a propustnost během 10sekundového ukázkového okna
Skript dvakrát vzorkuje zobrazení dynamické správy a vypočítá rozdíly pro latenci (milisekundy na operaci), propustnost (MB za sekundu), využití (procento) a délku fronty. Upravte @SectorBytes konfiguraci zařízení.
DECLARE @SectorBytes AS INT = 512;
-- verify sector size for your environment
DECLARE @SampleMs AS INT = 10000;
IF OBJECT_ID('tempdb..#before') IS NOT NULL
DROP TABLE #before;
IF OBJECT_ID('tempdb..#after') IS NOT NULL
DROP TABLE #after;
SELECT dev_name,
reads_completed,
reads_merged,
sectors_read,
read_time_ms,
writes_completed,
writes_merged,
sectors_written,
write_time_ms,
ios_in_progress,
io_time_ms,
weighted_io_time_ms
INTO #before
FROM sys.dm_os_linux_disk_stats;
WAITFOR DELAY '00:00:10';
SELECT dev_name,
reads_completed,
reads_merged,
sectors_read,
read_time_ms,
writes_completed,
writes_merged,
sectors_written,
write_time_ms,
ios_in_progress,
io_time_ms,
weighted_io_time_ms
INTO #after
FROM sys.dm_os_linux_disk_stats;
WITH deltas
AS (SELECT a.dev_name,
a.reads_completed - b.reads_completed AS d_reads,
a.read_time_ms - b.read_time_ms AS d_read_ms,
a.sectors_read - b.sectors_read AS d_read_sectors,
a.writes_completed - b.writes_completed AS d_writes,
a.write_time_ms - b.write_time_ms AS d_write_ms,
a.sectors_written - b.sectors_written AS d_write_sectors,
a.io_time_ms - b.io_time_ms AS d_io_ms,
a.weighted_io_time_ms - b.weighted_io_time_ms AS d_weighted_io_ms
FROM #after AS a
INNER JOIN #before AS b
ON a.dev_name = b.dev_name)
SELECT dev_name,
-- latency (ms/op)
CAST (d_read_ms / NULLIF (d_reads, 0) AS DECIMAL (18, 2)) AS avg_read_latency_ms,
CAST (d_write_ms / NULLIF (d_writes, 0) AS DECIMAL (18, 2)) AS avg_write_latency_ms,
-- throughput (MB/s)
CAST ((d_read_sectors * @SectorBytes) / (@SampleMs / 1000.0) / 1048576.0 AS DECIMAL (18, 2)) AS read_MBps,
CAST ((d_write_sectors * @SectorBytes) / (@SampleMs / 1000.0) / 1048576.0 AS DECIMAL (18, 2)) AS write_MBps,
-- utilization (%)
CAST (d_io_ms / @SampleMs * 100.0 AS DECIMAL (5, 2)) AS device_utilization_pct,
-- average queue length
CAST (d_weighted_io_ms / @SampleMs AS DECIMAL (18, 2)) AS avg_queue_length
FROM deltas
ORDER BY device_utilization_pct DESC;
C. Identifikace zařízení s vysokým poměrem sloučení
Tento příklad identifikuje zařízení s vysokým poměrem sloučení, což označuje možné sloučení vstupně-výstupních operací.
SELECT dev_name,
reads_completed,
reads_merged,
writes_completed,
writes_merged,
CAST (reads_merged / NULLIF (reads_completed, 0) AS DECIMAL (10, 2)) AS read_merge_ratio,
CAST (writes_merged / NULLIF (writes_completed, 0) AS DECIMAL (10, 2)) AS write_merge_ratio
FROM sys.dm_os_linux_disk_stats
ORDER BY write_merge_ratio DESC, read_merge_ratio DESC;
D. Živé sledování hloubky fronty
Tento příklad ukazuje hloubku živé fronty, která je užitečná pro třídění incidentů.
SELECT TOP (20) dev_name,
ios_in_progress,
io_time_ms,
weighted_io_time_ms
FROM sys.dm_os_linux_disk_stats
ORDER BY ios_in_progress DESC,
weighted_io_time_ms DESC;