Ana içeriğe geç
Kesit SQL
İleri · Veritabanı Yönetimi (DBA)

İzleme: DMV'ler, bekleme istatistikleri, engelleme ve deadlock

Sunucu yavaşladığında nereye bakılır?

Uygulamada aç, 4 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

“Sunucu yavaş” dendiğinde

  1. Şu an ne çalışıyor? Aktif istekler ve kim kimi engelliyor?
  2. Sunucu neyi bekliyor? Bekleme istatistikleri darboğazın türünü söyler.
  3. En pahalı sorgular hangileri? Toplam CPU ve okuma bazında.

Aktif istekler ve engelleme

SELECT r.session_id, r.status, r.blocking_session_id, r.wait_type,
       r.wait_time, r.cpu_time, r.logical_reads, t.text AS sorgu
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.session_id <> @@SPID;

blocking_session_id dolu olan satırlar, başka bir oturumun kilidini bekliyor demektir. Zincirin başındaki oturum genellikle uzun süren veya COMMIT edilmeyi unutulmuş bir işlemdir.

En pahalı sorgular

SELECT TOP 10
       qs.total_worker_time / qs.execution_count AS ort_cpu,
       qs.total_logical_reads / qs.execution_count AS ort_okuma,
       qs.execution_count,
       SUBSTRING(t.text, 1, 200) AS sorgu
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) t
ORDER BY qs.total_logical_reads DESC;

Bekleme türleri

BeklemeGenellikle işaret ettiği
PAGEIOLATCH_*Diskten sayfa okuma: bellek yetersiz veya eksik indeks yüzünden çok okuma
LCK_M_*Kilit bekleme: engelleme, uzun işlemler
CXPACKET / CXCONSUMERParalel sorgu senkronizasyonu
WRITELOGGünlük diski yavaş
SOS_SCHEDULER_YIELDCPU baskısı

Deadlock (kilitlenme)

İki işlem birbirinin kilidini bekler: A, X'i kilitleyip Y'yi ister; B, Y'yi kilitleyip X'i ister. SQL Server bunu otomatik algılar ve birini kurban seçip geri alır (hata 1205). Uygulama bu hatayı yakalayıp işlemi yeniden denemelidir.

AraçlarQuery Store (sorgu geçmişi), Extended Events (deadlock grafikleri dahil hafif izleme), Activity Monitor. PostgreSQL'de pg_stat_activity ve pg_stat_statements; MySQL'de performance_schema ve sys şeması; Oracle'da AWR raporları.
Alıştırmalara geç (4)