Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: 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 подразумевают внешнее давление ввода-вывода. Проверка с помощью мониторинга узла.
Examples
А. Текущий моментальный снимок действия устройства
Этот запрос возвращает моментальный снимок действия для текущего устройства хранения.
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. Задержка и пропускная способность в 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;
C. Определение устройств с высокими коэффициентами слияния
В этом примере идентифицируются устройства с высокими коэффициентами слияния, что указывает на возможное объединение операций ввода-вывода.
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;