Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Linux üzerinde SQL Server 2025 (17.x)
SQL Server 2025 (17.x) Toplu Güncelleştirme (CU) 1 ve sonraki sürümlerde SQL Server dışındaki toplam etkinliği gösteren, her Linux cihazı için disk G/Ç istatistiklerine sahip bir tablo döndürür.
DMV, Linux disk cihazı başına bir satır döndürür.
| Sütun adı | Veri türü | Null olabilir | Description |
|---|---|---|---|
dev_name |
nvarchar(256) | Hayı | Cihaz adı. |
major_num |
bigint | Hayı | Ana cihaz numarası. |
minor_num |
bigint | Hayı | Küçük cihaz numarası. |
reads_completed |
bigint | Hayı | Tamamlanan okuma sayısı. |
reads_merged |
bigint | Hayı | Tek bir istekte birleştirilen bitişik okuma sayısı. |
sectors_read |
bigint | Hayı | Okunan kesim sayısı. |
read_time_ms |
bigint | Hayı | Hizmet okumaları için harcanan milisaniyeler. |
writes_completed |
bigint | Hayı | Tamamlanan yazma sayısı. |
writes_merged |
bigint | Hayı | Tek bir istekte birleştirilen bitişik yazma sayısı. |
sectors_written |
bigint | Hayı | Yazılan kesim sayısı. |
write_time_ms |
bigint | Hayı | Hizmet yazma işlemleri için milisaniye harcandı. |
ios_in_progress |
bigint | Hayı | şu anda istek kuyruklarında olan G/Ç sayısı. |
io_time_ms |
bigint | Hayı | Cihazın G/Ç yaparak harcadığı milisaniye. |
weighted_io_time_ms |
bigint | Hayı | G/Ç işlemleri için harcanan milisaniyenin ağırlıklı sayısı. |
Permissions
VIEW SERVER PERFORMANCE STATE Sunucuda izin gerektirir.
Açıklamalar
Konak düzeyi kapsamı: Sonuçlar SQL Server, diğer hizmetler ve arka plan sistemi işlemleri dahil olmak üzere cihazdaki tüm etkinlikleri yansıtır. Veritabanı iş yükü etkilerini özniteliklendirmek için, bu sonuçları ve
WRITELOGgibiPAGEIOLATCH_*SQL Server bekleme istatistikleriyle ilişkilendirin.Zaman sütunlarını yorumlama:
Ölçüm Hesaplama Ortalama okuma gecikmesi (ms/op) read_time_ms / NULLIF(reads_completed, 0)Ortalama yazma gecikme süresi (ms/op) write_time_ms / NULLIF(writes_completed, 0)Bir aralıkta cihaz kullanımı (%) io_time_ms / (elapsed_ms) * 100Ortalama kuyruk uzunluğu weighted_io_time_ms / elapsed_msSektör birimleri: Linux genellikle 512 baytlık birimlerde sektörleri raporlar. Ortamınızın kesim boyutunu doğrulayın ve hesaplamaları buna göre ayarlayın.
Çok kiracılı konaklarda dikkatli kullanın: Yüksek değerler SQL Server olmayan iş yüklerinden kaynaklanabilir. İlişkilendirme için sistem araçları veya diğer DMV'lerle bağıntı.
Bütünsel izleme için bu DMV'yi Linux'a özgü diğer DMV'lerle kullanın:
Kullanım senaryoları
Günlük boşaltma yavaşlığı (kullanılabilirlik grupları veya tek başına): Yükseltilmiş
write_time_msyüksek /writes_completedio_time_ms, cihaz düzeyinde yazma gecikme süresini gösterir. BeklemelerleWRITELOGilişkilendirin.Denetim noktası veya okuma ağır iş yükleri: Sürekli
read_time_msolarak yükselmek /reads_completedread_MBps, gecikme süresine göre kısıtlanmış aktarım hızını önerir. Depolama katmanı veya kuyruk ayarlarını göz önünde bulundurun.Paylaşılan konaklardaki gürültülü komşular: SQL Server iş yükü değişikliklerindeki
device_utilization_pctveavg_queue_lengtholmayan ani artışlar dış G/Ç baskısı anlamına gelir. Konak izleme ile doğrulayın.
Örnekler
A. Geçerli cihaz etkinliği anlık görüntüsü
Bu sorgu, geçerli depolama cihazı için bir etkinlik anlık görüntüsü döndürür.
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 saniyelik bir örnek pencere üzerinde gecikme süresi ve aktarım hızı
Betik DMV'yi iki kez örnekler ve gecikme süresi (işlem başına milisaniye), aktarım hızı (saniye başına MB), kullanım (yüzde) ve kuyruk uzunluğu için deltaları hesaplar. Cihaz yapılandırmanızla eşleşecek şekilde ayarlayın @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. Yüksek birleştirme oranlarına sahip cihazları tanımlama
Bu örnek, yüksek birleştirme oranlarına sahip cihazları tanımlar ve olası G/Ç birleşimlerini gösterir.
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. Kuyruk derinliğini canlı izleyin
Bu örnek, olay önceliklendirmesi için yararlı olan canlı kuyruk derinliğini gösterir.
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;
İlgili içerik
- sys.dm_os_linux_cpu_stats (Transact-SQL)
- sys.dm_os_linux_net_stats (Transact-SQL)
- sys.dm_os_linux_vm_stats (Transact-SQL)
- Linux üzerinde SQL Server için en iyi performans yöntemleri ve yapılandırma yönergeleri