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ı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar