Üretimde olan bir veritabanında SQL Profiler kullanmak


28

Bir geliştirici olarak, SQL Profiler'ı oldukça sık kullanıyorum. Hem kodumun ne yaptığını izlemek hem de performans sorunlarını analiz etmek iyi bir hata ayıklama aracıdır.

Ama her zaman geliştirme ortamımda ve çok kontrollü bir şekilde kullandım.

  • Başvurumu başlat ve belirli bir duruma getir
  • Profilci üzerinde bir iz başlat
  • Uygulamamda belirli bir işlem dizisi gerçekleştir
  • İzi durdur ve sonuçları incele.

SQL Profiler pratik olarak üretim içi bir ortamda kullanılabilir mi?

İlk endişem, performansı düşüreceği yönünde.

İkinci kaygım şudur: çünkü üretimde, ilginç eylemlerin kendisini tetiklemiyorsunuz. Profilleyiciyi uzun süre çalışır durumda bırakmanız ve sonuçları analiz etmeniz gerekir. Sonuç kümesi çok hantal olur mu? (Çok fazla disk alanı kaplamak ve sorgulamak zor olmak).

Üretimde SQL Profiler'ı kullanan var mı?


1
Ne aradığınızı biliyorsanız o zaman izlemeye bile gerek duymayabilirsiniz
Gaius

Yanıtlar:


19

Bir üretim sunucusunu izlemek için SQL Server Profiler'ı (GUI aracı) kullanmak iyi bir fikir değildir. Ancak yüke bağlıdır. Bunun yerine sunucu tarafı sql izlemeyi kullanın (bkz. Sp_trace_XXX prosedürleri). Ayrıca makaleler buldum:

Performans Etkisi: Profiler İzleme ve Sunucu Tarafı SQL İzleme ,

SQL Server'da Sunucu Tarafı İzlemeyi Otomatikleştirme

Profiler ile İlgili Sorunlara Neden Olmaktan Kaçının

belki ilgi ve faydalı olacaktır.

Book Online diyor ki:

  • Doğrudan sunucuda değil, Profiler'i uzaktan çalıştır
  • Kesinlikle gerekli olmadıkça, sıkça meydana gelen olayları dahil etmekten kaçının (örn. Kilit: Kazanılmış)
  • Yalnızca gereken etkinlik sınıflarını dahil et
  • Olay sayısını azaltmak için sınırlayıcı filtreler belirtin
  • Gereksiz verilerden kaçının (örn. SQL: BatchStarting ve SQL: BatchCompleted)
  • Profiler ile büyük izler kullanmaktan kaçının; bunun yerine bir sunucu tarafı SQL İzlemesi düşünün
  • Sunucu tarafı izleme dosyası boyutunu sınırlayın ve alan kullanımını yönetin

1
Etki filtresini en iyi şekilde en aza indirmek için sp_trace komutları ile bir dosyayı takip edebilirsiniz. Uzaktan çalışan GUI en fazla etkiye neden olur, ancak dosyalarınızı dökmek için hızla değiştirebileceğiniz tüm filtrelerinizle kolayca bir komut dosyası oluşturmak için kullanabilirsiniz. Dosya sayısını ve dosya boyutunu uygun şekilde ayarlayın.
AndrewSQL

21

Her zaman üretime karşı SQL Profiler kullanıyorum. Doğru yapıldığında (çok az miktarda veriyi geri alabilmeniz için filtrelemek) bir sunucuya karşı risk asgari düzeydedir. Her şeyin izini sürmek işe yaramaz.


7
  1. Evet, izleme işi bazı kaynaklar gerektirecektir. Aşırı yüklenmiş bir sunucuda çalıştırmak onu öldürebilir.

  2. Aslında gerçek yaşam yükünü izleyeceksiniz: eylemleriniz bu yükün gürültüsünde kaybolabilir.

Bazen prodüksiyonda çalıştırıyoruz. Temelde belirli kod için bir metin filtresiyle veya daha uzun süre çalışan sorguları yakalamak için CPU / süre filtreleriyle. Ve XML yürütme planlarını veya bu tür saçmalıkları yakalamaya çalışmayız.

Önemli olan, ne aradığınızı bilmek: Çalışmasını bırakma ve her şeyi tuzağa düşürme eğiliminde değiliz.

Bu durumda, bazı işlemlerin sonuçlarını görmek isterseniz, saatler dışında yapabilir misiniz?


2

Profiler her zaman performans etkisi yaratacaktır.

SQL Server 2008R2 + kullanıyorsanız genişletilmiş olayları kullanabilirsiniz. Bu, profilerde gördüğünüz bilgilerin çoğunu, performans isabetinin bir kısmıyla sağlar.

Çevrimiçi kitap tanıtımı http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

Bu özellik, şimdi SSMS'de bir GUI içeren SQL Server 2012'de büyük bir güncelleme aldı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.