SQL Server Profiler

Merhaba arkadaşlar. Bildiğiniz üzere MS SQL veritabanı, veriyle ilgili pozisyonlarda çalışan birçok kişinin iş dünyasında sıklıkla kullandığı bir veritabanı. Bu yazıda SQL Server üzerinde bir sorgu çalışırken sunucuda neler oluyor; hangi stored prosedür çalışıyor,  sonuçları hangi tabloya yazıyor veya hangi parametreler kullanılıyor, bu sorgu ne kadar CPU harcıyor, sorgu sırasında hangi index ID kullanılıyor gibi gözlemlemek istediğimiz metrikleri SQL Server Profiler kullanarak nasıl yanıtladığımızı göreceğiz.

SQL Profiler’ı ne zaman kullanırız?

Ben genellikle kullandığım uygulama programının SQL sunucuda hangi sorguları çalıştırdığını görmek ve işlemimin etkinliğini izlemek için kullanıyorum. Mesela uygulama üzerinde bir seçeneğe tıkladım ve hata aldım, sebebini bulmak için arka tarafta hangi sorguların çalıştığını ve hangi sebepten dolayı hata aldığımı bulmak için Profiler kullanıyorum.

Ayrıca yukarıda bahsettiğim gibi veritabanınızın genel durumunu/performansını kontrol etmek, zayıf performans gösteren sorgularınızı analiz etmek veya işleminiz üzerinde denetim kurmak için kullanılabilirsiniz.

SQL Profiler’ı nasıl kullanabiliriz?

SQL Server Profiler zaten Management Studio ile bilgisayarımıza kuruluyor. Başlat menüsünde aratarak veya Management Studio Tools (Araçlar) sekmesindenden uygulamamızı açabiliriz.

Şekil-1: SQL Server Management ile Profiler Açma

İlk olarak açılan ekranda yeni trace (gözlem) oluşturmak için File sekmesinden New Trace diyebiliriz veya aşağıdaki resimde gösterilen sol üstteki kutucuğa tıklayabiliriz. Bağlanacağımız sunucuya ait bilgileri girdikten sonra Connect diyoruz.

Şekil-2: SQL Server Profiler

Sunucuya bağlandıktan sonra iki sekmeden oluşan Trace Properties ekranı açılmakta. Burada bulunan seçenekler sayesinde SQL Server örneğimizi çok fazla ek yüke neden olmadan daha yüksek performanslı olarak izleyebiliriz. İlk sekme olan general (genel), şunları yapmanıza olanak sağlar:

Şekil-3: Trace Properties

Trace name alanında izlememize isim vererek sonraki kullanımlarımızda hatırlatıcı olmasını sağlayabiliriz.

Use the template alanında şablon seçimi yapıyoruz. Şablonlar temelde izlemek istediğiniz kaydedilmiş olaylar ve veri sütunları kümesidir. Her yeni izleme oturumu başlattığımızda tüm olayları ve veri sütunlarını manuel olarak seçmemize gerek kalmadan hızlı bir şekilde izlemeye başlamamıza olanak tanırlar. Acil izlememiz gereken bir durum olduğunda trace tanımlamak zorunda kalmayız. Varsayılan olarak “Standard” şablon seçilir.

Save to file/table alanlarında izleme verilerimizi dosyaya veya bir tabloya kaydetmek için tanımlama yapabiliriz.  

Enable trace stop time ile izlemeyi durdurma süresi tanımlayabiliriz.

Bu penceredeki ikinci sekme olan event selection (olay seçimi), hangi olayları izlemek istediğimizi ve her olay için hangi veri sütunlarının dahil edilmesini istediğimizi yapılandırdığımız yerdir. Bu sekmede ayrıca arayüzün sağ alt kısmında filtreler ekleyebilir ve verilerin düzenlenme şeklini değiştirebiliriz. Aşağıda, önceki sekmede “Standart” şablonu seçtiğimiz için, etkinlikler ve veri sütunlarının zaten doldurulmuş olduğunu görebilirsiniz. Bu noktada, bunu gerektiği gibi düzenleyebilir veya izlemeyi olduğu gibi başlatmak için run (çalıştır) seçeneğini tıklayabilirsiniz.

Şekil-4: Trace Properties General Sekmesi

Fakat bir veritabanı örneğinde perde arkasında o kadar çok şey oluyor ki, bir izlemedeki her olayı yakalamak, SQL Profiler’daki ekranı neredeyse okunamaz hale getirecektir. Bunun için olayları veya sütunları filtrelemek için sağ alttaki seçenekleri kullanabiliriz. Aşağıdaki örneğimde, ErrorLog olayı için tüm veri sütunlarını ve Blocked process report olayı için yalnızca TextData veri sütununu seçtim.

Şekil-5: Trace Properties Events Selection Sekmesi

Seçtiğiniz bir olayın parçası olan herhangi bir veri sütununa filtre uygulanabilirsiniz. Veri sütunu, SQL izleme oturumunuzun bir parçası olarak kaydedilmemiş olsa bile, yine de buna dayalı bir filtre uygulayabilirsiniz.

Column Filters (Sütunları Filtrele) seçeneği ile aşağıdaki gibi kısıtlama özelliklerini kullanmamız mümkün. Örneğin farklı kullanıcılardan ziyade sadece kendi işlemlerimizi izleyebilmek için ProcessID ye filtre koyabiliriz. Kendi işlem ID mizi bulmak için spesifik bir işlem yaparak o işleme ait ClientProcessID ile kendimizi tanıyabiliriz. Bir diğer yöntem ise görev çubuğunda sağ tıklayıp Görev Yöneticisini açarak kullandığımız uygulamayı buluruz ve tekrar sağ tıklayıp detaylara git dediğimizde PID yi kullanarak kendi işlemlerimizi izlemeye başlayabiliriz.

Şekil-6: Task Manager ile ClientID Bulma

Bulduğumuz ID’yi aşağıdaki gibi (equals) eşittir bölümüne yazdıktan sonra akışta artık sadece kendi işlemlerimiz listeleniyor olacaktır. Diğer filtre koyabileceğimiz alanların listesi de bu resimde görülebilir.

Şekil-7: Edit Filter ile İzlemeyi Filtreleme

İstediğimiz filtrelemeleri yaptıktan sonra artık trace (izleme) başlatabiliriz. Araç çubuğundaki sekmeleri kullanarak ekranı temizleyebilir (Clear Trace Window), daha sonra tekrar başlatıp (Start Selected Trace) dilediğimiz zaman durdurabiliriz (Pause Selected Trace). Find String ile sayfa içinde arama yapabiliriz. Bu izleme çıktı penceresinde görmek istediğimiz sütunlar soldan sağa sırada görünecektir.

Şekil-8: İzleme Çıktı Penceresi

Alt taraftaki çıktı alanından yakaladığımız olaya ait sorguyu alıp SQL’de dilediğimiz gibi kullanabiliriz. İşte Profiler kullanmak bu kadar basit. Eğer sorunuz olursa bana yazmaktan çekinmeyin.

SQL Server Profiler kullanmanız dileğiyle!

Kaynakça

https://hackernoon.com/sql-server-profiler-best-practices-and-tuning-advisory-d8c746f54809

Görsel Kaynak:

https://defkey.com/tr/sql-server-profiler-klavye-kisayollari

Yazar Hakkında
Toplam 13 yazı
Şeyma Taşçı
Şeyma Taşçı
Kocaeli Üniversitesi Endüstri Mühendisliği mezunu, aynı zamanda 4. sınıf MIS öğrencisi. İş Analisti olarak çalışıyor.
Yorumlar (Yorum yapılmamış)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara