Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2025 (17.x) в Linux
Возвращает таблицу со статистикой операций ввода-вывода диска для каждого устройства Linux, показывающую общую активность за пределами SQL Server, в SQL Server 2025 (17.x) накопительного обновления (CU) 1 и более поздних версий.
DmV возвращает одну строку на устройство диска Linux.
| Имя столбца | Тип данных | Нуллибельный | Description |
|---|---|---|---|
dev_name |
nvarchar(256) | нет | Имя устройства. |
major_num |
bigint | нет | Основной номер устройства. |
minor_num |
bigint | нет | Дополнительный номер устройства. |
reads_completed |
bigint | нет | Число завершенных операций чтения. |
reads_merged |
bigint | нет | Количество смежных операций чтения, объединенных в один запрос. |
sectors_read |
bigint | нет | Число считываемых секторов. |
read_time_ms |
bigint | нет | Миллисекундам, потраченным на обслуживание операций чтения. |
writes_completed |
bigint | нет | Число завершенных операций записи. |
writes_merged |
bigint | нет | Количество смежных операций записи, объединенных в один запрос. |
sectors_written |
bigint | нет | Число записанных секторов. |
write_time_ms |
bigint | нет | Миллисекунды провели операции записи обслуживания. |
ios_in_progress |
bigint | нет | Количество операций ввода-вывода в очереди запросов. |
io_time_ms |
bigint | нет | Миллисекунда устройства, затраченного на выполнение операций ввода-вывода. |
weighted_io_time_ms |
bigint | нет | Взвешированное число миллисекундах, потраченных на выполнение операций ввода-вывода. |
Permissions
Необходимо разрешение VIEW SERVER PERFORMANCE STATE на сервере.
Замечания
Область уровня узла: результаты отражают все действия на устройстве, включая SQL Server, другие службы и фоновые системные операции. Чтобы атрибутировать эффекты рабочей нагрузки базы данных, сопоставляйте эти результаты со статистикой ожидания SQL Server, например
WRITELOGиPAGEIOLATCH_*.Интерпретация столбцов времени:
Мера Расчет Средняя задержка чтения (мс/оп) read_time_ms / NULLIF(reads_completed, 0)Средняя задержка записи (ms/op) write_time_ms / NULLIF(writes_completed, 0)Использование устройств (%) через интервал io_time_ms / (elapsed_ms) * 100Средняя длина очереди weighted_io_time_ms / elapsed_msЕдиницы сектора: Linux обычно сообщает секторы в 512-байтовых единицах. Проверьте размер сектора вашей среды и измените расчеты соответствующим образом.
Использование с осторожностью в мультитенантных узлах: высокие значения могут возникать из рабочих нагрузок, отличных от SQL Server. Коррелирует с системными средствами или другими динамическими административными представлениями для присвоения.
Используйте это динамическое административное представление с другими динамическими представлениями linux для комплексного мониторинга:
Сценарии использования
Замедление сброса журналов (группы доступности или автономные): высокая
write_time_ms/writes_completedс повышеннымиio_time_msпривилегиями указывает на задержку записи на уровне устройства. Подтверждение сWRITELOGожиданиями.Контрольная точка или чтение тяжелых рабочих нагрузок. Рост
read_time_ms/reads_completedс устойчивойread_MBpsпропускной способностью ограничивает пропускную способность, ограниченную задержкой. Рассмотрите параметры уровня хранилища или очереди.Шумные соседи на общих узлах: пики в
device_utilization_pctрабочей нагрузке SQL Server иavg_queue_lengthбез соответствующих изменений рабочей нагрузки SQL Server подразумевают внешнее давление ввода-вывода. Проверка с помощью мониторинга узла.
Примеры
А. Текущий моментальный снимок действия устройства
Этот запрос возвращает моментальный снимок действия для текущего устройства хранения.
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;
В. Задержка и пропускная способность в 10-секундном окне
Скрипт дважды примерирует dmV и вычисляет разностные значения задержки (миллисекунд на операцию), пропускную способность (МБ в секунду), использование (процент) и длину очереди. Настройтесь @SectorBytes в соответствии с конфигурацией устройства.
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;
С. Определение устройств с высокими коэффициентами слияния
В этом примере идентифицируются устройства с высокими коэффициентами слияния, что указывает на возможное объединение операций ввода-вывода.
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. Просмотр динамической глубины очереди
В этом примере показана глубина динамической очереди, которая полезна для обработки инцидентов.
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;