1. Giriş
1.1 Nedir SQL Server Etkinlik Monitörü?
SQL Server Aktivite İzleyici, dahili bir teşخيص aracıdır. SQL Server Hakkında bilgi görüntüleyen Yönetim Stüdyosu SQL Server süreçleri ve bunların sunucu performansı üzerindeki etkilerini izlemenize olanak tanır. SQL Server süreçleri yönetin, kaynak beklemelerini izleyin, pahalı sorguları analiz edin ve G/Ç modellerini gözlemleyin; tüm bunları tek bir arayüzden yapın.
1.2 Neden Kullanılmalı SQL Server Etkinlik Monitörü?
Etkinlik İzleyicisi, performans sorunlarını giderirken ilk savunma hattınız olarak hizmet verir. Bilgisayarınızda neler olup bittiğine dair anında görünürlük sağlar. SQL Server Karmaşık T-SQL sorguları veya üçüncü taraf araçları gerektirmeden örnek.
Araç, oturum engellemeleri, CPU yoğun sorgular, aşırı sorgu yürütmeleri ve G/Ç darboğazları gibi yaygın sorunları hızla belirlemenize yardımcı olur. Kullanıcılar bir uygulamanın yavaş veya yanıt vermediğini bildirdiğinde, Etkinlik İzleyicisi sorunun veritabanı sunucusunda olup olmadığını belirlemenize yardımcı olur.
Veritabanı yöneticileri için, veritabanıyla çalışmayanlar için SQL Server Etkinlik İzleyici, sunucu etkinliğini anlamak için günlük olarak erişilebilir bir giriş noktası sunar. Deneyimli veritabanı yöneticileri bile performans araştırmaları için başlangıç noktası olarak bunu kullanır.
1.3 Etkinlik İzleyicisi ve Diğer İzleme Araçları
Activity Monitor değerli olsa da, onu diğer izleme seçenekleriyle nasıl karşılaştırdığınızı anlamak önemlidir:
Etkinlik İzleyicisi ve sp_WhoIsActive Karşılaştırması: Activity Monitor, birden fazla bölmeye sahip grafiksel bir arayüz sağlarken, sp_WhoIsActive, tek bir sonuç kümesinde daha ayrıntılı bilgiler sunan kapsamlı bir saklı yordamdır. sp_WhoIsActive, Activity Monitor'ün birlikte gruplandırdığı belirli bekleme türlerini gösterir ve daha ayrıntılı engelleme bilgileri sağlar.
Aktivite İzleyicisi ve sp_who2 karşılaştırması: Geleneksel sp_who2 komutu temel oturum bilgilerini gösterir, ancak Etkinlik İzleyicisi bekleme istatistiklerini, pahalı sorguları ve G/Ç ölçümlerini düzenli ve görsel bir biçimde görüntüleyerek daha da ileri gider.
Etkinlik İzleyici ve Üçüncü Taraf Araçlar: SolarWinds Database Performance Analyzer gibi ticari izleme çözümleri, Activity Monitor'ün sunmadığı geçmişe dönük izleme, uyarı ve gelişmiş analiz özellikleri sunmaktadır. Bununla birlikte, Activity Monitor ek maliyet veya kurulum gerektirmez.
1.4 Veritabanı Yöneticileri için Temel Faydalar
Activity Monitor, onu önemli bir DBA aracı yapan birçok avantaja sahiptir:
- Sıfır Maliyet: Yerleşik olarak SQL Server Management Studio özelliği sayesinde herhangi bir lisans ücreti veya dağıtım çabası gerektirmez.
- Gerçek zamanlı izleme: 1 saniyeden 1 saate kadar yapılandırılabilir yenileme aralıklarıyla, mevcut sunucu etkinliğini anında görün.
- Entegre Eylemler: Oturumları sonlandırmak, sorgu ayrıntılarını görüntülemek veya başlatmak için işlemlere sağ tıklayın SQL Server Profiler izleri—hepsi aracın içinden.
- Çoklu Perspektifler: Performansın belirli yönlerine odaklanan beş özel bölme aracılığıyla sunucu sağlığını farklı açılardan görüntüleyin.
- Hızlı Sorun Giderme: En sık karşılaşılan performans sorunlarını dakikalar içinde tespit ederek, çözüm sürenizi kısaltın.
- Girişe Karşı Düşük Engel: Aracı etkili bir şekilde kullanmaya başlamak için ileri düzeyde bilgiye gerek yok, ancak daha derin SQL Server Uzmanlık yorumlamada yardımcı olur.
2. Aktivite İzleyicisini Kullanmaya Başlamak
Activity Monitor'ü etkili bir şekilde kullanabilmeniz için, aracı başlatmak için gerekli ön koşulları, gerekli izinleri ve çeşitli yöntemleri anlamanız gerekir.
2.1 Önkoşullar ve Sistem Gereksinimleri
Kullanmak için SQL Server Aktivite İzleyicisi'ne ihtiyacınız var SQL Server Yerel makinenize veya bir atlama sunucusuna yüklenen Management Studio (SSMS). Etkinlik İzleme aracı, 2017'de önemli ölçüde yeniden tasarlandı. SQL Server 2008'den beri geçerlidir, bu nedenle bu kılavuzdaki bilgiler SQL Server 2008 ve sonraki sürümler.
Ağ bağlantınızın olması gerekir SQL Server İzlemek istediğiniz örnek. Bulut tabanlı veritabanları için, örneğe erişmek için genellikle bir VPN bağlantısına veya düzgün yapılandırılmış güvenlik duvarı kurallarına ihtiyacınız olacaktır.
Etkinlik İzleyicisi tüm sürümlerle çalışır SQL ServerExpress, Standard ve Enterprise dahil olmak üzere. Araç, SSMS içindeki istemci makinenizde çalışır, bu nedenle sunucunun kaynakları yalnızca yürüttüğü izleme sorgularından etkilenir.
2.2 Gerekli İzinler
Etkinlik İzleyicisi'nin düzgün çalışması için uygun izinlere sahip olmak şarttır. Uygun izinlere sahip değilseniz, boş bir ekran görebilir veya erişim engellendi hataları alabilirsiniz.
2.2.1 SUNUCU DURUMUNU GÖRÜNTÜLE İzni
MKS SUNUCU DURUMUNU GÖRÜNTÜLE Etkinlik İzleyicisi'ni kullanmak için temel gereksinim izindir. Bu sunucu düzeyindeki izin, tüm etkin süreçleri ve bunlarla ilişkili ölçümleri görmenizi sağlar.
Bu izni vermek için sunucu yöneticisi şunları yürütebilir:
GRANT VIEW SERVER STATE TO [YourLoginName];
VIEW SERVER STATE olmadan, Activity Monitor açılabilir ancak bölmelerinden hiçbirinde veri görüntülenmeyebilir.
2.2.2 Veritabanı Düzeyinde İzinler
Veri Dosyası G/Ç bölmesindeki bilgileri görüntülemek için ek izinlere ihtiyacınız vardır. Özellikle, aşağıdaki kombinasyonlardan birine sahip olmanız gerekir:
- VERİTABANI YARAT izin veya
- HERHANGİ BİR VERİTABANINI DEĞİŞTİRİN izin veya
- HERHANGİ BİR TANIMI GÖRÜNTÜLE izin
Bu izinler aşağıdakilerle birleştirilmelidir: SUNUCU DURUMUNU GÖRÜNTÜLE Tam Etkinlik İzleyici işlevselliği için.
2.2.3 İzin Sorun Giderme
Etkinlik İzleyicisi açılıyor ancak veri göstermiyorsa, en yaygın neden izinlerdir. Oturum açma işleminizin sunucu düzeyinde SUNUCU DURUMUNU GÖRÜNTÜLE iznine sahip olduğundan emin olun. İzinlerinizi şu komutu çalıştırarak doğrulayabilirsiniz:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
permission_name sütununda 'VIEW SERVER STATE' seçeneğini arayın. Eksikse, yetkilendirilmesi için veritabanı yöneticinizle iletişime geçin.
2.3 SSMS'de Etkinlik İzleyicisi Nasıl Açılır
SQL Server Management Studio, iş akışı tercihlerinize göre esneklik sağlayarak Etkinlik İzleyicisi'ni başlatmak için dört farklı yöntem sunar.
2.3.1 Yöntem 1: Araç Çubuğundan
Etkinlik İzleyicisini açmanın en hızlı yolu araç çubuğu simgesini kullanmaktır:
- Bağlanın SQL Server örnek SQL Server Yönetim Stüdyosu.
- Standart araç çubuğunda Etkinlik İzleyicisi simgesini bulun (yeşil oynatma düğmesi olan bir çubuk grafiğe benzer).
- Etkinlik İzleyicisini başlatmak için simgeye tıklayın.
Bu yöntem, halihazırda SSMS'de çalışıyorsanız ve sunucu etkinliğini hızlıca kontrol etmeniz gerekiyorsa en hızlı yöntemdir.
2.3.2 Yöntem 2: Nesne Gezgini'nden
Etkinlik İzleyicisini doğrudan Nesne Gezgini'nden de başlatabilirsiniz:
- Nesne Gezgini'nde şunu bulun: SQL Server izlemek istediğiniz örnek.
- Örnek ismine sağ tıklayın.
- Seç Activity Monitor bağlam menüsünden.
Bu yöntem, birden fazla sunucuya bağlandığınızda yararlıdır, çünkü doğru örneği izlediğinizden emin olmanızı sağlar.
2.3.3 Yöntem 3: Klavye Kısayolunu Kullanma
Klavye odaklı kullanıcılar için, SQL Server Management Studio özel bir kısayol sağlar:
- SSMS'nin etkin pencere olduğundan ve bir örneğe bağlı olduğunuzdan emin olun.
- Basın Ctrl + Ara Toplam + A.
- Etkinlik İzleyicisi, Nesne Gezgini'nde şu anda seçili olan örnek için açılacaktır.
Etkinlik İzleyicisi'nin Nesne Gezgini'nde seçtiğiniz sunucu örneğine bağlanacağını unutmayın, bu nedenle bu kısayolu kullanmadan önce doğru örneği seçtiğinizden emin olun.
2.3.4 Yöntem 4: Seçenekler Menüsünden (Başlangıç Yapılandırması)
Etkinlik İzleyici'yi sık sık kullanıyorsanız, SSMS'yi uygulamayı her başlattığınızda otomatik olarak başlatacak şekilde yapılandırabilirsiniz:
- In SQL Server Yönetim Stüdyosu'na gidin Montaj Ekipmanı -> Seçenekler.
- Seçenekler iletişim kutusunda, genişletin çevreVe sonra seçim Başlangıç.
- itibaren Başlangıçta açılır liste, seçin Nesne Gezgini ve Etkinlik İzleyicisini açın.
- Seç OK.
Bir sonraki sefer SSMS'yi başlattığınızda ve bir sunucuya bağlandığınızda, Etkinlik İzleyicisi Object Explorer ile birlikte otomatik olarak açılacaktır.
3. Etkinlik İzleme Bölmelerini Anlama
Etkinlik İzleyicisi, bilgileri sunucu etkinliğine farklı bir bakış açısı sunan beş genişletilebilir bölmede düzenler. Her bölmenin ne gösterdiğini anlamak, etkili sorun giderme için çok önemlidir.
3.1 Genel Bakış Bölmesi
Genel Bakış bölmesi, size sağlığınızın hızlı bir anlık görüntüsünü veren dört gerçek zamanlı grafik sunar. SQL Server Örneğin. Bu grafikler yapılandırılabilir bir aralıkta güncellenir ve anormal örüntüleri tek bakışta belirlemenize yardımcı olur.
3.1.1 % İşlemci Süresi
Bu grafik, işlemcinin boşta olmayan iş parçacıklarını yürütmek için harcadığı zamanın yüzdesini gösterir. SQL Server tüm CPU'larda örnek. Değer, SQL ServerSunucunun tüm CPU kullanımını değil, 'nin işlemci kullanımını ifade eder.
İşlemci kullanım süresinin sürekli olarak %100 veya daha yüksek olduğunu görüyorsanız, sunucunuz CPU'ya bağımlıdır. Bu, verimsiz sorguları, eksik indeksleri veya yetersiz donanım kapasitesini gösterebilir. En çok CPU tüketen sorguları belirlemek için Son Zamanlarda Yüksek Maliyetli Sorgular bölmesini kullanın.
3.1.2 Bekleme Görevleri
Bu ölçüm, devam edebilmek için kaynakların serbest bırakılmasını bekleyen görev sayısını gösterir. Görevler CPU, G/Ç, bellek veya kilit bekleyebilir.
Sürekli olarak yüksek sayıda bekleyen görev, kaynak çekişmesi olduğunu gösterir. Kaynak Beklemeleri bölmesi, beklemelere neden olan kaynak türleri hakkında daha fazla ayrıntı sağlar.
3.1.3 Veritabanı G/Ç (MB/sn)
Bu grafik, bellek ve disk arasındaki veri aktarım hızını gösterir. Hem okuma hem de yazma işlemleri birleştirilir ve saniyede megabayt cinsinden ölçülür.
Veritabanı G/Ç'sindeki ani artışlar, sorguların büyük tablo taramaları, aşırı günlük kaydı etkinliği veya kontrol noktası işlemleri gerçekleştirdiğini gösterebilir. Veri Dosyası G/Ç bölmesi, G/Ç etkinliğini veritabanı ve dosya bazında ayırır.
3.1.4 Toplu İstek/sn
Bu metrik, sayısını temsil eder SQL Server Örnek tarafından saniye başına alınan toplu işlem sayısı. Toplu işlem, tek bir ifade veya birlikte gönderilen birden fazla ifade olabilir.
Bu değer size genel sunucu etkinliği hakkında bir fikir verir. Normal çalışma saatleri içinde toplu isteklerde yaşanan ani düşüşler, uygulama bağlantı sorunlarına veya kullanıcıya yönelik sorunlara işaret ediyor olabilir.
3.1.5 Yenileme Aralıklarını Ayarlama
Etkinlik İzleyicisinin verilerini ne sıklıkla güncelleyeceğini özelleştirebilirsiniz:
- Genel Bakış bölmesinde herhangi bir yere sağ tıklayın.
- Seç Yenileme aralığı.
- Önceden tanımlanmış değerlerden bir aralık seçin: 1 saniye, 5 saniye, 10 saniye (varsayılan), 30 saniye, 1 dakika veya 1 saat.
Yenileme aralıklarını 10 saniyenin altına ayarlamak, sunucunuzdaki izleme yükünü artırır. Yoğun yük altındaki üretim sistemleri için, etkiyi en aza indirmek amacıyla 30 saniye veya daha uzun aralıklar kullanmayı düşünün.
3.2 İşlemler Bölmesi
İşlemler bölmesi, bilgisayarınızda şu anda çalışan oturumlar hakkında bilgi görüntüler. SQL Server Örneğin. Bu bölme, kimin ne yaptığını belirlemek ve engelleme sorunlarını tespit etmek için önemlidir.
3.2.1 Süreç Bilgilerini Anlama
İşlemler bölmesindeki her satır, sunucudaki etkin bir oturumu temsil eder. Bölme, tüm veritabanlarından ve tüm kullanıcılardan gelen oturumları göstererek sunucu etkinliğinin kapsamlı bir görünümünü sunar.
Görüntülenen bilgiler arasında oturum açma adı, uygulama adı, ana bilgisayar adı, erişilen veritabanı ve geçerli komut yer alır. Bu, veritabanı etkinliğini belirli kullanıcılar veya uygulamalarla ilişkilendirmenize yardımcı olur.
3.2.2 Anahtar Sütunların Açıklaması
Temel sütunları anlamak, süreç bilgilerini etkili bir şekilde yorumlamanıza yardımcı olur:
- Oturum kimliği: Her bağlantı için benzersiz bir tanımlayıcı. Sistem süreçleri negatif oturum kimlikleri kullanır.
- Kullanıcı İşlemi: Bunun bir kullanıcı oturumu (Evet) veya bir sistem işlemi (Hayır) olup olmadığını belirtir.
- Üye Girişi: MKS SQL Server Oturumla ilişkili oturum açma veya Windows hesabı.
- Veri tabanı: Oturum için geçerli veritabanı bağlamı.
- Görev Durumu: Oturumun şu anda ne yaptığını gösterir (ÇALIŞIYOR, ASKIDA, UYKUDA, vb.).
- komut: Yürütülen komutun türü (SELECT, INSERT, UPDATE, vb.).
- Uygulama: Bağlantıyı oluşturan uygulamanın adı.
- Bekleme zamanı: Oturumun kaynakları beklediği süre (milisaniye cinsinden).
- Bekleme Türü: Oturumun beklediği belirli kaynak türü.
- CPU Süresi: Bu oturumun bağlandığı andan itibaren tükettiği toplam CPU süresi.
- Bellek Kullanımı: Oturuma şu anda tahsis edilen bellek miktarı (KB cinsinden).
3.2.3 Filtreleme ve Sıralama İşlemleri
İşlemler bölmesi, ilgili oturumlara odaklanmanıza yardımcı olacak güçlü filtreleme özellikleri içerir:
- Herhangi bir sütun başlığındaki açılır oka tıklayın.
- Filtre, söz konusu sütun için kullanılabilir değerleri gösterir; bunlara şunlar dahildir: Tümü, Boşluklar, ve NonBlanks.
- Görüntüyü yalnızca bu oturumlarla filtrelemek için belirli değerleri seçin.
Örneğin, filtreleyebilirsiniz Görev Durumu yalnızca ÇALIŞAN oturumları göstermek veya filtrelemek için veritabanı Belirli bir veritabanına karşı aktiviteyi görmek için.
Ayrıca, herhangi bir sütunun başlığına tıklayarak sıralama yapabilirsiniz. Artan sıralama için bir kez, azalan sıralama için iki kez tıklayın.
3.2.4 Engellenen ve Engellenen Oturumları Belirleme
İşlemler bölmesi, bir oturumun diğerlerinin devam etmesini engellediği engelleme senaryolarını belirlemenize yardımcı olur:
- Engelleyen: Bu oturumu engelleyen oturumun Oturum Kimliğini gösterir. Bu sütun bir değer içeriyorsa, oturum başka bir oturum tarafından tutulan bir kilidi beklemektedir.
- Baş Engelleyici: Bu oturum başkalarını engelliyorsa ancak kendisi engellenmiyorsa '1' görüntülenir. Bu, engelleme zincirinin temel nedenidir.
Bir engelleme sorununu araştırmak için öncelikle baş engelleyiciyi (Baş Engelleyici sütununda '1' ile işaretlenen oturum) belirleyin, sonra ne yaptığını inceleyin ve tamamlanmasına izin verip vermeyeceğinize ya da sonlandıracağınıza karar verin.
3.2.5 İşlem Eylemleri (Sonlandırma, Ayrıntılar, İzleme)
Etkinlik İzleyicisi, bireysel oturumlar üzerinde işlem yapmanıza olanak tanır:
- İşlemler bölmesinde herhangi bir oturumun üzerine sağ tıklayın.
- Birkaç seçenek göreceksiniz:
- Detaylar: Bu oturum tarafından yürütülen son komutu gösterir.
- Öldürme İşlemi: Oturumu sonlandırır (dikkatli kullanın).
- İzleme Süreci SQL Server Profil oluşturucu: Başlattı SQL Server Profiler ve otomatik olarak yalnızca bu oturumdaki etkinlikleri gösterecek şekilde filtreler.
Ayrıntılar seçeneği size komut metnini gösterir, ancak bunun son Komut yürütüldü—hala çalışmıyor olabilir. İzleme seçeneği, bir oturumun yürüttüğü komutların tam sırasını görmeniz gerektiğinde özellikle yararlıdır.
3.3 Kaynak Bekleme Bölmesi
Kaynak Beklemeleri bölmesi, oturumların en sık hangi kaynak türlerini beklediğini gösteren bekleme istatistiklerini özetler. Bu bilgi, performans darboğazlarını teşhis etmek için çok önemlidir.
3.3.1 Bekleme İstatistiklerini Anlama
Ne zaman SQL Server Bir kaynak isteğini (kilit, CPU süresi veya bellek gibi) hemen karşılayamazsa, istekte bulunan görev bekleme durumuna girer. Bekleme istatistikleri bu bekleme sürelerini izler ve sunucunun çalışmak yerine nerede zaman harcadığını anlamanıza yardımcı olur.
Kaynak Beklemeleri bölmesi, sys.dm_os_wait_stats ve sys.dm_exec_requests gibi sistem dinamik yönetim görünümlerinden veri toplar. Her yenileme aralığında, geçerli ve önceki anlık görüntü arasındaki farkı hesaplayarak her bekleme türü için birikim oranını gösterir.
3.3.2 Bekleme Kategorileri
Etkinlik İzleyicisi, yorumlamayı kolaylaştırmak için yüzlerce ayrı bekleme türünü daha geniş kategorilere ayırır:
- CPU: CPU zamanının kullanılabilir hale gelmesini bekleyen görevler.
- Arabellek Mandalı: Bellekteki veri sayfalarına erişimi koruyan kısa süreli senkronizasyon nesnelerini bekler. Bu kategori, sayfa mandalı beklemelerini (PAGELATCH_*) içerir.
- Kilit: Oturumların diğer oturumların ihtiyaç duyduğu kilitleri tutması nedeniyle oluşan beklemeler.
- bellek: Sıralama ve karma gibi işlemler için ihtiyaç duyulan bellek izinlerini bekler.
- Ağ G/Ç: İstemcilere veri göndermeyi veya istemcilerden veri almayı bekler.
- SQL CLR: Ortak Dil Çalışma Zamanı yürütmesiyle ilgili beklemeler.
Bu gruplama görünümü basitleştirirken, önemli ayrıntıları da gizler. Örneğin, "Buffer Latch", performans üzerinde farklı etkileri olan PAGELATCH_SH, PAGELATCH_UP ve PAGELATCH_EX beklemelerini gruplandırabilir.
3.3.3 Bekleme Süresini ve Bekleme Görevlerini Yorumlama
Kaynak Beklemeleri bölmesi her bekleme kategorisi için iki önemli ölçüm görüntüler:
- Toplam Bekleme Süresi (ms): Bu bekleme kategorisi için geçerli yenileme aralığı sırasında biriken toplam milisaniyeler.
- Bekleme Görevleri: Bu kategoride şu anda kaynak bekleyen görev sayısı.
Bekleme süresi değeri özellikle ilgi çekicidir. 10 saniyelik bir yenileme aralığınız varsa ve bir kategori için 20,000 ms bekleme süresi görüyorsanız, bu, birden fazla eşzamanlı bekleme olduğunu gösterir (20,000 ms / 10,000 ms = aralık boyunca 2 eşzamanlı beklemenin ortalaması).
3.3.4 Performans Darboğazlarının Belirlenmesi
Sunucunuzun en çok zamanı nerede beklediğini belirlemek için Kaynak Beklemeleri bölmesini kullanın:
- Kaynak Beklemeleri bölmesini genişletin.
- En yüksek bekleme sürelerinin biriktiği bekleme kategorilerini gözlemleyin.
- Göre sırala Toplam Bekleme Süresi Hangi kaynakların en kısıtlı olduğunu görmek için.
Yüksek Arabellek Mandalı beklemeleri genellikle bellekteki veri sayfaları için çekişmeyi gösterir ve bu da G/Ç darboğazları veya tempdb çekişmesi anlamına gelebilir. Yüksek Kilit beklemeleri engelleme sorunlarına işaret eder. Yüksek Bellek beklemeleri ise sorgu işlemleri için yetersiz bellek tahsisi olduğunu gösterir.
3.4 Veri Dosyası G/Ç Bölmesi
Veri Dosyası G/Ç bölmesi, sunucunuzdaki her veritabanı dosyası için disk etkinliğini göstererek G/Ç darboğazlarını belirlemenize ve disk kullanım modellerini anlamanıza yardımcı olur.
3.4.1 G/Ç Metriklerini Anlama
Veri Dosyası G/Ç bölmesi her veritabanı dosyası için çeşitli ölçümleri görüntüler:
- Veri tabanı: Veritabanının adı.
- Dosya Türü: Veri (tablolar ve indeksler dahil) veya Günlük (işlem günlüğü).
- Mantıksal Ad: Tanımlandığı gibi mantıksal dosya adı SQL Server.
- MB/sn Okunma: Bu dosyadan okunan verinin hızı.
- MB/sn Yazılı: Bu dosyaya yazılan verinin hızı.
- Tepki Süresi (ms): Bu dosyadaki G/Ç işlemleri için ortalama yanıt süresi.
Bu ölçümler, Genel Bakış bölmesiyle aynı aralıkta yenilenir ve size disk etkinliğine ilişkin gerçek zamanlı görünürlük sağlar.
3.4.2 G/Ç Darboğazlarının Belirlenmesi
G/Ç performans sorunlarını gösteren şu kalıplara dikkat edin:
- Yüksek Tepki Süresi: Sürekli olarak 15-20 ms'nin üzerinde olan yanıt süreleri yavaş disk alt sistemlerine işaret eder. 50 ms'nin üzerindeki yanıt süreleri ise ciddi G/Ç darboğazlarına işaret eder.
- Dengesiz Yük: Aynı veritabanındaki bir veri dosyası diğerlerinden önemli ölçüde daha yüksek G/Ç oranları gösteriyorsa, yükü dağıtmak için ek dosyalar eklemekten faydalanabilirsiniz.
- Aşırı Tempdb Etkinliği: Tempdb dosyalarındaki yüksek G/Ç oranları, genellikle sorguların büyük ara sonuç kümeleri oluşturduğunu veya verimsiz yürütme planları kullandığını gösterir.
3.4.3 Veritabanı Dosya Analizi
Veritabanlarınızın disk kaynaklarını nasıl kullandığını anlamak için Veri Dosyası G/Ç bölmesini kullanın:
- Veri Dosyası G/Ç bölmesini genişletin.
- Göre sırala MB/sn Okuma or MB/sn Yazılı En aktif dosyaları belirlemek için.
- Sürekli olarak yüksek aktiviteye veya uzun yanıt sürelerine sahip dosyaları not edin.
- G/Ç yükünü hangi sorguların artırdığını belirlemek için bu bilgileri Son Pahalı Sorgular bölmesiyle çapraz referanslayın.
3.5 Son Pahalı Sorgular Bölmesi
Son Zamanlarda Yüksek Maliyetli Sorgular bölmesi, uygulama performans sorunlarını gidermede genellikle en değerli bölmedir. Önemli miktarda sunucu kaynağı tüketen sorguları göstererek optimizasyon fırsatlarını belirlemenize yardımcı olur.
3.5.1 Sorgu Metriklerini Anlama
Etkinlik İzleyicisi her pahalı sorgu için çeşitli ölçümler görüntüler:
- İnfazlar/dakika: Son dakikada sorgu kaç kez çalıştırıldı.
- CPU (ms/sn): Bu sorgunun saniyede tükettiği CPU süresi.
- Fiziksel Okuma/sn: Bu sorgu için saniyedeki fiziksel disk okuma sayısı.
- Mantıksal Yazma/sn: Saniye başına mantıksal yazma sayısı (önbelleğe).
- Mantıksal Okumalar/sn: Saniye başına mantıksal okuma sayısı (tampon önbelleğinden).
- Ortalama Süre (ms): Bu sorgu için ortalama yürütme süresi.
- Plan Sayısı: Bu sorgu için önbellekteki yürütme planlarının sayısı.
Bu ölçümler, yalnızca hangi sorguların pahalı olduğunu anlamanıza yardımcı olmakla kalmaz, aynı zamanda neden pahalılar ve ne sıklıkla çalıştırıldıkları.
3.5.2 Sıralama Seçenekleri
Farklı sorun türlerini bulmak için Son Pahalı Sorgular bölmesini farklı ölçütlere göre sıralayabilirsiniz:
- Herhangi bir sütun başlığına tıklayarak o metriğe göre sıralama yapabilirsiniz.
- Yaygın sıralama stratejileri şunları içerir:
- CPU'ya göre sırala: En fazla işlemci zamanı tüketen sorguları bulun.
- İnfaz/dakika'ya göre sırala: Aşırı sık çalıştırılan sorguları belirleyin.
- Fiziksel Okumalara Göre Sırala: En fazla disk G/Ç işlemine neden olan sorguları bulun.
- Ortalama Süreye Göre Sırala: Uzun süredir devam eden sorguları bulun.
Bir performans sorununu giderirken, farklı bakış açıları elde etmek için birden fazla sütuna göre sıralamayı deneyin. Orta düzeyde CPU kullanımı olan ancak dakika başına yürütme sayısı son derece yüksek olan bir sorgu, asıl sorununuz olabilir.
3.5.3 Sorgu Metnini Görüntüleme
Pahalı bir sorgunun ardındaki gerçek SQL ifadesini görmek için:
- Son Pahalı Sorgular bölmesindeki sorgu satırına sağ tıklayın.
- Seç Sorgu Metnini Düzenle.
- Tam SQL ifadesini görüntüleyen yeni bir sorgu penceresi açılır.
Bu, sorgu mantığını incelemenize ve olası optimizasyon fırsatlarını belirlemenize olanak tanır. Ardından, değiştirilmiş sürümleri test etmek için sorgu metnini kopyalayabilirsiniz.
3.5.4 Yürütme Planlarının Analizi
Uygulama planları size nasıl yapılacağını gösterir SQL Server eksik dizinler veya uygunsuz birleştirme türleri gibi verimsizlikleri ortaya çıkaran bir sorguyu çalıştırır:
- Son Pahalı Sorgular bölmesindeki sorgu satırına sağ tıklayın.
- Seç Uygulama Planını Göster.
- SQL Server Management Studio, sorgunun nasıl yürütüldüğünün grafiksel bir gösterimini görüntüler.
Sorgu maliyetinin büyük yüzdelerini tüketen işlemleri, eksik istatistikler veya indekslerle ilgili uyarıları ve beklenmeyen tablo tarama işlemlerini arayın. Bunlar genellikle optimizasyon çalışmalarının nereye odaklanması gerektiğini gösterir.
3.5.5 Sorunlu Sorguları Belirleme
Son Pahalı Sorgular bölmesinde şu kalıplara dikkat edin:
- Aşırı İnfazlar: Dakikada binlerce kez yürütülen bir sorgu, uygulama kodunun bir döngü içerisinde veritabanını çağırdığı bir N+1 sorgu sorununa işaret edebilir.
- Yüksek Fiziksel Okumalar: Yüksek fiziksel okuma hızına sahip sorgular sıklıkla diske ulaşıyor ve bu da eksik dizinlere veya kötü yazılmış sorgulara işaret ediyor.
- Düşük Süreli Yüksek CPU: Toplu halde çok fazla CPU tüketen çok sayıda hızlı sorgu, birkaç yavaş sorgu kadar sunucu performansını etkileyebilir.
- Çoklu Plan Sayıları: Çok sayıda yürütme planına sahip sorgular, parametre koklama sorunları veya plan önbelleğinin şişmesine neden olan parametresiz sorgular yaşayabilir.
4. Performans Sorunlarını Gidermek İçin Etkinlik İzleyicisini Kullanma
Activity Monitor, performans sorunlarını teşhis etmek ve çözmek için sistematik bir şekilde kullanıldığında gerçekten öne çıkıyor. Bu bölüm, yaygın sorun giderme senaryolarını ve bunlara nasıl yaklaşılacağını ele alıyor.
4.1 Aşırı Sorgu Yürütmelerini Tanılama
En sık karşılaşılan performans sorunlarından biri, genellikle uygulama tasarım sorunları nedeniyle sorguların gerekenden çok daha sık çalıştırılmasıdır.
4.1.1 Tekrarlanan Sorguları Belirleme
Çok sık yürütülen sorguları tespit etmek için:
- Etkinlik İzleyicisini açın ve genişletin Son Pahalı Sorgular bölmesi.
- Göre sırala İnfazlar/dk (dakika başına infaz).
- En üstte mantıksız derecede yüksek görünen yürütme sayılarına sahip sorguları arayın.
- Şüpheli sorguya sağ tıklayın ve seçin Sorgu Metnini Düzenle SQL ifadesini incelemek için.
Örneğin, basit bir SELECT sorgusunun dakikada 37,000 kez çalıştığını görürseniz, uygulamanın bu sorguyu bu kadar sık çağırmaya gerçekten ihtiyacı olup olmadığını sorgulayın. Dakikada birkaç bin kereden fazla çalışan çoğu sorgu araştırma gerektirir.
4.1.2 Kök Neden Analizi
Aşırı sorgu yürütmeleri genellikle şu sorunlardan kaynaklanır:
- N+1 Sorgu Problemi: Uygulama kodu, bir öğe listesi alır ve ardından ilgili verileri almak için her öğe için ayrı bir sorgu yürütür. Bu, N ek sorgu oluşturur; burada N, öğe sayısını ifade eder.
- Eksik Önbellekleme: Uygulama, nadiren değişen verileri uygulama belleğinde önbelleğe almak yerine, veritabanından sorgulayarak bu verilere erişir.
- Anket Döngüleri: Kod, değişiklik bildirimlerini veya mesaj kuyruklarını kullanmak yerine, durum değişikliklerini kontrol etmek için veritabanını tekrar tekrar sorgular.
- ORM Verimsizliği: Geliştiriciler kodlarının SQL'e nasıl çevrileceğini anlamadıklarında, Entity Framework ve benzeri araçlar bazen verimsiz sorgu kalıpları üretebilir.
Kök nedeni belirlemek için sorguyu uygulama koduna kadar izleyin. Uygulama hem de Oturum aç Sorgu yürütüldüğünde İşlemler bölmesindeki sütunlar. Ayrıca, işleme sağ tıklayıp İzleme Süreci SQL Server Profiler çağrı desenini görmek için.
4.1.3 Çözümler ve En İyi Uygulamalar
Aşırı sorgu yürütmelerini belirledikten sonra şu çözümleri göz önünde bulundurun:
- Toplu İşleme: Ayrı sorguları bir döngüde yürütmek yerine, birleştirmeleri veya IN ifadelerini kullanarak tek bir sorguda birden fazla öğeyi alacak şekilde uygulama kodunu değiştirin.
- Sonuç Önbelleğe Alma: Sık erişilen, nadiren değişen verileri uygun son kullanma süreleriyle uygulama belleğinde önbelleğe alın.
- İstekli Yükleme: İlgili verileri daha az ve daha verimli sorgularla getiren istekli yükleme stratejilerini kullanacak şekilde ORM'leri yapılandırın.
- Sorgu Parametrelendirmesi: Sorguların değerleri birleştirmek yerine parametreleri kullanmasını sağlayın; bu, plan önbelleğinin yeniden kullanımını iyileştirir ve derleme yükünü azaltır.
4.2 Engelleme Sorunlarını Araştırma
Engelleme, bir oturumun diğer oturumların devam etmesini engelleyen kilitler tutmasıyla oluşur. Bu durum, yavaş uygulama yanıt süreleri ve hayal kırıklığına uğramış kullanıcılar olarak kendini gösterir.
4.2.1 Blokaj Zincirlerini Belirleme
Engellemeyi tespit etmek ve analiz etmek için:
- Etkinlik İzleyicisini açın ve genişletin süreçler bölmesi.
- Değerleri olan oturumları arayın Tarafından engellendi sütun—bunlar diğer oturumlar tarafından tutulan kilitleri bekliyor.
- '1' ile başlayan oturumları bulun Baş Engelleyici Sütun—bunlar zincirlerin bloke edilmesinin temel nedenidir.
- Not Oturum kimliği baş blokerinin.
- Baş engelleyici oturumuna sağ tıklayın ve seçin Detaylar hangi komutu çalıştırdığını görmek için.
Engelleme zincirini anlamak çok önemlidir. Araştırmanız gereken oturum, alt akıştaki engellenen oturumlar değil, ana engelleyicidir.
4.2.2 Kilit Türlerini Anlama
MKS Bekleme Türü İşlemler bölmesindeki sütun, engellenen oturumların hangi tür kilit beklediğini gösterir:
- LCK_M_X: Genellikle GÜNCELLEME, SİLME veya EKLEME işlemlerinin neden olduğu özel kilit beklemesi.
- LCK_M_S: Paylaşımlı kilit beklemesi, genellikle özel kilitlerin serbest bırakılmasını bekleyen SELECT ifadeleridir.
- LCK_M_U: Güncelleme kilidi beklemesi, güncellemeler sırasında kullanılan bir ara kilit türüdür.
- LCK_M_IX: Amaç özel kilitleme beklemesi, sayfa veya satır düzeyindeki kilitleme çekişmesini gösterir.
MKS Bekleme Kaynağı Sütun hangi veritabanı nesnesinin kilitlendiğini gösterir ve hangi tablonun veya dizinin tartışmaya dahil olduğunu anlamanıza yardımcı olur.
4.2.3 Engelleme Sorunlarını Çözme
Engelleyen oturumu ve ne yaptığını belirledikten sonra birkaç seçeneğiniz var:
- Tamamlanmayı Bekleyin: Eğer kafa engelleyici yakında tamamlanacak meşru bir sorgu çalıştırıyorsa, sorgunun doğal olarak bitmesine izin vermek en iyisi olabilir.
- Oturumu Sonlandır: Eğer kafa engelleyici takılı kaldıysa veya iptal edilmesi gereken bir sorgu çalışıyorsa:
- İşlemler bölmesinde oturuma sağ tıklayın.
- Seç Proses öldür.
- İletişim kutusundaki eylemi onaylayın.
- Sorguları Optimize Edin: Eğer engelleme aynı sorgularla tekrarlanıyorsa, kilitleme sürelerini azaltmak için bunları optimize edin.
- Yalıtım Düzeylerini Ayarlayın: Okuma ağırlıklı iş yüklerinde engellemeyi azaltmak için READ COMMITTED SNAPSHOT ISOLATION'ı kullanmayı düşünün.
- Dizin Ayarlama: Sorguların hızını artırmak ve kilitlerin ne kadar süre tutulacağını azaltmak için dizinler ekleyin.
4.3 Yüksek CPU Kullanımının Analizi
Genel Bakış bölmesi işlemci süresini sürekli olarak %100 veya yakınında gösteriyorsa, hangi sorguların sorumlu olduğunu belirlemeniz ve bunların optimize edilip edilemeyeceğini belirlemeniz gerekir.
4.3.1 CPU Yoğun Sorguları Belirleme
Aşırı CPU tüketen sorguları bulmak için:
- Açın Son Pahalı Sorgular bölmesi.
- Göre sırala CPU (ms/sn) En fazla işlemci süresi kullanan sorguları göstermek için.
- Listedeki en çok sorulan sorguları inceleyin.
- Yüksek CPU sorgularına sağ tıklayın ve seçin Sorgu Metnini Düzenle SQL ifadesini görüntülemek için.
- Seç Uygulama Planını Göster Sorgunun nasıl yürütüldüğünü anlamak için.
Sadece bireysel sorgu CPU kullanımına değil, aynı zamanda İnfazlar/dk Sütun. Yürütme başına orta düzeyde CPU kullanan ancak dakikada binlerce kez çalışan bir sorgu, en büyük CPU tüketiciniz olabilir.
4.3.2 Sorgu Optimizasyon Teknikleri
CPU tüketimini azaltmaya yönelik yaygın yaklaşımlar şunlardır:
- Eksik Endeksleri Ekle: Dizin aramaları, tablo taramalarına göre çok daha az CPU kullanır. Yürütme planlarında eksik dizin önerilerini arayın.
- Verimsiz Sorguları Yeniden Yazın: İmleçleri küme tabanlı işlemlerle değiştirin, WHERE ifadelerindeki gereksiz işlevleri ortadan kaldırın ve gereksiz birleştirmeleri kaldırın.
- İstatistikleri Güncelle: Güncel olmayan istatistikler neden olur SQL Server verimsiz yürütme planlarını seçmek için. Etkilenen tablolarda UPDATE STATISTICS çalıştırın.
- Veri Hacmini Azaltın: Verileri daha önce filtrelemek için WHERE ifadeleri ekleyin, sayfalama için TOP veya OFFSET/FETCH kullanın ve SELECT * kullanmaktan kaçının.
- Parametre Koklamayı Düzeltin: Parametre koklamanın sorunlara yol açması durumunda SEÇENEK (YENİDEN DERLEME), sorgu ipuçları veya plan kılavuzlarını kullanın.
4.4 Bellek Sorunlarını Araştırma
Bellek baskısı, sorguların diske taşmasına ve performansın önemli ölçüde düşmesine neden olabilir. Etkinlik İzleyicisi, bellek yoğun işlemleri belirlemenize yardımcı olur.
4.4.1 Bellek Ölçümlerini Anlama
MKS Bellek Kullanımı İşlemler bölmesindeki sütun, her oturuma ayrılan belleği kilobayt cinsinden gösterir. Tek bir oturumun yüksek bellek kullanımı genellikle şunları gösterir:
- Başlangıçta verilen belleğe sığmayan büyük sıralama veya karma işlemleri
- Çok büyük sonuç kümeleri getiren sorgular
- Aşırı paralellik, yürütme planı operatörlerinin birçok kopyasını oluşturuyor
- CLR saklı yordamlarında veya işlevlerinde bellek sızıntıları
Kaynak Beklemeleri bölmesi, sorgular yeterli bellek izni alamadığında ve belleğin kullanılabilir hale gelmesini beklemek zorunda kaldığında Bellek beklemelerini gösterebilir.
4.4.2 Bellek Yoğun Sorguları Belirleme
Bellek baskısına neden olan sorguları bulmak için:
- içinde süreçler bölme, sıralama Bellek Kullanımı En çok bellek tüketen oturumları görmek için.
- Yüksek bellek kullanımı olan oturumlara sağ tıklayın ve seçin Detaylar Sorularını görüntülemek için.
- içinde Son Pahalı Sorgular bölmede, yüksek sorguları arayın Mantıksal Okumalar or Mantıksal Yazılar, çünkü bunlar genellikle bellek kullanımıyla ilişkilidir.
- Bellek izinlerini kullanan Sıralama ve Karma Eşleştirme operatörleri için yürütme planlarını inceleyin.
Yürütme planlarında “Bellek İzni” uyarıları veya taşma uyarıları gösteren sorgular, bellek basıncı sorunlarına işaret eder.
4.5 Uygulama Performans Sorunlarını Algılama
Kullanıcılar yavaş uygulama yanıt süreleri bildirdiğinde, Etkinlik İzleyicisi veritabanının darboğaz olup olmadığını belirlemenize yardımcı olur.
4.5.1 Etkinlik İzleyicisini Uygulama Sorunlarıyla İlişkilendirme
Uygulama yavaşlığını araştırmak için:
- Kullanıcıların sorunları bildirdiği tam zamanı ve etkilenen uygulamaları not edin.
- Etkinlik İzleyicisini açın ve kontrol edin Genel Bakış o sıradaki kaynak artışları için bölme.
- içinde süreçler bölme, filtrele Uygulama yalnızca etkilenen uygulamadan gelen bağlantıları göstermek için.
- Yüksek arayın Bekleme zamanı Veritabanı gecikmelerini gösteren değerler.
- kontrol Son Pahalı Sorgular Önemli miktarda kaynak tüketen bu uygulamadan gelen sorgular için bölme.
Veritabanında olağandışı bir etkinlik görülmüyorsa ve kullanıcılar yavaşlık yaşıyorsa, sorun büyük olasılıkla uygulama kodunda, ağ gecikmesinde veya istemci tarafı performansındadır.
4.5.2 Verimsiz Uygulama Modellerinin Belirlenmesi
Activity Monitor, uygulama tasarımında çeşitli anti-desenleri ortaya çıkarır:
- Sohbet Uygulamaları: Daha az sayıda ve daha verimli sorgular yerine birçok küçük sorgu. Son Pahalı Sorgular'da yüksek bağlantı sayıları ve çok sayıda basit sorgu ile belirlenir.
- N+1 Sorguları: İlgili veriler için bir sorguyu N ek sorgu takip eder. Dakika başına yürütme sayısı son derece yüksek olan basit bir sorgu olarak gösterilir.
- Büyük Sonuç Kümeleri: Uygulamalar ihtiyaç duyulandan çok daha fazla veri alıyor. Yüksek veriye dikkat edin. Mantıksal Okumalar basit SELECT * sorgularıyla birleştirilmiştir.
- Eksik Zaman Aşımları: Komut zaman aşımı ayarlamayan uygulamalar, bağlantıları süresiz olarak açık bırakabilir ve İşlemler bölmesinde uzun süre çalışan oturumlar olarak görünebilir.
5. Alternatif Yöntemler: T-SQL ile Etkinlik İzleme Verilerini Alma
Activity Monitor kullanışlı bir grafiksel arayüz sağlarken, bazen eşdeğer bilgileri programatik olarak almanız veya özel izleme çözümleri oluşturmanız gerekebilir.
5.1 Dinamik Yönetim Görünümlerini (DMV'ler) Kullanma
SQL Server Etkinlik İzleyicisi'nin perde arkasında sorguladığı dinamik yönetim görünümleri aracılığıyla etkinlik bilgilerini ortaya çıkarır.
5.1.1 Faaliyet İzleme için Temel DMV'ler
Etkinlik İzleyici işlevselliğini kopyalamak için en önemli DMV'ler şunlardır:
- sys.dm_exec_istekleri: CPU, G/Ç ve bekleme bilgileriyle şu anda yürütülen istekleri gösterir.
- sys.dm_exec_oturumları: Oturum düzeyinde bilgiler içerir; örneğin giriş adı, sunucu adı ve program adı.
- sys.dm_os_wait_stats: Tüm örnek için kümülatif bekleme istatistikleri sağlar.
- sys.dm_exec_query_stats: Önbelleğe alınan sorgular için toplu performans istatistiklerini içerir.
- sys.dm_io_sanal_dosya_istatistikleri: Veri ve günlük dosyaları için G/Ç istatistiklerini döndürür.
- sys.dm_exec_sql_text: Verilen sql_handle veya plan_handle için SQL metnini alır.
- sys.dm_exec_query_planı: Önbelleğe alınmış bir sorgu için yürütme planını döndürür.
5.1.2 İşlem Bilgileri için Örnek Sorgular
İşlemler bölmesi işlevselliğini çoğaltmak için şunları sorgulayabilirsiniz:
SELECT
s.session_id AS [Session ID],
CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
s.login_name AS [Login],
ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
CASE
WHEN r2.session_id IS NOT NULL
AND (r.blocking_session_id = 0 OR r.session_id IS NULL)
THEN '1'
ELSE ''
END AS [Head Blocker],
ISNULL(DB_NAME(r.database_id), '') AS [Database],
ISNULL(t.task_state, '') AS [Task State],
ISNULL(r.command, '') AS [Command],
r.cpu_time AS [CPU Time],
r.total_elapsed_time AS [Elapsed Time],
r.wait_time AS [Wait Time],
r.wait_type AS [Wait Type],
s.memory_usage * 8 AS [Memory Use (KB)],
s.host_name AS [Host Name],
s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;
5.1.3 Bekleme İstatistikleri için Örnek Sorgular
Kaynak Beklemeleri bölmesine benzer bekleme istatistiklerini görmek için:
SELECT TOP 10
wait_type AS [Wait Type],
wait_time_ms / 1000.0 AS [Wait Time (sec)],
waiting_tasks_count AS [Waiting Tasks],
wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
AND wait_type NOT LIKE '%IDLE%'
AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;
5.2 sp_WhoIsActive'i kullanma
sp_WhoIsActive, tek bir sonuç kümesinde Etkinlik İzleyicisi'nden daha ayrıntılı bilgi sağlayan güçlü bir topluluk tarafından oluşturulmuş saklı yordamdır.
5.2.1 sp_WhoIsActive'i yükleme
sp_WhoIsActive'i yüklemek için:
- En son sürümü şuradan indirin:
http://whoisactive.com. - İndirilen dosya, prosedür tanımını içeren bir SQL betiğidir.
- Komut dosyasını açın SQL Server Yönetim Stüdyosu.
- Bağlanın SQL Server örneği.
- Ana veritabanında prosedürü oluşturmak için betiği çalıştırın.
- Uygun kullanıcılara yürütme izinleri verin.
Çünkü sp_WhoIsActive master'a yüklendiği için herhangi bir veritabanı bağlamından erişilebilir.
5.2.2 Temel Kullanım Örnekleri
sp_WhoIsActive'i kullanmanın en basit yolu şudur:
EXEC sp_WhoIsActive;
Bu, sorguları, bekleme türleri, engelleme bilgileri ve kaynak kullanımıyla birlikte tüm etkin oturumları gösteren bir sonuç kümesi döndürür.
Bu süre zarfındaki aktiviteyi gösteren 10 saniyelik bir örnek için:
EXEC sp_WhoIsActive @delta_interval = 10;
Bu, CPU ve okumalar gibi metrikler için deltaları hesaplar ve bu 10 saniye içerisinde neler olduğunu gösterir.
5.2.3 Gelişmiş Parametreler
sp_WhoIsActive özelleştirme için çok sayıda parametreyi destekler:
- @filtre: Sonuçları belirli oturumlara, veritabanlarına veya oturum açmalara göre filtreleyin.
- @filter_type: Filtrenin nelere uygulanacağını belirtin (oturum, veritabanı, oturum açma, vb.).
- @get_plans: Sonuçlara yürütme planlarını ekleyin (1 olarak ayarlayın).
- @get_locks: Ayrıntılı kilit bilgilerini göster (1 olarak ayarla).
- @get_transaction_info: İşlem ayrıntılarını görüntüle (1 olarak ayarla).
- @sıralama_sıralaması: Sonuçları farklı metriklere (CPU, okumalar, süre, vb.) göre sıralayın.
- @destination_table: Sonuçları geçmişe dönük izleme için bir tabloya ekleyin.
CPU'ya göre sıralanmış planları gösteren örnek:
EXEC sp_WhoIsActive
@get_plans = 1,
@sort_order = '[CPU] DESC';
5.3 Sistem Saklı Prosedürlerini Kullanma
SQL Server aktiviteyi izlemek için geleneksel saklı prosedürleri içerir, ancak DMV'lerden veya Aktivite Monitöründen daha az bilgi sağlarlar.
5.3.1 sp_who ve sp_who2
sp_who prosedürü temel oturum bilgilerini gösterir:
EXEC sp_who;
sp_who2 prosedürü biraz daha fazla ayrıntı sağlar:
EXEC sp_who2;
Her iki prosedür de oturum kimliklerini, giriş adlarını, CPU süresini ve engelleme bilgilerini gösterir. Ancak, DMV'ler veya Etkinlik İzleyicisi aracılığıyla elde edilebilen zengin ayrıntılardan yoksundurlar. En çok, minimum bilgiye hızlıca ihtiyaç duyduğunuz hızlı kontroller için kullanışlıdırlar.
5.3.2 Diğer Faydalı Sistem Prosedürleri
İzleme için ek sistem prosedürleri şunları içerir:
- sp_kilidi: Kilit bilgilerini gösterir (kullanım dışıdır; bunun yerine sys.dm_tran_locks kullanın).
- sp_monitor: Hakkında istatistikleri görüntüler SQL Server faaliyet.
- sp_yardim: Nesne tanımlarını ve meta verilerini gösterir.
- DBCC SQLPERF: İşlem günlüğü alanı kullanımını ve bekleme istatistiklerini görüntüler.
5.4 Özel İzleme Betikleri Oluşturma
Activity Monitor'ün sağladığının ötesinde özel izleme gerektiren ortamlar için DMV'leri kullanarak özel çözümler oluşturabilirsiniz.
5.4.1 Etkinlik İzleyicisi Eşdeğer Komut Dosyasını Tamamlayın
İşte Etkinlik İzleyicisi işlevlerinin çoğunu taklit eden kapsamlı bir komut dosyası:
-- Processes Information
SELECT
s.session_id AS [Session ID],
CONVERT(CHAR(1), s.is_user_process) AS [User Process],
s.login_name AS [Login],
ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
CASE
WHEN r2.session_id IS NOT NULL
AND (r.blocking_session_id = 0 OR r.session_id IS NULL)
THEN '1'
ELSE ''
END AS [Head Blocker],
ISNULL(DB_NAME(r.database_id), N'') AS [Database],
ISNULL(t.task_state, N'') AS [Task State],
ISNULL(r.command, N'') AS [Command],
SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
((CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset) / 2) + 1) AS [Statement],
st.text AS [Command Text],
r.cpu_time AS [CPU Time (ms)],
r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
r.wait_time AS [Wait Time (ms)],
r.wait_type AS [Wait Type],
r.wait_resource AS [Wait Resource],
s.memory_usage * 8 AS [Memory Use (KB)],
s.host_name AS [Host Name],
c.client_net_address AS [Net Address],
s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;
-- Recent Expensive Queries
SELECT TOP 20
qs.execution_count /
DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
qs.total_worker_time / 1000 AS [CPU Time (ms)],
qs.total_physical_reads AS [Physical Reads],
qs.total_logical_writes AS [Logical Writes],
qs.total_logical_reads AS [Logical Reads],
qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;
5.4.2 SQL Agent İşleriyle İzlemeyi Otomatikleştirme
Özel izleme betiklerini kullanarak zamanlayabilirsiniz. SQL Server Ajan:
- İzleme sonuçlarını depolamak için bir tablo oluşturun.
- Sonuçları bu tabloya eklemek için izleme betiğinizi değiştirin.
- In SQL Server Yönetim Stüdyosu, genişlet SQL Server Danışman Nesne Gezgini'nde.
- Sağ tıklatın İş İlanlar seçin Yeni iş.
- İzleme betiğinizin düzenli aralıklarla çalışmasını sağlayacak şekilde işi yapılandırın.
- Toplanan verilere göre uyarılar veya raporlar oluşturun.
Bu yaklaşım, Activity Monitor'ün sağlamadığı geçmişe yönelik izleme ve trend analizini mümkün kılar.
6. Aktivite İzleme Sınırlamaları ve Hususları
Activity Monitor değerli olmakla birlikte, sınırlamalarını anlamak onu uygun şekilde kullanmanıza ve gerektiğinde diğer araçlarla desteklemenize yardımcı olur.
6.1 Etkinlik Monitörünün Genel Yükünü Anlama
Activity Monitor ücretsiz değildir; bilgi toplamak ve görüntülemek için sunucu kaynaklarını tüketir. Bu ek yükü anlamak, onu sorumlu bir şekilde kullanmanıza yardımcı olur.
6.1.1 Sunucu Kaynakları Üzerindeki Etki
Etkinlik İzleyicisi, her yenilemede sistem DMV'lerine karşı sorgular çalıştırır. Bu sorgular CPU tüketir, mantıksal okumalar üretir ve sistem tablolarını kısa süreliğine kilitleyebilir. Yoğun sunucularda bu ek yük performansı etkileyebilir.
İşlemler ve Son Pahalı Sorgular bölmeleri, potansiyel olarak büyük DMV'leri ve önbellek tablolarını taramaları gerektiğinden özellikle pahalıdır. Binlerce önbelleğe alınmış sorgu planına sahip sunucularda, Son Pahalı Sorgular'ın yenilenmesi birkaç saniye sürebilir.
Microsoft'un dokümanlarında, 10 saniyenin altındaki yenileme aralıklarının, özellikle halihazırda yüklü sistemlerde sunucu performansını önemli ölçüde etkileyebileceği uyarısı yer alıyor.
6.1.2 Yenileme Aralığı En İyi Uygulamaları
Durumunuza uygun yenileme aralıklarını seçin:
- 1-5 saniye: Yalnızca düşük yüklü sunuculardaki kritik sorunların anında giderilmesi içindir. Etkinlik İzleyicisi'ni bu aralıklarda çalışır durumda bırakmayın.
- 10 saniye (varsayılan): Çoğu sorun giderme senaryosu ve genel izleme için uygundur.
- 30-60 saniye: Ağır yük altında çalışan veya uzun süreli izleme yapan üretim sunucuları için daha iyi bir seçimdir.
- Yalnızca manuel yenileme: Sürekli sorgulama yapmadan ara sıra mevcut durumu kontrol etmek istediğiniz durumlar için.
Araştırmanız bittiğinde Etkinlik İzleyicisi'ni mutlaka kapatın. Sürekli çalışır durumda bırakmayın, özellikle de farklı kullanıcılardan gelen birden fazla örneği.
6.2 Bekleme Türü Gruplama Sorunları
Aktivite İzleyicisinin bekleme sürelerini kategorize etme yaklaşımı, görünümü basitleştirirken önemli teşhis bilgilerini gizleyebilir.
6.2.1 Etkinlik İzleme Grupları Nasıl Bekler?
SQL Server Etkinlik İzleyicisi, her biri belirli bir kaynağı veya durumu gösteren yüzlerce farklı bekleme türünü izler. Etkinlik İzleyicisi bunları "Arabellek Mandalı", "Kilit" ve "Bellek" gibi geniş kategorilere ayırır.
Örneğin, "Arabellek Mandalı" kategorisi PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX ve diğer bazı özel bekleme türlerini içerir. Hepsi sayfa erişimiyle ilgili olsa da, farklı nedenleri ve çözümleri vardır.
Microsoft, hangi bekleme türlerinin hangi kategorilere karşılık geldiğini tam olarak belgelemiyor; bu da gerçekte ne gördüğünüzü anlamanızı zorlaştırıyor.
6.2.2 Eksik Bekleme Türleri
Etkinlik İzleyicisi tüm bekleme türlerini göstermez. Özellikle, paralel sorgu yürütmeyi gösteren CXPACKET beklemelerini sıklıkla atlar. CXPACKET beklemeleri yaygındır ve genellikle sorun teşkil etmez, ancak var olduklarını bilmek iş yükü özelliklerini anlamanıza yardımcı olur.
Activity Monitor en önemli bekleme alanı olarak “Buffer Latch”i gösterirken diğer araçlar CXPACKET'in baskın olduğunu gösteriyorsa, bu tutarsızlık Activity Monitor'ün filtreleme ve gruplama mantığından kaynaklanmaktadır.
6.2.3 Belirli Bekleme Türlerinin Önemi
Sorun gidermede belirli bekleme türünü bilmek önemlidir:
- SAYFA LATCH_EX: Genellikle tahsis sayfalarında tempdb çakışması olduğunu gösterir. Çözüm, daha fazla tempdb veri dosyası eklemektir.
- SAYFALATCH_SH: Kullanıcı tablolarında sıcak sayfaları gösterebilir. Çözüm, bölümlendirme veya dizin yeniden düzenlemeyi içerir.
- SAYFA AÇMA: Güncellemeler sırasında yaygındır. Bir sorundan ziyade normal çalışmayı gösterebilir.
Etkinlik İzleyicisi tüm bunları "Arabellek Mandalı" altında gruplandırarak tanılamayı zorlaştırır. sp_WhoIsActive ve DMV sorguları gibi araçlar belirli bekleme türlerini gösterir.
6.3 Veri Doğruluğu ve Zamanındalığı
Activity Monitor neredeyse gerçek zamanlı bir görünüm sunar, ancak asıl önemli olan "yakın"dır. Veri toplama yöntemini anlamak, sonuçları doğru yorumlamanıza yardımcı olur.
6.3.1 Anlık Görüntü ve Sürekli İzleme
Etkinlik İzleyicisi, her yenileme aralığında alınan anlık anlık görüntüleri gösterir. Anlık görüntüler arasında gerçekleşen olaylar yakalanmaz. Bir sorgu 2 saniye boyunca çalışıyorsa ve her 10 saniyede bir yenileniyorsanız, zamanlamaya bağlı olarak bir kez görebilir veya hiç göremeyebilirsiniz.
Bu, Activity Monitor'ün kalıcı sorunları (uzun dakikalar süren engellemeler, sürekli yüksek CPU kullanımı) bulmada üstün olduğu, ancak geçici sorunları (kısa süreli kilitlenmeler, ara sıra oluşan sorgu artışları) gözden kaçırabileceği anlamına gelir.
6.3.2 Toplama ve Örnekleme
Son Pahalı Sorgular bölmesi, sorgu planları önbelleğe girdiğinden beri toplanan verileri gösterir. Farklı parametre değerlerine sahip iki özdeş sorgu, aynı planı paylaşıyorlarsa tek bir satır olarak görünür. Bu toplama, belirli parametre kombinasyonlarındaki sorunları (parametre koklama sorunları) maskeleyebilir.
Kaynak Beklemeleri bölmesi, anlık görüntüleri karşılaştırarak oranları hesaplar. Anlık görüntüler arasında bekleme istatistikleri sıfırlanırsa (nadiren de olsa mümkün), hesaplanan oranlar yanlış olabilir.
6.4 Etkinlik Monitörü Ne Zaman Kullanılmamalıdır?
Etkinlik İzleyicisi her izleme senaryosu için uygun değildir. Alternatif araçların daha iyi seçenekler olduğunu fark edin.
6.4.1 Tarihsel Analiz Gereksinimleri
Etkinlik İzleyicisi yalnızca mevcut veya yakın zamandaki etkinlikleri gösterir. Geçmiş verileri saklamaz. Günler veya haftalar boyunca eğilimleri analiz etmeniz, mevcut performansı temel değerlerle karşılaştırmanız veya performans kalıpları hakkında raporlar oluşturmanız gerekiyorsa, Etkinlik İzleyicisi yeterli değildir.
Tarihsel analiz için şunu kullanın: SQL ServerDahili Performans Kontrol Paneli, dosya hedefli Genişletilmiş Olaylar veya üçüncü taraf izleme çözümleri.
6.4.2 Ayrıntılı Bekleme İstatistikleri İhtiyaçları
Gelişmiş ayarlama için kesin bekleme türü bilgilerine ihtiyaç duyduğunuzda, Activity Monitor'ün gruplandırma ve filtreleme özelliği yetersiz kalır. DMV sorgularını doğrudan veya sp_WhoIsActive sorgusunu kullanarak kullanabilirsiniz.
Kapsamlı bekleme istatistikleri analizi için sys.dm_os_wait_stats'ı doğrudan sorgulayın ve iyi huylu beklemeleri manuel olarak filtreleyin.
6.4.3 Üretim Sunucusu Hususları
Yoğun yük altındaki üretim sunucularında, Activity Monitor'ün ek yükü sorunlu olabilir. Birden fazla veritabanı yöneticisinin aynı sunucuda aynı anda Activity Monitor'ü çalıştırmaması gerekir.
Üretim izlemesi için, izleme veritabanında depolanan zamanlanmış DMV anlık görüntüleri gibi hafif alternatifleri değerlendirin veya Always On yapılandırmalarında ikincil kopyaları izlemek için Salt Okunur yönlendirmeyi kullanın.
7. Etkinlik İzleyicisini Kullanmak İçin En İyi Uygulamalar
En iyi uygulamaları takip etmek, sunucularınız üzerindeki olumsuz etkileri en aza indirirken Etkinlik İzleyicisi'nden maksimum değer elde etmenizi sağlar.
7.1 Etkinlik Monitörü Ne Zaman Kullanılır?
Activity Monitor, belirli senaryolarda öne çıkar. Güçlü yönleri ihtiyaçlarınızla örtüştüğünde kullanın.
7.1.1 Gerçek Zamanlı Performans Sorunları
Etkinlik İzleyicisi, kullanıcılar şu anda sorun yaşıyorsa ve sorunu hemen teşhis etmeniz gerekiyorsa idealdir. Gerçek zamanlı görünüm, şu anda neler olduğunu görmenize yardımcı olur.
"Uygulama yavaş" uyarısı aldığınızda, ilk adımlarınızdan biri Etkinlik İzleyicisi'ni açmak olmalıdır. Veritabanının meşgul, bloke veya boşta olup olmadığını hızlıca belirleyebilirsiniz.
7.1.2 Uygulama Yavaşlaması Araştırması
Belirli bir uygulama yanıt vermediğinde, Etkinlik İzleyicisi sorunun veritabanı sorunlarından kaynaklanıp kaynaklanmadığını belirlemenize yardımcı olur. İşlemler bölmesini uygulama adına göre filtreleyerek yalnızca o uygulamanın veritabanı etkinliğini görebilirsiniz.
Kullanıcılar sorun bildirirken uygulama veritabanı etkinliği göstermiyorsa, sorun yığının başka bir yerindedir. Yoğun engelleme veya maliyetli sorgular görüyorsanız, suçluyu bulmuşsunuz demektir.
7.1.3 Hızlı Sağlık Kontrolleri
Aktivite İzleyicisi, rutin uygulamalar sırasında hızlı sağlık kontrolleri için mükemmel bir kontrol paneli sunar. Açın, Genel Bakış grafiklerine göz atın ve anormal bir şey olmadığından emin olun.
Bu yüzeysel kontrol saniyeler sürer ve sorunları kritik hale gelmeden önce ortaya çıkarabilir. Bunu günlük rutininizin bir parçası haline getirin.
7.2 Optimum Yapılandırma Ayarları
Activity Monitor'ü uygun şekilde yapılandırmak hem kullanışlılığını hem de kaynak ayak izini iyileştirir.
7.2.1 Önerilen Yenileme Aralıkları
Yenileme aralığınızı amacınıza uygun hale getirin:
- Aktif sorun giderme: 10 saniye, makul bir ek yük ile iyi bir yanıt süresi sağlar.
- Genişletilmiş izleme: 30-60 saniye, uzun gözlem sürelerinde sunucu etkisini azaltır.
- Kritik sorun teşhisi: Her saniyenin önemli olduğu durumlarda 5 saniye yüksek ayrıntı sağlar, ancak kısa süreli kullanın.
- Düzenli sağlık kontrolleri: Aktif olarak izlemediğinizde manuel yenileme (1 saat arayla).
İşiniz bittiğinde Etkinlik İzleyicisi'ni kapatmayı unutmayın. Uzun bir aralığa ayarlayıp unutmak sunucu kaynaklarının israfına yol açar.
7.2.2 Filtreleme Stratejileri
İlgili bilgilere odaklanmak ve bilişsel yükü azaltmak için filtreleri kullanın:
- İşlemleri Filtrele veritabanı yalnızca belirli veritabanlarına karşı yapılan aktiviteleri görmek için.
- Filtrele Oturum aç Belirli bir kullanıcının etkinliğini izlemek için.
- Filtrele Görev Durumu = Boşta kalan oturumları gizlemek için ÇALIŞIYOR.
- Filtrele Uygulama belirli programlardan gelen trafiği izole etmek için.
- Yalnızca NonBlanks'ı göster Tarafından engellendi sadece engelleyici durumları görmek için.
7.2.3 Sütun Seçimi ve Sıralama
Aktivite İzleme verilerini incelemek için sistematik bir yaklaşım geliştirin:
- Öncelikle Genel Bakış ile başlayın: Grafiklerde belirgin artışlar veya anormallikler olup olmadığını kontrol edin.
- İşlemleri engelleme açısından kontrol edin: Oturum Kimliğine göre sıralayın, ardından Engelleyenler değerlerini arayın.
- İnceleme Kaynağı Beklemeleri: Kaynak darboğazlarını belirlemek için Toplam Bekleme Süresine göre sıralayın.
- Pahalı Sorguları Analiz Edin: Farklı problem tiplerini bulmak için farklı ölçütlere (CPU, yürütmeler, okumalar) göre sıralayın.
- G/Ç Bölmesi ile doğrulayın: G/Ç yoğunluklu sorguların yüksek disk etkinliğiyle ilişkili olup olmadığını doğrulayın.
7.3 Diğer Araçlarla Entegrasyon
Activity Monitor, tek başına bir çözüm olarak değil, daha geniş bir araç setinin parçası olarak kullanıldığında daha iyi çalışır.
7.3.1 ile kullanma SQL Server Profiler
Etkinlik Monitörü ve SQL Server Profiler birbirini iyi tamamlar. Etkinlik İzleyicisi'nde sorunlu bir oturum tespit ettiğinizde, oturuma sağ tıklayın ve İzleme Süreci SQL Server Profiler.
Bu, Profiler'ı yalnızca o oturumun etkinliğini yakalamak üzere yapılandırılmış filtrelerle başlatır. Yürütülen ifadelerin tam sırasını, zamanlama bilgilerini ve hata mesajlarını görürsünüz; Etkinlik İzleyicisi'nin sağlamadığı ayrıntılar.
Hakkında daha fazla bilgi için SQL Server Profiler yetenekleri ve gelişmiş izleme teknikleri için bkz. kapsamlı SQL Server Profiler kılavuzu.
7.3.2 Genişletilmiş Etkinliklerle Tamamlama
Genişletilmiş Olaylar, Etkinlik İzleyicisi'nin kaçırdığı bilgileri yakalayan düşük maliyetli ve ayrıntılı izleme olanağı sunar. Kilitlenmeler, uzun süren sorgular veya aşırı yeniden derlemeler gibi belirli olayları izlemek için Genişletilmiş Olay oturumları oluşturun.
Anında inceleme için Etkinlik İzleyicisi'ni, sürekli izleme ve geçmiş analiz içinse Genişletilmiş Olaylar'ı kullanın. Her iki araç da farklı ihtiyaçlara hitap eder.
Hakkında daha fazla bilgi için SQL Server Genişletilmiş Olaylar yetenekleri ve gelişmiş izleme teknikleri için bkz. kapsamlı SQL Server Genişletilmiş Etkinlikler rehberi.
7.3.3 Üçüncü Taraf İzleme Çözümleri
SolarWinds Database Performance Analyzer, Redgate SQL Monitor ve Quest Spotlight gibi ticari araçlar, Activity Monitor'ün sahip olmadığı özellikler sunar: uyarılar, geçmişe dönük eğilim analizi, kapasite planlaması ve otomatik teşhis.
Bu araçlar, Activity Monitor'ün yerine geçebilecek değerli eklemelerdir; ancak onların yerini tutmaz. Activity Monitor, gelişmiş izleme araçları mevcut olduğunda bile hızlı kontroller ve incelemeler için kullanışlı olmaya devam eder.
Kaçınılması Gereken 7.4 Yaygın Hata
Activity Monitor'da yapılan yaygın hataları anlamak, onu daha etkili kullanmanıza yardımcı olur.
7.4.1 Etkinlik İzleyicisini Sürekli Çalışır Durumda Bırakma
En sık yapılan hata, Etkinlik İzleyicisini açıp süresiz olarak açık bırakmaktır. Bu, sunucu kaynaklarını boşa harcar ve aktif olarak izleme yapmadığınız için çok az fayda sağlar.
Etkin olarak kullanmadığınız zamanlarda Etkinlik İzleyicisi'ni kapatın. Sürekli izlemeye ihtiyacınız varsa, bunun yerine planlı veri toplama özelliğine sahip uygun bir izleme çözümü uygulayın.
7.4.2 Yalnızca Aktivite Monitörüne Aşırı Güvenmek
Etkinlik İzleyicisi, sunucu sağlığı hakkında tek bir bakış açısı sunar. Yalnızca buna güvenmeyin. İşletim sistemi düzeyinde ölçümler için Windows Performans İzleyicisi, ayrıntılı izleme için Genişletilmiş Olaylar ve sorgu ayarlaması için yürütme planı analizi ile destekleyin.
Activity Monitor sorunları belirlemenize yardımcı olur, ancak bunları çözmek için genellikle ek araçlara ve daha derin analizlere ihtiyaç vardır.
Hakkında daha fazla bilgi alın SQL Server performans izleyicimiz kılavuz tamamlayın.
7.4.3 Tarihsel Eğilimleri Göz Ardı Etmek
Etkinlik İzleyicisi mevcut durumu gösterir, ancak performans sorunları genellikle yalnızca zaman içinde görülebilen kalıplara sahiptir. Mevcut ölçümleri temel değerlerle karşılaştırıp eğilimleri belirleyebilmeniz için geçmiş veri toplamayı uygulayın.
Tarihsel bağlam olmadan, bugünün "normal" CPU kullanımının geçen ayın baz değerinden %30 daha yüksek olduğunu ve bunun kademeli bir düşüşe işaret ettiğini fark edemeyebilirsiniz.
8. Etkinlik İzleyici Sorunlarını Giderme
Activity Monitor'ün kendisi bazen sorunlarla karşılaşabilir. Bu sorunların nasıl giderileceğini bilmek, hayal kırıklığı yaşamanızı önler.
8.1 Etkinlik İzleyicisi Açılmıyor veya Veri Görüntülemiyor
Etkinlik İzleyicisi açıldığında boş bölmeler gösteriyorsa veya hiç açılmıyorsa, bunun birkaç nedeni olabilir.
8.1.1 İzin Sorunları
Etkinlik İzleyicisi sorunlarının en yaygın nedeni yetersiz izinlerdir. Doğrulama ve çözüm için:
- Sunucu düzeyindeki izinlerinizi kontrol edin:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name = 'VIEW SERVER STATE'; - Hiçbir satır dönmezse, VIEW SERVER STATE izniniz yok demektir.
- Bir sunucu yöneticisinden bunu onaylamasını isteyin:
USE master; GRANT VIEW SERVER STATE TO [YourLogin]; - İzinler verildikten sonra Etkinlik İzleyicisini kapatın ve yeniden açın.
8.1.2 Sürüm Uyumluluk Sorunları
Eski bir sürümünü kullanarak SQL Server Yönetim Stüdyosu daha yeni bir sürüme bağlanmak için SQL Server sürümü Etkinlik İzleyicisi hatalarına neden olabilir. Araç, yeni bekleme türlerini veya sistem görünümü sütunlarını anlamayabilir.
Her zaman sizinkiyle eşleşen veya daha yeni olan SSMS sürümünü kullanın SQL Server Microsoft, en son SSMS'yi ayrı bir ücretsiz indirme olarak sağlar SQL Server kendisi.
8.1.3 Güvenlik Duvarı ve Ağ Sorunları
Etkinlik İzleyicisi'nin bağlantıya ihtiyacı vardır SQL Server Standart bağlantı noktalarındaki örnek (varsayılan olarak 1433). Nesne Gezgini aracılığıyla bağlanabiliyorsanız ancak Etkinlik İzleyicisi başarısız oluyorsa, güvenlik duvarı kuralları belirli bağlantıları engelliyor olabilir.
Müşterinizin ulaşabileceğini doğrulayın SQL Server Makinenizde gerekli tüm portları kontrol edin. Hem Windows Güvenlik Duvarı'nı hem de istemciniz ile sunucu arasındaki tüm ağ güvenlik duvarlarını kontrol edin.
8.2 Etkinlik İzleyicisi Kalıcı Olarak Duraklatıldı
Özellikle şu durumlarda yaygın bir sorun ortaya çıkar: SQL Server 2019, Etkinlik İzleyicisi duraklatılmış bir durumda açılıyor ve devam etmeyi reddediyor.
8.2.1 Duraklatılmış Durumu Anlama
Etkinlik İzleyicisi duraklatıldığında, tüm bölmeler "Duraklatıldı" durumunu gösterir ve çalışmayan bir devam düğmesi de olabilir. Bu, herhangi bir sunucu etkinliğini görmenizi engeller.
Duraklatma durumu genellikle kasıtlı bir duraklatma eyleminden ziyade izin sorunları, uzak bağlantı kısıtlamaları veya SSMS sürüm hataları nedeniyle oluşur.
8.2.2 Yaygın Nedenler
Etkinlik İzleyicisi aşağıdaki nedenlerden dolayı kalıcı olarak duraklatılmış duruma girebilir:
- Son eklenen yeni bölmelerde VIEW SERVER STATE izni eksik SQL Server sürümler
- Uzaktan bağlantılar devre dışı bırakıldı SQL Server örnek
- Belirli sistem sorguları için kimlik doğrulama hataları
- Özellikle 18.0 ile 18.3 arasındaki belirli SSMS sürümlerindeki hatalar
- İstemci ve sunucu arasında bağlantı sorunları
8.2.3 Çözüm Adımları
Etkinlik İzleyicisi duraklatılmış durum sorunlarını çözmek için:
- SSMS'yi güncelle: En son indirin ve yükleyin SQL Server Microsoft'un web sitesinden Management Studio sürümü. Duraklama durumundaki birçok hata sonraki sürümlerde düzeltildi.
- İzinleri doğrulayın: VIEW SERVER STATE ve VIEW ANY DEFINITION izinlerine sahip olduğunuzdan emin olun.
- Uzaktan bağlantıları kontrol edin: Doğrulayın. SQL Server örnek uzak bağlantılara izin verir:
EXEC sp_configure 'remote access';Değer 0 ise bir yöneticiden etkinleştirmesini isteyin.
- SSMS'yi yeniden başlatın: Bazen tüm pencereleri kapatıp yeniden başlatmak yeterli olabilir. SQL Server Management Studio sorunu çözüyor.
- Windows Kimlik Doğrulaması ile Bağlanın: SQL kimlik doğrulaması kullanıyorsanız, bazen kimlik doğrulamayla ilgili duraklama sorunlarını aşabildiğinden Windows kimlik doğrulamasını deneyin.
8.3 Etkinlik İzleyicisi Kullanılırken Performans Sorunları
Eğer Activity Monitor'ün kendisi yavaşlarsa veya sunucu performansında düşüşe neden olursa, ayarlama yapılması gerekir.
8.3.1 İzleme Yükünü Azaltma
Activity Monitor'ün etkisini en aza indirmek için:
- Yenileme aralığını 30 saniyeye veya 1 dakikaya çıkarın.
- Aktif olarak kullanmadığınız bölmeleri daralt düğmesine tıklayarak kapatın.
- Bölmeler daraltıldığında, Etkinlik İzleyicisi bunlar için veri sorgulamaz.
- Aynı anda birden fazla Etkinlik İzleyici örneğini çalıştırmaktan kaçının.
- Sorunları aktif olarak araştırmadığınız zamanlarda Etkinlik İzleyicisini tamamen kapatın.
8.3.2 Alternatif Hafif İzleme Yöntemleri
Etkinlik İzleyicisi ortamınız için çok fazla kaynak gerektiriyorsa alternatifleri değerlendirin:
- DMV'lere doğrudan sorgu gönderin: Yalnızca ihtiyacınız olan bilgileri getiren özel T-SQL sorguları yazın.
- sp_WhoIsActive'i kullanın: Bu saklı yordam oldukça optimize edilmiştir ve genellikle Etkinlik İzleyicisinden daha düşük bir ek yüke sahiptir.
- Örneklemeyi uygulayın: DMV verilerinin anlık görüntülerini düzenli aralıklarla yakalayan ve sonuçları daha sonraki analizler için tablolarda depolayan SQL Agent işlerini planlayın.
- İkincil kopyaları izleyin: In Her Zaman Açık kullanılabilirlik gruplarıEtkinlik İzleyicisini birincil sunucu yerine okunabilir ikincil sunucuda çalıştırın.
8.4 Yanlış veya Eksik Bilgiler
Bazen Etkinlik İzleyicisi yanlış veya eksik görünen bilgileri görüntüler.
8.4.1 DMV'lerle Verilerin Doğrulanması
Etkinlik İzleyicisi sonuçları şüpheli görünüyorsa, ilgili DMV'lere doğrudan sorgu göndererek doğrulayın. Örneğin, İşlemler bölmesinde herhangi bir engelleme görünmüyorsa ancak kullanıcılar bunu bildiriyorsa, şu sorguyu yapın:
SELECT
blocking_session_id,
session_id,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;
Bu sorgu, Etkinlik İzleyicisi'nin kaçırdığı bir engellemeyi gösteriyorsa, bir görüntüleme sorununu doğrulamışsınız demektir.
8.4.2 Veri Yenileme Zamanlamasını Anlama
Etkinlik İzleyicisi'nin anlık görüntüleri gösterdiğini unutmayın. Yenileme aralıkları arasında çalıştırılan bir sorgu, yürütme planı önbellekte kalmadığı sürece Son Pahalı Sorgular'da görünmez.
Benzer şekilde, Kaynak Beklemeleri bölmesindeki bekleme istatistikleri, son anlık görüntüden bu yana oluşan birikimi yansıtır. Hızla değişen iş yükleri, her yenilemede farklı kalıplar gösterebilir.
9. Gelişmiş Aktivite İzleme Teknikleri
Deneyimli veritabanı yöneticileri, maksimum tanısal değer elde etmek için Aktivite İzleyicisini gelişmiş yöntemlerle kullanırlar.
9.1 Kök Neden Analizi için Birden Fazla Bölmeyi Birleştirme
Activity Monitor'ün gerçek gücü, karmaşık performans sorunlarını anlamak için birden fazla bölmedeki bilgileri ilişkilendirdiğinizde ortaya çıkar.
9.1.1 Beklemeleri İşlemlerle İlişkilendirme
Kaynak Beklemeleri bölmesi bir kategoride yüksek bekleme süreleri gösterdiğinde, hangi oturumların bu beklemeleri yaşadığını belirlemek için İşlemler bölmesini kullanın:
- Yüksek kümülatif bekleme süresine sahip bekleme kategorisine dikkat edin (örneğin, "Kilit").
- İşlemler bölmesine geçin.
- Göre sırala Bekleme Türü oturumları mevcut bekleme sürelerine göre gruplandırmak için.
- Sorunlu kategoride bekleme türlerini gösteren oturumları arayın.
- Bu oturumlar için şunları inceleyin: Bekleme Kaynağı Hangi veritabanı nesnelerinin dahil olduğunu görmek için sütuna tıklayın.
- Sağ tıklayın ve seçin Detaylar Sorgu metnini görmek için.
Bu ilişki, "kilit beklemelerimiz var"dan "bu belirli sorgu bu tabloda kilit bekliyor"a geçmenize yardımcı olur.
9.1.2 Pahalı Sorguları G/Ç Sorunlarına Bağlama
Veri Dosyası G/Ç bölmesi belirli bir veritabanında yüksek disk etkinliği gösterdiğinde:
- Hangi veritabanı dosyalarının MB/sn okuma veya yazma hızının yüksek olduğuna dikkat edin.
- Son Pahalı Sorgulara Geç.
- Göre sırala Fiziksel Okumalar/sn Diskten yoğun okuma yapan sorguları tanımlamak için.
- Yüksek G/Ç'ye sahip veritabanına karşı çalışan sorguları filtreleyin veya görsel olarak tanımlayın.
- Aşırı G/Ç'ye neden olan tablo taramaları veya eksik dizinler için bu sorguların yürütme planlarını inceleyin.
Bu çok bölmeli analiz, semptomları (yüksek disk G/Ç) nedenlerle (belirli verimsiz sorgular) ilişkilendirir.
9.2 Kapasite Planlaması için Etkinlik İzleyicisini Kullanma
Activity Monitor geçmiş verileri depolamaz ancak kapasite planlama gözlemleri için stratejik olarak kullanabilirsiniz.
9.2.1 En Yüksek Kullanım Modellerinin Belirlenmesi
Kullanım modellerini belirlemek için günün farklı saatlerinde sunucu etkinliğini izleyin:
- Bilinen yoğun iş saatlerinde Etkinlik İzleyicisini açın.
- % İşlemci Süresi grafiğinin tepe değerlerine dikkat edin.
- Maksimum Bekleyen Görev sayısını kaydedin.
- Yoğun zamanlarda Toplu İstek/sn'yi gözlemleyin.
- İşlemler bölmesinde en yoğun veritabanlarını belgelendirin.
- Karşılaştırma için düşük yoğunluklu saatlerde tekrarlayın.
Yoğun saatlerde işlemci süresi sürekli olarak %80'i aşıyorsa, CPU kapasite sınırlarına yaklaşıyorsunuz demektir. Benzer şekilde, artan bekleme süreleri de artan kaynak tüketimine işaret eder.
9.2.2 Kaynak Trend Analizi
Activity Monitor mevcut durumu gösterirken, zaman içinde önemli metrikleri kaydederek anlık trend kontrolü için de kullanabilirsiniz:
- Her gün aynı saatte Genel Bakış bölmesinin ekran görüntülerini alın
- Her grafikten tepe değerlerini kaydedin
- Büyüme eğilimlerini belirlemek için hafta bazında karşılaştırma yapın
- Ortalama işlemci süresinde veya G/Ç oranlarında kademeli artışlara dikkat edin
Bu manuel eğilim, daha gelişmiş izleme çözümlerini tamamlar ve kapasite genişlemesini haklı çıkarmaya yardımcı olur.
9.3 Performans Temel Değerlerinin Belgelenmesi
Temel performans ölçümlerini belirlemek, performansın ne zaman düştüğünü anlamanıza yardımcı olur.
9.3.1 Temel Metrikleri Yakalama
Bilinen iyi performans dönemlerinde, Etkinlik İzleme metriklerini belgelendirin:
- Normal iş operasyonları sırasında (yoğun veya düşük yoğunluklu zamanlarda değil) Etkinlik Monitörünü açın.
- Kayıt Genel Bakış bölmesi değerleri:
- Tipik % İşlemci Süresi aralığı
- Ortalama Bekleme Görevi sayısı
- Normal Veritabanı G/Ç oranı
- Tipik Toplu İstek/sn
- En uzun bekleme süresini gösteren Kaynak Beklemeleri bölmesindeki kategorilere dikkat edin.
- Etkin işlem sayısını genellikle İşlemler bölmesinde belgelendirin.
- Son Pahalı Sorgulardan temsili sorgu yürütme metriklerini kaydedin.
Performans sorunlarını araştırırken gelecekte başvurmak üzere bu temel belgeleri saklayın.
9.3.2 Mevcut ve Temel Performansın Karşılaştırılması
Performans sorunları ortaya çıktığında, mevcut Etkinlik İzleyicisi okumalarını belgelenen temel değerlerinizle karşılaştırın:
- İşlemci süresi temel değerden önemli ölçüde yüksek mi? CPU yoğun sorgulara odaklanın.
- Bekleme görevleri temel seviyelerin 2-3 katı mı? Kaynak beklemelerini araştırın.
- G/Ç önemli ölçüde yüksek mi? Veri Dosyası G/Ç bölmesini ve pahalı sorguları kontrol edin.
- Yoğun saatlerde toplu talepler taban seviyesinin altında mı? Engelleme veya bağlantı sorunlarını arayın.
Bu karşılaştırma, nelerin değiştiğini belirlemenize ve sorun giderme çabalarınızı uygun şekilde odaklamanıza yardımcı olur.
9.4 Özel İzleme İş Akışları Oluşturma
Kapsamlı ve tekrarlanabilir analiz sağlamak için ortak soruşturma senaryoları için sistematik iş akışları geliştirin.
9.4.1 Adım Adım Soruşturma Süreci
Kullanıcılar performans sorunları bildirdiğinde, tutarlı bir iş akışını izleyin:
- Hızlı sağlık kontrolü: Etkinlik İzleyicisini açın ve belirgin anormallikleri görmek için Genel Bakış bölmesindeki grafikleri tarayın.
- Engellemeyi kontrol edin: İşlemler bölmesini genişletin, Engellenenler sütununda NonBlanks için filtre uygulayın.
- Kaynak çekişmesini tanımlayın: Kaynak Beklemelerini İnceleme bölmesi bekleme süresine göre sıralanmıştır.
- Pahalı sorguları bulun: Son Pahalı Sorguları CPU'ya, ardından yürütmelere ve ardından okumalara göre sıralayın.
- G/Ç modellerini ilişkilendirin: Pahalı sorguları Veri Dosyası G/Ç bölmesi etkinliğiyle çapraz referanslayın.
- Belge bulguları: Ekran görüntüleri alın ve ilgili oturum kimliklerini, bekleme türlerini ve sorgu ayrıntılarını kaydedin.
- Derin dalış: Belirlenen sorunların ayrıntılı incelenmesi için Profiler izlerini, yürütme planı analizini ve DMV sorgularını kullanın.
9.4.2 Yükseltme Kriterleri
Sorunların ne zaman yükseltileceğine veya soruşturmaya devam edileceğine ilişkin kriterleri belirleyin:
- Hemen yükseltin: >5 dakika süren blokaj zincirleri, işlemci süresi >2 dakika boyunca %100'de, kritik sistem süreçleri ASKIDA durumunu gösteriyor.
- Analizle yükseltin: CPU'nun %50'sinden fazlasını tüketen tekrarlayan pahalı sorgular, sürekli yüksek G/Ç yanıt süreleri >50ms, bellek izinlerinin tekrar tekrar başarısız olması.
- Daha detaylı araştırın: Geçici beklemeler birkaç dakika içinde çözülüyor, planlar optimum olmasa da performans kabul edilebilir düzeyde olan sorgular, 30 saniyeden kısa süren küçük engellemeler.
10. Farklı Aktivite Monitörü SQL Server sürümler
Etkinlik İzleyicisi, SQL Server Her sürümde iyileştirmeler ve zaman zaman yeni sorunlar ortaya çıkıyor.
10.1 Etkinlik İzleyicisi SQL Server 2008 ve Sonrası
SQL Server 2008 yılında, bugün de büyük ölçüde değişmeden kalan modern Aktivite Monitörü tasarımı tanıtıldı.
Yılında Sunulan 10.1.1 Yeni Özellik SQL Server 2008
MKS SQL Server 2008 Etkinlik İzleyicisi yeniden tasarımı önemli iyileştirmeler getirdi:
- Genel Bakış bölmesinde gerçek zamanlı grafikler içeren grafiksel gösterge paneli
- Eski yalnızca ızgara görünümünün yerini alan genişletilebilir/daraltılabilir bölme arayüzü
- Toplu sorgu performans verilerini gösteren Son Pahalı Sorgular bölmesi
- Dosya başına disk etkinliği izleme için Veri Dosyası G/Ç bölmesi
- Bekleme kategorizasyonuna sahip Gelişmiş Kaynak Beklemeleri bölmesi
- Oturumları sonlandırma ve Profiler'ı başlatma gibi işlem eylemleri için sağ tıklama bağlam menüleri
- 1 saniyeden 1 saate kadar yapılandırılabilir yenileme aralıkları
Bu değişiklikler Activity Monitor'ı basit bir süreç listesinden kapsamlı bir izleme panosuna dönüştürdü.
10.1.2 Değişiklikler SQL Server 2005
SQL Server 2005'in Aktivite Monitörü çok daha sınırlıydı:
- Araç çubuğu yerine Nesne Gezgini'ndeki Yönetim klasörü aracılığıyla erişilir
- Temel bilgilerle işlem listesini gösteren tek ızgara
- Grafiksel çizelgeler veya birden fazla bölme yok
- Pahalı sorgular veya G/Ç izleme yok
- Sınırlı bekleme istatistikleri bilgisi
2008'deki yeniden tasarım, kademeli bir iyileştirmeden ziyade, tamamen yeniden tasarlanmış bir tasarımdı.
10.2 Etkinlik İzleyicisi SQL Server 2014/2016
SQL Server 2014 ve 2016'da Activity Monitor'ün temel veri toplamasında kademeli iyileştirmeler yapıldı ancak görsel değişiklikler çok azdı.
10.2.1 İyileştirmeler ve Geliştirmeler
Bu sürümlerdeki temel iyileştirmeler şunlardır:
- Binlerce önbelleğe alınmış plana sahip sunucuları izlerken daha iyi performans
- İşlemler bölmesinde gelişmiş filtreleme yetenekleri
- Bekleme istatistiklerinin toplanmasının doğruluğu iyileştirildi
- Büyük sonuç kümeleriyle sütun sıralama ve filtrelemenin daha iyi işlenmesi
- Daha verimli DMV sorguları izleme yükünü azaltır
Çekirdek arayüzü tutarlı kaldı SQL Server 2008, yöneticiler için aşinalığı sürdürüyor.
10.3 Etkinlik İzleyicisi SQL Server 2019/2022
Son SQL Server versiyonları, Activity Monitor'ün performans ve istikrara odaklanarak evrimini sürdürüyor.
10.3.1 En Son Özellikler ve Yetenekler
SQL Server 2019 ve 2022 Faaliyet İzleyicisi şunları içerir:
- Bu sürümlerde tanıtılan yeni bekleme türleri için destek
- WPF teknolojisi kullanılarak SSMS'de iyileştirilmiş işleme performansı
- Çok sayıda aktif oturumun daha iyi yönetilmesi
- Bulut SQL platformlarıyla gelişmiş uyumluluk
- Daha doğru CPU ve G/Ç ölçümleri
10.3.2 Son Sürümlerdeki Bilinen Sorunlar
SQL Server 2019'da Etkinlik İzleyicisi'nde birkaç hata ortaya çıktı:
- Kalıcı Duraklama Durumu: Etkinlik İzleyicisi sık sık duraklatılmış duruma giriyor ve özellikle SSMS 18.0-18.3'te devam etmiyor. Sonraki SSMS sürümlerinde düzeltildi.
- Uzaktan Bağlantı Hataları: Bazı yapılandırmalar, Etkinlik İzleyicisi'nin uzak örneklerde açılmasını engelliyor. Geçici çözümler arasında belirli izleme işaretlerini etkinleştirmek veya daha yeni SSMS sürümlerini kullanmak yer alıyor.
- İzin Sorunları: Yeni sistem görünümleri açıkça belgelenmeyen ek izinler gerektirir ve bu da VIEW SERVER STATE ile bile boş ekranlara neden olur.
SSMS ile çalışırken her zaman en son sürümü kullanın SQL Server 2019 ve 2022'de bu sorunların yaşanmaması için.
11. Pratik Kullanım Örnekleri ve Örnekler
Gerçek dünya örnekleri, Etkinlik İzleyicisinin yaygın sorun giderme senaryolarında nasıl etkili bir şekilde uygulanacağını göstermektedir.
11.1 Vaka Çalışması: Yavaş Bir Web Uygulamasının Tanılanması
Bir geliştirme ekibi, web uygulamalarının kabul edilemez derecede yavaşladığını, sayfaların normalde 2-3 saniye sürmesi gereken sürenin 20-30 saniyeye çıktığını bildiriyor.
11.1.1 Genel Bakış Bölmesiyle İlk Araştırma
Etkinlik İzleyicisini açın ve Genel Bakış bölmesini inceleyin:
- % İşlemci Süresi grafiği, normal %30-40'lık taban değerinden önemli ölçüde daha yüksek olan %85-95 CPU kullanımını göstermektedir.
- Bekleyen Görevler, normalde 0-3 olan temel değere kıyasla 10-20 görev arasında değişmektedir.
- Veritabanı G/Ç'si 50 MB/s civarında orta düzeyde bir aktivite gösteriyor.
- Toplu İstek/sn, iş saatleri içerisinde tipik olarak 300-400/sn olan rakama kıyasla beklenenden daha düşük, 100/sn'dir.
Bu model, kaynak çekişmesi nedeniyle CPU darboğazına ve verimin düşmesine işaret ediyor. Sunucu yoğun bir şekilde çalışıyor ancak pek çok isteği işlemiyor.
11.1.2 Sorunlu Sorguyu Belirleme
Son Pahalı Sorgular bölmesini genişletin ve Yürütmeler/dakika'ya göre sıralayın:
- En üstteki sorgu dakikada 15,000 yürütme gösteriyor.
- Sağ tıklayın ve seçin Sorgu Metnini Düzenle Sorguyu incelemek için.
- Sorgu, tek bir kullanıcı kaydını alan basit bir SELECT ifadesidir:
SELECT * FROM Users WHERE UserId = @UserId. - Bu sorgunun normal uygulama kullanımında dakikada 15,000 kez çalıştırılması beklenmemelidir.
Sorguya sağ tıklayın ve seçin Uygulama Planını GösterPlan, Kullanıcılar tablosunda bir tablo taraması gösterir ve UserId sütununda eksik bir indeks hakkında uyarı verir.
İşlemler bölmesini Uygulamaya göre filtreleyerek yalnızca web uygulamasının bağlantılarını gösterin. Birden fazla oturumda aynı sorgunun tekrar tekrar çalıştığı gösterilir.
11.1.3 Çözüm ve Doğrulama
Sorun iki nedenden kaynaklanıyor: aşırı sorgu yürütme ve eksik bir dizin. Çözüm adımları:
- Eksik dizini oluşturun:
CREATE NONCLUSTERED INDEX IX_Users_UserId ON Users (UserId); - Geliştirme ekibiyle iletişime geçin Aşırı yürütmeler hakkında. Araştırma, bir döngünün bir listedeki her bir öğe için kullanıcı ayrıntılarını aldığı uygulama kodunda N+1 sorgu sorununu ortaya koyuyor.
- Uygulamayı değiştir Kullanıcı aramalarını IN ifadesi veya tablo değerli parametre kullanarak tek bir sorguda toplu olarak toplamak.
- Düzeltmeyi doğrulayın Dağıtımdan sonra Activity Monitor'ü izleyerek CPU kullanımı %35-40'lara düşer, dakika başına yürütme sayısı 200-300'e düşer ve uygulama yanıt süreleri normale döner.
11.2 Vaka Çalışması: Engelleme Sorununun Çözümü
Kullanıcılar, sipariş giriş sisteminin normal çalışmaya dönmeden önce 30-60 saniye kadar periyodik olarak donduğunu bildiriyor.
11.2.1 Blokaj Zincirinin Algılanması
Bu dondurma olaylarından biri sırasında Etkinlik İzleyicisini açın ve İşlemler bölmesini genişletin:
- Göre sırala Oturum kimliği Tüm oturumların düzenlendiğini görmek için.
- Birden fazla oturum, değerleri şu şekilde gösterir: Tarafından engellendi sütun, hepsi Oturum Kimliği 73'ü işaret ediyor.
- 73. Oturumda '1' gösteriliyor Baş Engelleyici sütun, bunun temel neden olduğunu doğruluyor.
- MKS Bekleme Türü Engellenen oturumlar için LCK_M_X gösteriliyor ve bu, özel kilitlerin beklendiğini gösteriyor.
- MKS Bekleme Kaynağı Sütun, engellemenin Siparişler tablosunda olduğunu ortaya koyuyor.
11.2.2 Nedenin Analizi
Oturum 73'e sağ tıklayın ve seçin Detaylar komutu görüntülemek için:
UPDATE Orders
SET Status = 'Processing',
LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);
Bu güncelleme, saatlik olarak çalışan bir toplu işlem işinin parçasıdır. Oturum aç sütun, oturumun toplu işlem hizmeti hesabına ait olduğunu doğrular.
Sorgu, binlerce siparişi işlerken Siparişler tablosunu kilitliyor. Bekleme zamanı Engellenen oturumlar için sürekli artış gösteriyor ki bu uzun süredir devam eden işlemin sorun olduğunu doğruluyor.
11.2.3 Düzeltmenin Uygulanması
Kısa vadeli çözüm:
- 73. Oturumun sorgu metni ve süresi dahil olmak üzere ayrıntılarını belgeleyin.
- Güncellemenin meşru bir toplu işlem olması nedeniyle doğal olarak tamamlanmasına izin verin.
- İşlem tamamlandıktan sonra engellenen oturumların temizlendiğini ve normal işlemlerin devam ettiğini doğrulayın.
Uzun vadeli çözümler uygulandı:
- Toplu işi yeniden planlayın İş saatleri dışında (iş saatleri yerine 02:00-04:00) çalışmak.
- Toplu işlemeyi değiştirin siparişleri her seferinde 100 kayıttan oluşan daha küçük gruplar halinde güncellemek ve gruplar arasında kilitleri serbest bırakmak.
- Bir dizin ekle Güncelleme işlemini hızlandırmak için OrderId sütununda.
- SNAPSHOT izolasyonunu göz önünde bulundurun okuma işlemlerinde engelleme etkisini azaltmak için.
11.3 Vaka Çalışması: Aşırı Sorgu Çalıştırmalarını Belirleme
Veritabanı izleme, CPU kullanımının son bir ayda giderek arttığını, ancak uygulama kodunda belirgin bir değişiklik olmadığını gösteriyor.
11.3.1 Anormal Yürütme Sayımlarını Tespit Etme
Etkinlik İzleyicisini açın ve Son Pahalı Sorgular bölmesini inceleyin:
- Göre sırala İnfazlar/dk En sık yürütülen sorguları görmek için.
- En üstteki sorgu dakikada 37,000 yürütme gösteriyor; bu, diğer tüm sorgulardan çok daha yüksek.
- Sağ tıklayın ve seçin Sorgu Metnini Düzenle.
- Sorgu ürün kategorisi bilgilerini alır:
SELECT CategoryId, CategoryName FROM ProductCategories WHERE CategoryId = @CategoryId; - Bu basit sorgu hızlı ve önbelleğe alınabilir olmalı, ancak dakikada on binlerce kez yürütülüyor.
11.3.2 Uygulama Koduna İzleme
İşlemler bölmesinde, bu sorguyu yürüten oturumları bulun:
- Not Uygulama sütunda “ProductCatalogService” ifadesi yer alıyor.
- Bu oturumların birine sağ tıklayın ve seçin İzleme Süreci SQL Server Profiler.
- SQL Profiler, sorgunun farklı CategoryId değerleriyle hızlı bir şekilde tekrar tekrar yürütüldüğünü ortaya çıkarır.
- Kod incelemesi için ProductCatalogService'i yöneten geliştirme ekibiyle iletişime geçin.
Kod incelemesi sorunu ortaya koyuyor: Son yapılan bir değişiklik, kategorili ürün listelerini getiriyor. Sonuç kümesindeki her ürün için (genellikle 1,000'den fazla ürün), kod kategori bilgilerini almak üzere ayrı bir veritabanı çağrısı yapıyor; bu da klasik bir N+1 sorgu sorunu.
11.3.3 Uygulamanın Optimize Edilmesi
Uygun bir düzeltme uygulayın:
- Uygulama sorgusunu değiştirin tek bir veritabanı çağrısında ürünleri ve kategorilerini almak için JOIN kullanmak:
SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName FROM Products p INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId WHERE p.Active = 1; - Güncellenen kodu dağıtın ve Aktivite Monitörünü izleyin.
- Düzeltmeyi doğrulayın: Kategori sorgusu için dakikadaki yürütme sayısı 37,000'den 100'ün altına düşerken, genel CPU kullanımı %40 oranında azaldı.
- Öğrenilen dersi belgelendirin ve gelecekteki kod değişikliklerinde benzer sorunların yaşanmasını önlemek için geliştirme ekibiyle paylaşın.
12. Potansiyel Veritabanı Bozulmasını Tespit Edin
Etkinlik İzleyicisi özellikle veritabanı bozulmasını tespit etmek için tasarlanmamış olsa da, ekranındaki bazı desenler daha fazla araştırmayı gerektiren altta yatan bozulma sorunlarını gösterebilir.
12.1 Potansiyel Veritabanı Bozulmasının Belirtileri
Veritabanında bozulma varsa ve erişim sağlanıyorsa, ara sıra şunları görebilirsiniz:
1. İşlemler Bölmesinde:
- Alışılmadık bekleme türleriyle ASKIDA durumunda takılı kalan oturumlar
- Hata durumlarını gösteren işlemler
- Sorgular tekrar tekrar başarısız oluyor
2. Kaynak Beklemeleri Bölmesinde:
- Disk sorunlarını gösterebilecek alışılmadık G/Ç ile ilgili bekleme türleri (ancak bu, mantıksal bozulmadan ziyade donanım sorunlarını gösterme olasılığı daha yüksektir)
3. Son Pahalı Sorgularda:
- Bozuk sayfaları tekrar tekrar okumaya çalışıyorlarsa anormal derecede yüksek fiziksel okumalara sahip sorgular
12.2 DBCC CHECKDB ile Daha Fazla Kontrol
Etkinlik İzleyicisi olası bir bozulmaya işaret eden belirtiler gösterdiğinde, veritabanı bütünlüğünü doğrulamak için hemen DBCC CHECKDB komutunu çalıştırmalısınız. Bu komut, tüm veritabanı sayfalarını tarar, toplam kontrol değerlerini doğrular ve mantıksal tutarlılık hatalarını kontrol eder.
Veritabanı bozulmalarını denetlemek ve düzeltmek için DBCC CHECKDB'nin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için bkz. kapsamlı DBCC CHECKDB kılavuzu.
12.3 Profesyonel Aletlerle Onarım
DBCC CHECKDB veritabanının bozulduğunu doğrularsa, onarım için birkaç seçeneğiniz vardır:
- Tercih edilen yaklaşım, bilinen iyi bir yedeklemeden geri yükleme yapmaktır. Bkz. yedekleme ve geri yükleme hakkında kapsamlı kılavuzumuz SQL Server veritabanları.
- Küçük bozulmalar için DBCC CHECKDB'yi REPAIR_REBUILD ile kullanmak sorunları çözebilir.
- Yakın zamanda yedeklenmemiş kritik veritabanları için profesyonel SQL kurtarma yazılımı ve hizmetler genellikle yerleşik onarım seçeneklerinin kurtaramadığı verileri kurtarabilir.
13. Sonuç
SQL Server Activity Monitor, veritabanı yöneticileri için paha biçilmez bir araçtır; sunucu performansı hakkında anında bilgi sağlar ve sorunların hızlı ve etkili bir şekilde teşhis edilmesine yardımcı olur.
13.1 Önemli Noktaların Özeti
Bu kılavuz boyunca, Etkinlik İzleyicisi'nin sorunları anlamanıza ve gidermenize nasıl yardımcı olduğunu inceledik SQL Server performans:
- Activity Monitor, organize edilmiş grafiksel bir arayüz aracılığıyla süreçlere, beklemelere, sorgulara ve G/Ç'ye ilişkin gerçek zamanlı görünürlük sağlar.
- Beş bölme (Genel Bakış, İşlemler, Kaynak Beklemeleri, Veri Dosyası G/Ç ve Son Pahalı Sorgular) sunucu etkinliğine ilişkin benzersiz bakış açıları sunar.
- Aşırı sorgu yürütmeleri, blok zincirleri ve yüksek CPU kullanımı gibi yaygın sorun giderme senaryoları, sistematik Etkinlik İzleme incelemesiyle yönetilebilir hale gelir.
- Etkinlik İzleyici güçlü bir araç olsa da, geçmiş verilerin eksikliği, bekleme türü gruplandırması ve izleme yükü gibi sınırlamaları vardır ve bu da uygulanabilirliğini etkiler.
- Activity Monitor'ü DMV sorguları, sp_WhoIsActive, Genişletilmiş Olaylar ve potansiyel olarak üçüncü taraf araçlarıyla desteklemek kapsamlı bir izleme stratejisi oluşturur.
- Yenileme aralıkları için en iyi uygulamaları izlemek, kullanılmadığında Etkinlik İzleyicisi'ni kapatmak ve korelasyon için birden fazla bölmeyi birleştirmek, etkisini en aza indirirken değerini en üst düzeye çıkarır.
13.2 Araç Setinizin Bir Parçası Olarak Etkinlik İzleyicisi
Activity Monitor, performans incelemeleriniz için tek aracınız değil, ilk müdahale aracınız olmalıdır. Güçlü yanı, aktif sorun giderme sırasında anında görünürlük sağlaması ve veritabanının darboğaz olup olmadığını hızla belirlemenize ve hangi belirli noktaların daha derinlemesine incelenmesi gerektiğini belirlemenize yardımcı olmasıdır.
Aktivite Monitörü'nü aracınızdaki bir gösterge paneli gibi düşünün; bir sorun olduğunda anında uyarır ve endişe verici genel alanı belirlemenize yardımcı olur. Tıpkı aracınızın gösterge panelinin motor arıza ışığının neden yandığını tam olarak söylememesi gibi, Aktivite Monitörü de sizi sorunlara yönlendirir, ancak her zaman sorunun temel nedenini ortaya koymaz. Bu derinlemesine analiz, ek araçlar ve uzmanlık gerektirir.
Activity Monitor'ü, yürütme planı analizi, bekleme istatistikleri takibi, geçmiş izleme çözümleri ve en iyi performans uygulamalarını içeren daha geniş bir araç setine entegre edin. Uygun indeksleme stratejileri, sorgu optimizasyon teknikleri ve kapasite planlamasıyla birlikte kullanın.
13.3 Öğrenme Yolculuğunuza Devam Etmek
Activity Monitor'da ustalaşmak, etkili bir veritabanı yöneticisi olma yolunda atılan adımlardan sadece biridir. Becerilerinizi geliştirmeye devam edin:
- Uygulama planlarını yorumlamayı ve verimsiz operasyonları belirlemeyi öğrenmek
- Anlamak SQL Server bekleme istatistikleri ve bunların etkileri
- Endeks tasarımı ve optimizasyon tekniklerinin incelenmesi
- Keşfetmek SQL Servermimarisi ve sorguları nasıl işlediği
- Sistematik sorun giderme metodolojilerini uygulama
- Ayrıntılı izleme için Genişletilmiş Olaylar konusunda deneyim oluşturma
- İşlem izolasyon düzeylerini ve bunların performans üzerindeki etkisini anlama
Activity Monitor ile yapılan her performans araştırması size nasıl performans göstereceğiniz konusunda yeni bir şey öğretir SQL Server Veritabanlarının nasıl çalıştığını ve uygulamaların veritabanlarıyla nasıl etkileşim kurduğunu inceleyin. Bulgularınızı belgeleyin, bilginizi meslektaşlarınızla paylaşın ve yaygın sorunlar için bir çözüm kütüphanesi oluşturun.
13.4 Ek Kaynaklar
Bu değerli kaynaklarla bilginizi genişletin:
- Activity Monitor'ü şurada açın: SQL Server Yönetim Stüdyosu (SSMS)
: Resmi SQL Server Etkinlik İzleyicisi'nin nasıl açılacağına dair belgeler SQL Server Yönetim Stüdyosu (SSMS).
- Activity Monitor
: Resmi SQL Server Activity Monitor'ün nasıl kullanılacağına dair belge.
14. Sıkça Sorulan Sorular (SSS)
S: nedir SQL Server Etkinlik Monitörü?
A: SQL Server Etkinlik İzleyicisi, dahili bir araçtır SQL Server Bir bilgisayarda çalışan işlemler hakkında gerçek zamanlı bilgi görüntüleyen Yönetim Stüdyosu SQL Server Örnek ve sunucu kaynakları üzerindeki etkileri. İşlemci kullanımı, bekleyen görevler, G/Ç oranları, etkin oturumlar ve pahalı sorgular dahil olmak üzere sunucu etkinliğinin farklı yönlerini gösteren beş bölmeli grafiksel bir gösterge paneli sağlar.
S: SSMS'de Etkinlik İzleyicisini nasıl açarım?
A: Etkinlik İzleyicisini dört yöntem kullanarak açabilirsiniz: (1) SSMS araç çubuğunda Etkinlik İzleyicisi simgesini tıklayın, (2) Sağ tıklayın SQL Server Nesne Gezgini'nde örnek adını seçin ve Activity Monitor, (3) Basın Ctrl + Ara Toplam + Aveya (4) SSMS'yi otomatik olarak başlatacak şekilde yapılandırın Montaj Ekipmanı -> Seçenekler -> çevre -> Başlangıç.
S: Etkinlik İzleyicisi'ni kullanmak için hangi izinlere ihtiyacım var?
A: İhtiyacınız olan şey SUNUCU DURUMUNU GÖRÜNTÜLE Etkinlik İzleyici bilgilerinin çoğunu görmek için izin gereklidir. Veri Dosyası G/Ç bölmesi için ayrıca şunlardan birine de ihtiyacınız vardır: VERİTABANI YARAT, HERHANGİ BİR VERİTABANINI DEĞİŞTİRİNya da HERHANGİ BİR TANIMI GÖRÜNTÜLE İzinler. Bu izinler olmadan Etkinlik İzleyicisi açılabilir ancak boş bölmeler görüntüleyebilir.
S: Etkinlik Monitörüm neden duraklatıldı veya çalışmıyor?
A: Etkinlik İzleyicisi genellikle izin sorunları, güncel olmayan SSMS sürümleri veya devre dışı bırakılmış uzak bağlantılar nedeniyle duraklar. Çözüm için: (1) En son SSMS sürümüne güncelleyin, (2) SUNUCU DURUMUNU GÖRÜNTÜLE iznine sahip olduğunuzu doğrulayın, (3) Uzak bağlantıların etkin olduğunu kontrol edin. SQL Server (4) SSMS'yi yeniden başlatın ve (5) Mümkünse SQL kimlik doğrulaması yerine Windows kimlik doğrulamasıyla bağlanmayı deneyin.
S: Activity Monitor ile sp_WhoIsActive arasındaki fark nedir?
C: Activity Monitor, farklı izleme yönleri için düzenli bölmeler sunan, SSMS'e entegre edilmiş grafiksel bir araçtır. sp_WhoIsActive, Activity Monitor'dan daha spesifik bekleme türleri, engelleme ayrıntıları ve özelleştirme seçenekleriyle tek bir sonuç kümesinde ayrıntılı oturum bilgileri döndüren, topluluk tarafından oluşturulmuş ücretsiz bir saklı yordamdır. Activity Monitor görsel inceleme için daha iyiyken, sp_WhoIsActive betikli izlemede mükemmeldir ve daha ayrıntılı bilgiler sağlar.
S: Etkinlik İzleyicisi sunucu performansını etkiler mi?
C: Evet, Activity Monitor ölçülebilir bir ek yüke sahiptir çünkü her yenileme aralığında sistem DMV'lerini sorgular. Etki, daha düşük yenileme hızlarında artar; Microsoft, 10 saniyenin altındaki aralıkların sunucu performansını etkileyebileceği konusunda uyarıda bulunur. Activity Monitor'ü aktif olarak kullanmadığınız zamanlarda her zaman kapatın ve yoğun yük altındaki üretim sunucularında 30-60 saniyelik yenileme aralıklarını göz önünde bulundurun.
S: T-SQL kullanarak Activity Monitor verilerini alabilir miyim?
C: Evet, Activity Monitor, sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats ve sys.dm_exec_query_stats gibi sistem dinamik yönetim görünümlerini sorgular. Bu DMV'leri doğrudan T-SQL kullanarak sorgulayarak eşdeğer bilgileri programatik olarak alabilir, özel izleme betikleri ve otomatik veri toplamayı etkinleştirebilirsiniz.
S: Varsayılan yenileme aralığı nedir?
A: Varsayılan yenileme aralığı 10 saniyedir. Genel Bakış bölmesinde herhangi bir yere sağ tıklayıp "Yeniden Başlat" seçeneğini belirleyerek bunu değiştirebilirsiniz. Yenileme aralığıve önceden tanımlanmış seçeneklerden birini seçebilirsiniz: 1 saniye, 5 saniye, 10 saniye, 30 saniye, 1 dakika veya 1 saat. Daha kısa aralıklar daha gerçek zamanlı görünümler sağlar ancak izleme yükünü artırır.
S: SSMS başlatıldığında Etkinlik İzleyici'yi otomatik olarak nasıl açabilirim?
A: SSMS seçenekleri aracılığıyla otomatik başlatmayı yapılandırın: Şuraya gidin: Montaj Ekipmanı -> Seçenekler -> çevre -> BaşlangıçArdından seçmek Nesne Gezgini ve Etkinlik İzleyicisini açın itibaren Başlangıçta Açılır menü. Etkinlik İzleyicisi, SSMS'de bir sunucuya her bağlandığınızda otomatik olarak açılacaktır.
S: Activity Monitor'ün sınırlamaları nelerdir?
A: Temel sınırlamalar şunlardır: (1) Geçmiş veri depolama veya eğilim yetenekleri yok, (2) Bekleme türleri özel olarak gösterilmek yerine kategorilere gruplandırılıyor, (3) CXPACKET gibi bazı bekleme türleri görünmeyebilir, (4) Nokta içi anlık görüntüler geçici sorunları kaçırabilir, (5) İzleme yükü yoğun sunucuları etkileyebilir, (6) Proaktif izleme için uyarı mekanizması yok ve (7) Veriler birden fazla sunucuda toplanamıyor SQL Server Örnekler. Bu ihtiyaçlar için, Etkinlik İzleyicisini Genişletilmiş Olaylar, veri toplama kümeleri veya üçüncü taraf izleme araçlarıyla destekleyin.
Yazar Hakkında
Yuan Sheng 10 yılı aşkın deneyime sahip kıdemli bir veritabanı yöneticisidir (DBA) SQL Server ortamlar ve kurumsal veritabanı yönetimi alanında uzmanlaşmıştır. Finansal hizmetler, sağlık ve üretim sektörlerindeki yüzlerce veritabanı kurtarma senaryosunu başarıyla çözmüştür.
Yuan şu konuda uzmanlaşmıştır: SQL Server veritabanı kurtarma, yüksek kullanılabilirlik çözümlerive performans optimizasyonu konularında uzmanlaşmıştır. Çok terabaytlık veritabanlarını yönetme, Always On Kullanılabilirlik Gruplarını uygulama ve kritik iş sistemleri için otomatik yedekleme ve kurtarma stratejileri geliştirme gibi kapsamlı pratik deneyime sahiptir.
Yuan, teknik uzmanlığı ve pratik yaklaşımıyla, veritabanı yöneticilerinin ve BT profesyonellerinin karmaşık sorunları çözmelerine yardımcı olan kapsamlı kılavuzlar oluşturmaya odaklanıyor. SQL Server Zorlukları verimli bir şekilde çözer. En son gelişmelerle güncel kalır. SQL Server Microsoft'un gelişen veritabanı teknolojilerini ve sürümlerini takip ederek, önerilerinin gerçek dünyadaki en iyi uygulamaları yansıttığından emin olmak için kurtarma senaryolarını düzenli olarak test ediyor.
hakkında sorularınız var SQL Server Kurtarma veya ek veritabanı sorun giderme kılavuzuna mı ihtiyacınız var? Yuan memnuniyetle karşılar geri bildirim ve öneriler Bu teknik kaynakların iyileştirilmesi için.


















