Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2025 (17.x) Linux rendszeren
Egy táblát ad vissza, amely minden Linux-eszköz lemez I/O-statisztikáit tartalmazza, amely az SQL Serveren túli teljes tevékenységet jeleníti meg az SQL Server 2025 (17.x) 1. és újabb verzióiban.
A DMV linuxos lemezeszközönként egy sort ad vissza.
| Oszlop neve | Adattípus | Null értékű lehet | Leírás |
|---|---|---|---|
dev_name |
nvarchar(256) | Nem | Eszköz neve. |
major_num |
bigint | Nem | Fő eszközszám. |
minor_num |
bigint | Nem | Kisebb eszközszám. |
reads_completed |
bigint | Nem | Befejezett olvasások száma. |
reads_merged |
bigint | Nem | A szomszédos beolvasások száma egyetlen kérelembe egyesítve. |
sectors_read |
bigint | Nem | Az olvasott szektorok száma. |
read_time_ms |
bigint | Nem | Ezredmásodpercben a karbantartással töltött olvasások. |
writes_completed |
bigint | Nem | Befejezett írások száma. |
writes_merged |
bigint | Nem | A szomszédos írások száma egyetlen kérelembe egyesítve. |
sectors_written |
bigint | Nem | Az írott szektorok száma. |
write_time_ms |
bigint | Nem | Ezredmásodpercben töltötték az írások karbantartását. |
ios_in_progress |
bigint | Nem | A kérelemsorokban jelenleg található I/O-k száma. |
io_time_ms |
bigint | Nem | Ezredmásodperc alatt az eszköz I/O-t végez. |
weighted_io_time_ms |
bigint | Nem | Az I/Os-sel töltött ezredmásodpercek súlyozott száma. |
Permissions
A kiszolgálón VIEW SERVER PERFORMANCE STATE engedély szükséges.
Megjegyzések
Gazdagépszintű hatókör: Az eredmények az eszközön végzett összes tevékenységet tükrözik, beleértve az SQL Servert, az egyéb szolgáltatásokat és a háttérrendszer-műveleteket. Az adatbázis számítási feladatainak hatásainak attribútumához korrelálja ezeket az eredményeket az SQL Server várakozási statisztikáival, például
WRITELOGésPAGEIOLATCH_*.Időoszlopok értelmezése:
Intézkedés Számítás Átlagos olvasási késés (ms/op) read_time_ms / NULLIF(reads_completed, 0)Átlagos írási késés (ms/op) write_time_ms / NULLIF(writes_completed, 0)Eszközkihasználtság (%) időközönként io_time_ms / (elapsed_ms) * 100Üzenetsor átlagos hossza weighted_io_time_ms / elapsed_msSzektoregységek: A Linux általában 512 bájtos egységekben jelenti a szektorokat. Ellenőrizze a környezet szektorméretét, és ennek megfelelően módosítsa a számításokat.
Körültekintően használható több-bérlős gazdagépeken: A magas értékek nem SQL Server-számítási feladatokból származhatnak. Korrelál a rendszereszközökkel vagy más DMV-kkel a hozzárendeléshez.
Használja ezt a DMV-t más Linux-specifikus DMV-kkel a holisztikus monitorozáshoz:
Használati forgatókönyvek
Log flush slowness (rendelkezésre állási csoportok vagy önálló): A magas
write_time_ms/writes_completedemelt szintűio_time_msérték eszközszintű írási késést jelez. Megerősítés várakozássalWRITELOG.Ellenőrzőpont vagy olvasási nehéz számítási feladatok: A folyamatos
read_time_msemelkedés /reads_completedread_MBpsazt sugallja, hogy a késés korlátozza az átviteli sebességet. Fontolja meg a tárolási szint vagy az üzenetsor beállításait.Zajos szomszédok a megosztott gazdagépeken: Az SQL Server számítási feladatainak megfelelő változásainak kiugrása
device_utilization_pctavg_queue_lengthkülső I/O-nyomást jelent. Érvényesítés gazdagépfigyeléssel.
Examples
A. Aktuális eszköztevékenység-pillanatkép
Ez a lekérdezés az aktuális tárolóeszköz tevékenység-pillanatképét adja vissza.
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. Késés és átviteli sebesség egy 10 másodperces mintaablakban
A szkript kétszer mintázta a DMV-t, és kiszámítja a késés (műveletenkénti ezredmásodperc), az átviteli sebesség (MB/másodperc), a kihasználtság (százalék) és az üzenetsor hosszának eltéréseit. Állítsa be @SectorBytes az eszköz konfigurációját.
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. Nagy egyesítési arányú eszközök azonosítása
Ez a példa a nagy egyesítési arányú eszközöket azonosítja, ami az I/O lehetséges szenesítését jelzi.
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. Üzenetsor mélységének élő megtekintése
Ez a példa az élő üzenetsor mélységét mutatja be, amely hasznos az incidensek osztályozásához.
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;
Kapcsolódó tartalom
- sys.dm_os_linux_cpu_stats (Transact-SQL)
- sys.dm_os_linux_net_stats (Transact-SQL)
- sys.dm_os_linux_vm_stats (Transact-SQL)
- Ajánlott teljesítménybeli eljárások: Tárolás, kernel, PROCESSZOR és hálózat a SQL Server on Linux
- Teljesítménnyel kapcsolatos bevált gyakorlatok: az SQL Server memóriakezelése Linux rendszeren