MSSQL Server Profiler Kullanımı

SQL Server Profiler, SQL Server’a gelen ve giden tüm işlemleri (sorgular, oturumlar, hata mesajları, deadlocklar, login denemeleri vb.) gerçek zamanlı olarak izlemek ve kaydetmek için kullanılan bir grafik arayüze sahip araçtır.

Profiler, sistemde neler olup bittiğini ayrıntılı şekilde görmenizi sağlar. Özellikle performans sorunları, yavaş sorgular, bekleme türleri, bloklamalar, erişim hataları gibi problemleri analiz etmek için oldukça etkilidir.

SQL Server Management Studio (SSMS) üzerinden:

Tools> SQL Server Profiler sekmesine tıklanır veya Windows başlat bölümünden SQL Server Profiler ilgili sql serverla uyumlu profiler yapısına girilir.

Profiler bölümüne girdikten sonra ok işaretiyle belirtilmiş olan yerden New Trace denilip bağlantı sağlamak istediğimiz sunucu seçimi yapılır.

Gelen ekranda bölümlerin ne işe yaradığına değinelim.

Trace Name: İzlemeye anlamlı bir isim verilir. Biz Takip23 ismini vermiş olduk.

Save to file: Sonradan incelemek için dosyaya kaydedebilirsin (.trc uzantılı).

Use the template: Microsoft’un sunduğu hazır şablonlardan birini kullanabilir ya da kendin özelleştirebilirsin (en sık: TSQL_Replay, TSQL_Duration).

BlankTamamen boş bir yapı getirir. Her şeyi manuel olarak sen seçersin. Gelişmiş kullanıcılar özelleştirme için tercih eder.
TuningPerformans ayarı (tuning) yapılırken kullanılır; CPU, duration ve reads yüksek olan sorguları ortaya çıkarır.
TSQL_DurationÖzellikle uzun süren sorguları tespit etmek için; Duration, CPU, Reads gibi kolonlar içerir.

Events Selection bölümünde hangi tür olayları izleyeceğini seçersin. Aşağıda en kritik kategorileri açıklıyorum:

Aşağıdaki işlemlerin aynısını extented event ile yapabiliyoruz. Başlıklar hemen hemen aynı.

ÖNEMLİ EVENT CLASS KATEGORİLERİ

A. TSQL

Bu kategori, sorgu düzeyindeki işlemleri gösterir.

Event ClassAçıklama
SQL:BatchStartingSorgu çalıştırılmaya başlandığında tetiklenir
SQL:BatchCompletedSorgu tamamlandığında tetiklenir
RPC:CompletedStored Procedure (SP) tamamlandığında gösterilir

Yukarıdaki ifadeler özellikle yavaş sorgu takibi için seçilmelidir.

B. Stored Procedures

Event ClassAçıklama
SP:StartingBir SP çalıştırılmaya başlandığında
SP:CompletedSP başarıyla tamamlandığında

C. Performance

Event ClassAçıklama
Showplan XMLQuery Execution Plan’ı XML olarak gösterir
Execution PlanSorgunun nasıl çalıştığını görsel olarak verir

D. Errors and Warnings

Event ClassAçıklama
User Error MessageKullanıcıya gösterilen hata mesajları
ExceptionSQL hataları (örneğin syntax hataları)
AttentionSorguların kesilmesi (örneğin SSMS’den durdurulması)

Yukarıdaki ifadeler hata ayıklama için mutlaka seçilmeli.

E. Locks

Event ClassAçıklama
Lock:AcquiredKaynak üzerinde kilit alındı
Lock:ReleasedKilit serbest bırakıldı

Bloklama ve deadlock analizi için gereklidir.

F. Security Audit

Event ClassAçıklama
Audit LoginGiriş denemeleri
Audit LogoutOturum kapanışları
Audit Failed LoginBaşarısız giriş denemeleri

Yukarıdaki ifadeler kullanıcı güvenliği takibi için uygundur.

KOLONLAR (COLUMNS) VE FİLTRELEME

En Faydalı Kolonlar:

Kolon AdıAnlamı
TextDataGerçek SQL komutu
DurationSorgunun çalışma süresi (milisaniye)
CPU, Reads, WritesSistem tüketim bilgisi
LoginNameSorguyu çalıştıran kullanıcı
ApplicationNameBağlantıyı kuran uygulama adı
HostNameİstemci bilgisayar adı
SPIDSQL oturum numarası

Bir örnek üzerinden konunun daha iyi anlaşılmasını sağlayalım. Hatalı bağlantı yapan kullanıcıları Audit Login Failed ile bulmaya çalışacağız. Bunun için ilgili trace seçilir.

Column Filters kısmından genel kısıtlamamızı daha da minimize edebiliriz.

Gerekli filtreleme yapıldıktan sonra Run denilip oluşturduğumuz yapı çalıştırılır.

Şimdi filtreleme kısmına eklediğimiz kullanıcı haricinde başka bir kullanıcı ile hatalı giriş yapalım.

Filtreleme kısmında belirttiğimiz kullanıcı dışında bir kullanıcı ile giriş yaptığımızda Profiler ekranına düşmediğini görmüş oluyoruz.

Şimdi filtreleme kısmına eklediğimiz kullanıcı ile hatalı giriş yapalım.

İlgili kullanıcının Profiler ekranına düştüğünü görmekteyiz.

Bu gibi buna benzer birden fazla işlem için Profiler oluşturulur.

Bir başka örnekte uzun süren sorguları yakalamak için iki parametre genellikle kullanılır. SQL:BatchCompleted ve RPC:Completed ifadeleridir. Bu ifadeler seçildikten sonra Filter kısmında belirli bir ms üzerinde olan değerleri yakalamasını ve ayrıca hangi veritabanı üzerinde bu ifadelerin çalışacağını belirleyebiriz.

Exclude rows that do not contain values değeri ile yazılan ifadeyi onaylıyorum.

Yukarıdaki ifadelerden sonra ilgili veritabanına select seçtiğimde herhangi bir sonuç dönmemiş oldu.

wait for ile bir sorgu çalıştırdığımda 5 saniye üzeri olduğu için Trace ekranımıza sorgumuzun düştüğünü görmüş olacağız.

Yukarıdaki işlem sonucunu bir tabloya kaydetmek için aşağıdaki resimde bulunan ilgili yere tıklanır.

Bağlantı sağlanacak instance’a connect olunur.

Seçilen veritabanına belirtilen tablo ismiyle bağlantı sağlanan instance üzerine kaydedilir.

HANGİ DURUMLARDA PROFILER KULLANILIR

SenaryoProfiler Kullanımı
Yavaş çalışan sorgularDuration, Reads, CPU kolonlarını analiz et
Deadlock/blokaj analiziLocks, Deadlock graph, Blocking chain
Stored Procedure izlemeSP:Starting, SP:Completed
Hata yakalamaErrors and Warnings kategorisi
Kim ne zaman bağlanmışAudit Login, Audit Logout

DİKKAT EDİLMESİ GEREKENLER

Risk / SorunAçıklama
Yüksek kaynak kullanımıProfiler canlı izleme yaparken sunucuya yük bindir
Canlı sistemde uzun süre çalıştırmaUygun filtreler olmadan üretim ortamında uzun süreli profiler kullanılması önerilmez.
Daha modern alternatif:Extended Events daha hafif ve esnektir

Bu makalede Profiler konusunu detaylı bir şekilde görmüş olduk. Başka makalede görüşmek dileğiyle..

“Her insan hata eder. Hata işleyenlerin en hayırlıları tevbe edenlerdir.” (Tirmizî)

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir