1. Ana Sayfa
  2. SQL Server
  3. SQL Server Extended Events Özelliği Nedir? Nasıl Kullanılır?

SQL Server Extended Events Özelliği Nedir? Nasıl Kullanılır?

Extended Events ilk olarak SQL Server 2008’de tanıtılmasına karşın GUI’ye sahip değildi ve bu nedenle de performans ölçümü için çok fazla tercih edilen bir seçenek değildi. SQL Server 2012 ile kullanışlı bir GUI’ye kavuştu ve SQL Profiler yerine tercih edilebilir hale geldi. Profiler’ın, performans açısından Extended Events’e göre dezavantajları olduğundan,  Microsoft Profiler yerine Extended Events’in kullanılmasını öneriyor. Hatta Profiler şu anda “deprecated feature”lar arasında yer alıyor.  Örnek vermek gerekirse Profiler’da filtreleme yapılsa bile önden filtreleme etkin olmadığı için yoğun çalışan sistemlerde Profiler çalıştırılmaması gerekiyor.


Resim-1

Extended Events ile SQL Server sorgularını takip edebilir, performans analizi yapabilir, deadlock problemlerini çözebilir ve T-SQL statement’larını debug edebilirsiniz.

Extended Events’i Management Studio üzerinde, Managements klasörü altında bulabilirsiniz.


Resim-2

Burada Sessions’a sağ tıklayarak New Session Wizard ile birkaç adımda  “XEvents Test” adında yeni bir Extended Event session’ı oluşturalım.

1. Set Session Properties: Session adı ve Server başlangıcında otomatik olarak başlayıp başlamayacağını belirleyebiliyoruz.


Resim-3

2. Choose Template: Amacımıza uygun template’lerden birini seçebilir, ya da template kullanma seçeneğini işaretleyerek bir sonraki ekranda seçimleri yapabiliriz.


Resim-4

3. Selects Events To Capture: Seçtiğimiz template’i ya da seçmediysek yakalanacak eventleri de bu ekranda düzenleyebiliyoruz. Event Library’den filtreleme de yapılabiliyor.


Resim-5

Bu event’lerin bir kısmına kısaca bakalım.

Execution

rpc_completed: Bir Remote Procedure Call’un tamamlanması
sp_statement_completed: Stored Procedure içerisindeki bir SQL statement’ın tamamlanması
sql_batch_completed: Bir T-SQL batch’in tamamlanması
sql_statement_completed: Bir T-SQL statement’ının tamamlanması

sql_statement_recompile: Bir execution plan’in recompile olması gerektiği durumlar
rpc_starting: Bir stored procedure’ın başlaması
Query_post_compilation_showplan: Bir SQL statement derlendikten sonraki execution plan’ı gösterir.
Query_post_execution_showplan: Bir SQL statement, execution istatistikleri içerecek şekilde çalıştırıldıktan sonraki execution planı gösterir.

Session

login: Kullanıcıların veritabanına bağlantıları (giriş)
logout: Kullanıcıların veritabanına bağlantıları (çıkış)
existing_connection: Session başlamadan önce bağlı olan kullanıcılar

Cursor

cursor_implicit_ conversion: İstenilen tipten farklı bir cursor tipi oluşturulması

Errors

attention: İptal edilen sorgu ya da timeout nedeniyle kopan database bağlantıları
error_reported: Hata bildirimi olduğu zamanlarda oluşur.
execution_warning: Bir sorgu ya da stored procedure çalışırken herhangi bir uyarı olması
hash_warning: Hash işlemi sırasında bir hata olması

Warnings

missing_column_statistics: Optimizer tarafından istenilen istatistik bilgisi olmaması
missing_join_predicate: 2 tabloya join predicate olmadan sorgu çalıştırılması
sort_warnings: Sorgudaki sort işlemi ile ilgili hafıza sorunları olması

Lock

lock_deadlock: Deadlock oluşması
lock_deadlock_chain: Bir sorgu dizisinin deadlock oluşturması
lock_timeout: lock’ın timeout parametresini aşması

Transactions

sql_transaction: Transaction hakkında başlangıç, bitiş ve roll back bilgisi verir.

4. Capture Global Fields: Bütün eventlerde ortak olan alanları buradan ekleyip çıkarmak mümkün.


Resim-6

5. Set Session Event Filters:  Dinlenecek event’lerin belirli parametrelere göre filtreleyebiliyoruz. Template gelen filtrelere ek olarak sadece AdventureWorks2012 veritabanına ait event’leri dinleyelim.


Resim-7

6. Specify Session Data Storage: Analizi daha sonra yapmak istersek, dosya olarak kaydetmemiz mümkün.


Resim-8

7. Summary: Seçeneklerimizin özetini gördükten sonra istersek scriptini de alabiliyoruz.

8. Create Event Session: Son adımda event session’ı oluşturuyoruz.


Resim-9

Event session’ı test etmek için bir sorgu yazıp çalıştıralım. Ekran görüntüsünde göreceğiniz gibi 2 adet event’i yakaladık ve bu event’lerde sorgu ile ilgili bilgileri görebiliyoruz.


Resim-10

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap