Apakah SQL profiler mempengaruhi kinerja server?

11

Saya menghadapi masalah ketika sql server 2008 gagal karena beban tinggi. Saya perlu menemukan case load dan perlu mengoptimalkan kode sehingga dapat menangani beban. Saya telah menemukan di internet bahwa profiler SQL dapat digunakan untuk melacak interaksi basis data yang kemudian dapat dianalisis untuk menemukan titik yang tepat di mana masalah terjadi. Saya juga menemukan bagaimana kita dapat memulai profiler sql. Tapi sekarang pertanyaan saya adalah bahwa dengan memulai sql profiler apakah saya akan mempengaruhi kinerja server?

Jon Seigel
sumber
5
Iya. Tergantung bagaimana dan di mana Anda menjalankannya. Dilakukan dengan cara yang benar dapat menjadi beban tambahan beberapa persen saja.
Mitch Wheat
3
Acara yang diperpanjang dapat menjadi pilihan yang lebih ringan.
Martin Smith

Jawaban:

10

SQL Server Profiler adalah GUI yang menggunakan SQL Server Trace melalui sisi klien. Karena sifat ini, ya Anda berpotensi melihat dampak kinerja yang ringan hingga parah tergantung pada lingkungan.

SQL Server Profiler terutama cocok untuk melihat sekilas apa yang terjadi pada server (asalkan server database dapat menangani latensi tambahan). Ini tidak dimaksudkan untuk dijalankan dalam jangka waktu yang lama. Untuk jejak yang lebih lama, gunakan jejak sisi server atau Peristiwa Diperpanjang.

Thomas Stringer
sumber
+1, bahkan jejak profiler yang sangat pendek, tergantung pada banyak faktor, dapat melumpuhkan server.
Aaron Bertrand
3

Jika Anda menggunakan penelusuran sisi server , dampak pada kinerja dapat diminimalkan.

David Brabant
sumber
Server dan database saya diinstal pada mesin yang sama. Sekarang jika saya memulai sql profiler melalui "Microsoft SQL management studio -> Tools-> SQL profiler" maka berapa banyak penurunan kinerja yang dapat saya harapkan dan didasarkan pada faktor apa?
Ini didasarkan pada seberapa sibuk server Anda, berapa banyak peristiwa dan berapa banyak kolom jejak Anda terdiri dari, dan penyaringan Anda. Pemfilteran dapat mempengaruhi di kedua arah - dengan satu cara dapat mengurangi jumlah baris yang dikembalikan ke UI (bagian yang benar-benar membuat profiler lebih sakit daripada jejak sisi server), tetapi di sisi lain jika Anda memiliki pilihan yang buruk filter (misalnya textdata LIKE '%foo%') dapat memiliki efek sebaliknya. Ada terlalu banyak variabel untuk memberikan beberapa harapan ajaib, Anda hanya perlu mencobanya. Anda benar-benar harus menggunakan jejak sisi server.
Aaron Bertrand
Coba tautan ini jika Anda tidak dapat mengakses aslinya.
Marc Lopez
3

Segala sesuatu yang dikatakan oleh poster sebelumnya adalah benar. Profiler adalah aplikasi yang, pada satu titik, menggunakan DMO dan sekarang menggunakan SMO untuk menangkap jejak acara. Ini menambahkan sejumlah besar overhead dibandingkan dengan hanya menggunakan jejak sisi server.

SMO adalah API yang menambahkan "tingkat" tambahan ke proses penelusuran bersama dengan aplikasi klien, Profiler. Jejak sisi server akan membaca jejak peristiwa langsung dari antrian transaksi, sehingga overhead yang dihasilkan dapat diabaikan.

Saya sudah bisa menjalankan jejak sisi server di lingkungan SQL Server yang memproses 10.000+ transaksi per detik. Menggunakan Profiler di lingkungan yang sama akan membuat instance database bertekuk lutut. Dalam lingkungan produksi apa pun, jika Anda perlu melacak aktivitas basis data selalu gunakan jejak sisi server. Profiler akan membunuh instance database.

Christopher W. Szabo
sumber
2

Ya, SQL Server Profiler tidak memengaruhi kinerja.

Saat Anda melacak menggunakan GUI, semua acara diproses dan disaring secara serempak, sehingga faktor-faktor seperti beban server, latensi jaringan, peristiwa mana yang Anda kumpulkan, dan bahkan di mana peristiwa yang dikumpulkan disimpan, semua berkontribusi pada overhead.

Seperti jawaban lain yang disarankan, lebih baik menggunakan jejak sisi server daripada GUI. Namun, metode ini sudah usang , dan Peristiwa Diperpanjang harus digunakan sebagai gantinya. (Catatan: meskipun menggunakan Peristiwa Diperpanjang, yang lebih ringan daripada jejak, masih mungkin untuk menambahkan jumlah beban yang tidak diinginkan ke server - lihat daftar di paragraf kedua saya untuk memikirkan cara meminimalkan overhead saat menyiapkan acara sidang.)

Dalam kasus server yang sarat muatan, Anda harus sangat berhati-hati tentang informasi yang dikumpulkan, karena proses pengukuran itu sendiri dapat memengaruhi masalah yang sedang diselidiki.

Jon Seigel
sumber
0

SQL Server Profiler bekerja dalam dua langkah: pertama Anda kirim untuk mencatat semua kueri. Kemudian Anda menjalankan beberapa transaksi khas (atau hanya membiarkannya masuk terhadap produksi). Ini menciptakan "beban uji". Kemudian Anda melakukan profiling aktual (analisis) menggunakan beban uji.

Penebangannya tidak terlalu mahal, terutama dibandingkan dengan biaya permintaan itu sendiri.

egrunin
sumber
Server dan database saya diinstal pada mesin yang sama. Sekarang jika saya memulai sql profiler melalui "Microsoft SQL management studio -> Tools-> SQL profiler" maka berapa banyak penurunan kinerja yang dapat saya harapkan dan didasarkan pada faktor apa?