Apa itu "Logout Audit" di SQL Server Profiler?

93

Saya menjalankan impor data (menggunakan C # / Linq), dan tentu saja saya mencoba mengoptimalkan kueri saya sebanyak mungkin. Untuk tujuan ini saya menjalankan pelacakan di DB menggunakan SQL Server Profiler, dengan jejak saya difilter oleh nama login SQL saya (ini adalah nama yang secara unik dapat dikaitkan dengan proses impor data saya).

Anehnya, sebagian besar pernyataan SQL saya sangat cepat :) - sangat sedikit kueri yang bahkan melampaui tanda 1ms. Tetapi di antara semua pertanyaan saya terdapat beberapa baris di mana Kelas Peristiwa adalah "Login Audit" atau "Logout Audit" - dan durasi "Logout Audit" dapat mencapai satu menit!

Apakah ini ada hubungannya dengan fakta bahwa saya menggunakan transaksi dalam impor saya? Jika demikian, adakah cara untuk menemukan kueri mana yang paling berpengaruh sehingga saya dapat membersihkannya?

Shaul Behr
sumber

Jawaban:

83

Jika saya tidak salah ingat, durasi Logout Audit adalah jumlah waktu koneksi dibuka. Misalnya tidak ada hubungannya dengan kecepatan perintah - hanya jumlah waktu login 'login'.

Ini
sumber
9
Menarik, terima kasih! Tapi mengapa jumlah pembacaan begitu tinggi (~ 400.000) ketika jumlah pembacaan untuk query antara "login" dan "logout" hanya 56?
Shaul Behr
Ini adalah jumlah md dari login hingga logout. Bukan jumlah sebenarnya yang digunakan kueri dalam koneksi. 400 000ms adalah sekitar 7 menit. Lihat CPU, baca dan tulis kolom untuk mencoba dan menemukan kueri yang menggunakan CPU dan / atau penggunaan disk tinggi - keduanya mematikan kinerja.
Thies
Maaf, maksud Anda Readstanggapan terhadap pengukuran waktu?
Johnny_D
1
Nilai logout "Reads" tampaknya sangat tinggi pada saya, mengingat hanya ada satu operasi dengan 3 pembacaan yang tercantum di antaranya dan login.
Triynko
1
Perlu dicatat bahwa file Reads kolom tidak mewakili baris yang dikembalikan oleh kueri tetapi # dari disk logis terbaca. Kueri yang bahkan tidak mengembalikan apa pun dapat memindai seluruh tabel berisi 1 juta rekaman untuk mencari tidak ada hasil yang akan menghasilkan # pembacaan yang sangat besar. Jadi # pembacaan tidak benar-benar berkorelasi secara alami dengan # kueri.
Laju
12

Peristiwa Login / Logout terkait dengan pengaturan / penghancuran. IIRC waktu adalah 'telah masuk untuk waktu' sebagai lawan dari durasi pemrosesan seperti dengan peristiwa log lainnya.

Secara umum, seseorang menyembunyikan acara ini kecuali Anda mencurigai ada masalah dengan manajemen kumpulan koneksi, dll.

Waktu mentah untuk batch harus cukup untuk mendiagnosis waktu yang dilakukan aktivitas aktual termasuk dampak dari setiap transaksi, dll.

Ruben Bartelink
sumber
Apakah mungkin untuk memeriksa "pengaturan / penghancuran" itu secara lebih rinci? Silakan lihat pertanyaan terkait berikut: stackoverflow.com/questions/44920375/…
Stefan
3

Kelas peristiwa Logout Audit menunjukkan bahwa pengguna telah keluar dari (log off) Microsoft SQL Server. Acara di kelas ini dipicu oleh koneksi baru atau oleh koneksi yang digunakan kembali dari kumpulan koneksi.

ini adalah total waktu koneksi login, termasuk waktu idle, jadi itu tidak menunjukkan masalah kinerja. Juga membuat profil login / logout sangat tidak mungkin menyebabkan masalah performa. Anda akan lebih baik mencari kueri yang berkinerja buruk, mungkin kueri yang berjalan lama.

Untuk info lebih lanjut saya sarankan https://msdn.microsoft.com/en-us/library/ms175827.aspx :)

Michele Caggiano
sumber
1
Apakah Anda yakin peristiwa Logout Audit dijalankan saat sambungan digunakan kembali dari kumpulan sambungan? Saya pikir kumpulan koneksi adalah contoh alasan mengapa Anda mungkin melihat durasi Logout Audit yang tinggi, karena koneksi terbuka tetapi menganggur untuk sebagian besar hidupnya,
Adam Goodwin
2

Juga perlu diperhatikan karena dalam jawaban ini bahwa Login / Logout Audit mungkin hanya berarti koneksi sedang digunakan kembali dari / dikembalikan ke kumpulan koneksi.

Rory
sumber