Problem neden önemlidir?
WRITELOG, log kayıtlarının kararlı depolamaya yazılmasının beklendiğini gösterir. Yüksek bekleme; log diski gecikmesi, çok sık commit veya büyük log üretimi gibi farklı nedenlere dayanabilir.
Nasıl teşhis edilir?
Log dosyalarının yazma sayısı ve kümülatif yazma gecikmesini veritabanı bazında inceleyin. Sonuçları işlem hızı, commit örüntüsü ve aynı zaman aralığındaki wait farklarıyla ilişkilendirin.
Sorgu log dosyaları için kümülatif yazma sayaçlarını okur ve herhangi bir ayarı değiştirmez. Sağlıklı yorum için iki örnek arasındaki fark ve aynı dönemin işlem hacmi gerekir.
SELECT DB_NAME(vfs.database_id) AS database_name,
mf.name AS log_file_name,
vfs.num_of_writes,
vfs.io_stall_write_ms,
CASE WHEN vfs.num_of_writes = 0 THEN NULL
ELSE 1.0 * vfs.io_stall_write_ms / vfs.num_of_writes END AS avg_write_stall_ms,
vfs.num_of_bytes_written
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
ON mf.database_id = vfs.database_id
AND mf.file_id = vfs.file_id
WHERE mf.type_desc = 'LOG'
ORDER BY avg_write_stall_ms DESC;Güvenli çözüm yaklaşımı
Gereksiz küçük işlemleri uygulama semantiğini bozmadan azaltmak ve log depolamasını doğrulamak olası iyileştirmelerdir. Dayanıklılık seçenekleri veri kaybı etkisi anlaşılmadan değiştirilmemelidir.
Sürekli monitoring neden gerekir?
Log gecikmesi yalnızca yoğun commit dönemlerinde belirginleşebilir ve kümülatif ortalamalarda kaybolabilir. moon kısa ve uzun dönem eğilimlerini izleyip Slack, PagerDuty veya webhook üzerinden uyarı yönlendirebilir.
Sık sorulan sorular
WRITELOG yalnızca yavaş diskten mi kaynaklanır? Log dosyasını büyütmek beklemeyi her zaman azaltır mı?
Hayır, commit sıklığı ve log üretim hacmi de önemli olabilir. Ön boyutlandırma büyüme olaylarını azaltabilir, ancak kararlı yazma gecikmesini tek başına çözmez.
moon bu konuda nasıl yardımcı olur?
moon, SQL Server, PostgreSQL ve MongoDB sinyallerini sürekli izleyerek problemi anlık bir kontrolden ziyade zaman içindeki davranışıyla değerlendirmeye yardımcı olur.