SORU
3 Kasım 2008, PAZARTESİ


Nasıl ve En Pahalı Sorguları Günlük bulabilirim?

Sql2k8 faaliyet monitör, bize en pahalı sorguları için görmenizi sağlar. Tamam, sorun değil, ama bu Bilgi günlük veya sorgu analizörü ile bu Bilgi alabileceğim bir yol var mı? Gerçekten Sql Yönetim Konsolu açık olmasını istemiyorum ve faaliyet baktığımı pano monitör.

Kötü şema kötü tasarlanmış, etc/yazılı olduğunu anlamaya istiyorum.

Teşekkürler herhangi bir yardım için yığınları!

CEVAP
3 Kasım 2008, PAZARTESİ


  1. Server Profiler (SSMS Araçlar menüsü) bu olay günlükleri izleme oluşturmak için SQL:

     RPC:Completed
     SP:Completed
     SP:StmtCompleted
     SQL:BatchCompleted
     SQL:StmtCompleted
    
  2. Standart izleme şablonu ile başlayın ve kuru erik. İstemediğini belirtmek ister bunun için özel bir veritabanı veya tüm sunucu, eğer belirli Db, dahil DatabaseİD sütun ve ayarlanmış bir filtre DB (SELECT DB_ID('dbname')). Mantıksal veri sütunu, her olay için bulunan Okur emin olun. İzleme, bir dosyaya günlük için ayarlayın. Eğer bu iz bırakarak çalıştırın sahipsiz arka planda, çok da iyi bir fikir için bir dizi iz en fazla boyut demek 500 MB veya 1GB ise bolca oda (tüm bağlıdır üzerinde ne kadar çok aktivite var sunucuda, bu yüzden sen-ecek var olmak çok kötü ve bakınız).

  3. Kısaca izleme başlatın ve sonra Duraklat. Dosya -^ Git . İhracat->Komut İzleme Tanımı ve DB sürümü seçin ve bir dosyaya kaydedin. Şimdi profiler GUI üzerinden çalışan çok daha az yükü olan bir iz oluşturur sql komut dosyası var. Bu komut dosyasını çalıştırdığınızda, İzleme KİMLİĞİ çıktı (genellikle @ID=2); bunu bir yere not edin.

  4. Bir izleme dosyası (.Türk Kızılayı) (izleme max dosya boyutu ulaşan nedeniyle tamamlanmış veya çalışan izleme kullanarak durdurdu

    EXEC, 0 ID @sp_trace_setstatus
    EXEC, 2 ID @sp_trace_setstatus

Profiler iz giriş yük veya ClearTrace (çok kullanışlı) kullanın ya da öylesine gibi: bir tabloya yükleyebilirsiniz

SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)

Sonra toplamak için bir sorgu bu gibi verileri çalıştırabilirsiniz:

SELECT COUNT(*) AS TotalExecutions, 
    EventClass, CAST(TextData as nvarchar(2000))
 ,SUM(Duration) AS DurationTotal
 ,SUM(CPU) AS CPUTotal
 ,SUM(Reads) AS ReadsTotal
 ,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC

Pahalı sorgular tanımladıktan sonra, oluşturmak ve gerçek yürütme planları inceleyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ipsy

    ipsy

    1 EKİM 2012
  • Rootjunky.com

    Rootjunky.co

    22 EKİM 2011
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006