it-swarm-id.com

Menggunakan SQL Profiler pada database yang sedang diproduksi

Sebagai pengembang, saya sering menggunakan SQL Profiler. Ini alat debugging yang baik, baik untuk melacak apa yang dilakukan kode saya dan untuk menganalisis masalah kinerja.

Tapi saya selalu menggunakannya di komputer saya pengembangan lingkungan, dan dengan cara yang sangat terkontrol.

  • Mulai aplikasi saya, dan masuk ke keadaan tertentu
  • Mulai jejak pada profiler
  • Lakukan urutan tindakan tertentu pada aplikasi saya
  • Hentikan jejak dan periksa hasilnya.

Dapatkah SQL Profiler secara praktis digunakan dalam lingkungan dalam produksi?

Kekhawatiran pertama saya adalah itu akan menurunkan kinerja.

Kekhawatiran kedua saya adalah bahwa, karena sedang dalam produksi, Anda tidak memicu tindakan yang menarik itu sendiri. Anda harus membiarkan profiler berjalan untuk waktu yang lama kemudian menganalisis hasilnya. Apakah hasil yang ditetapkan menjadi terlalu sulit? (Mengambil terlalu banyak ruang disk dan menjadi terlalu sulit untuk diminta).

Adakah yang menggunakan SQL Profiler dalam produksi?

28
Andrew Shepherd

Menggunakan Sql Server Profiler (alat GUI) untuk melacak server produksi bukanlah ide yang baik. Tapi itu tergantung pada beban. Gunakan penelusuran sql sisi-server (lihat sp_trace_XXX prosedur) sebagai ganti. Juga saya telah menemukan artikel:

Dampak Kinerja: Pelacakan Profiler vs. Pelacakan SQL Sisi Server ,

Mengotomatiskan Pelacakan Sisi Server di SQL Server

Hindari Menyebabkan Masalah dengan Profiler

mungkin itu akan tertarik dan bermanfaat.

Book Online mengatakan:

  • Jalankan Profiler dari jarak jauh, bukan langsung di server
  • Hindari memasukkan peristiwa yang sering terjadi (mis. Kunci: Diperoleh) kecuali benar-benar diperlukan
  • Hanya sertakan kelas acara yang diperlukan
  • Tentukan filter pembatas untuk mengurangi jumlah acara
  • Hindari data yang berlebihan (mis. SQL: BatchStarting dan SQL: BatchCompleted)
  • Hindari menjalankan jejak besar dengan Profiler; pertimbangkan SQL Trace sisi-server sebagai gantinya
  • Batasi ukuran file penelusuran sisi server dan kelola penggunaan ruang
19
garik

Saya menggunakan SQL Profiler terhadap produksi sepanjang waktu. Ketika dilakukan dengan benar (memfilter sehingga Anda mendapatkan kembali sejumlah kecil data) terhadap server, risikonya minimal. Menelusuri semuanya akan sia-sia.

21
mrdenny
  1. Ya, tindakan pemantauan akan membutuhkan beberapa sumber daya. Menjalankannya pada server yang kelebihan beban bisa membunuhnya.

  2. Anda akan benar-benar memonitor beban kehidupan nyata: tindakan Anda bisa hilang dalam kebisingan dari beban ini.

Terkadang kami menjalankannya pada produksi. Terutama dengan filter teks untuk kode tertentu, atau dengan filter CPU/durasi untuk menjebak pertanyaan yang berjalan lebih lama. Dan kami tidak mencoba menangkap rencana eksekusi XML atau semacamnya

Kuncinya adalah mengetahui apa yang Anda cari: kami tidak cenderung membiarkannya berjalan dan menjebak semuanya.

Dalam hal ini, jika Anda ingin melihat hasil dari beberapa tindakan dapat Anda lakukan di luar jam?

7
gbn

Profiler akan selalu memperkenalkan dampak kinerja.

Jika Anda menggunakan SQL Server 2008R2 + Anda dapat menggunakan acara yang diperpanjang. Ini memberikan banyak informasi yang Anda lihat di profiler dengan sebagian kecil dari hit kinerja.

Pengantar online buku http://technet.Microsoft.com/en-us/library/bb630354 (v = sql.105) .aspx

Fitur ini menerima pembaruan besar dalam SQL Server 2012 yang sekarang mencakup GUI di SSMS.

2
James Anderson