Saya ingin mengatur sistem audit trail pada database saya untuk memonitor UPDATE/INSERT
pernyataan pada tabel tertentu dengan aktivitas yang sangat tinggi. Saya memiliki dua opsi di depan saya: menggunakan sistem Audit bawaan SQL Server atau menggunakan Extended Events.
Sebagai SQL Server Audit secara internal menggunakan Extended Events, saya berasumsi akan ada semacam overhead ketika saya menggunakan Audit daripada Extended Events secara langsung.
Apakah ada cara saya bisa melakukan beberapa pengujian untuk menganalisis sistem mana yang lebih berdampak pada server? Jika saya bisa tahu apa yang sebenarnya terjadi ketika sesi XE dibuat, itu akan membantu saya dalam menganalisis dampak pada server.
Kami mempertimbangkan pemicu dan mengabaikan opsi itu karena overhead. Tetapi itu baru saja diputuskan berdasarkan informasi dari Internet.
sumber
Jawaban:
Saya membuat rig uji sederhana untuk mengadili SQL Server Audit terhadap pemicu, dan kemungkinan opsi lainnya. Dalam pengujian saya memasukkan 1 juta baris ke dalam tabel saya mendapat 52, 67 dan 159 detik untuk baseline, SQL Audit dan pemicu saya masing-masing:
Sekarang ini tidak terlalu ilmiah tetapi berpotensi menawarkan Anda satu cara untuk membandingkan pendekatan. Lihat skripnya, lihat apakah itu bisa berguna bagi Anda:
Sementara opsi pemicu tidak bekerja dengan baik di sini, kode pemicu saya dapat disederhanakan tergantung pada apa yang ingin Anda tangkap dan itu memungkinkan Anda akses ke nilai-nilai lama dan baru dalam format yang cukup dapat digunakan yang SQL Audit tidak. Saya telah menggunakan teknik ini untuk tabel konfigurasi aktivitas yang lebih rendah dan itu bekerja dengan cukup baik. Bergantung pada apa yang ingin Anda tangkap, Anda juga dapat mempertimbangkan Ubah Pengambilan Data .
Biarkan saya tahu bagaimana Anda melanjutkan cobaan Anda. Semoga berhasil.
sumber
Salah satu manfaat Audit yang terlintas dalam pikiran adalah bahwa ia akan secara otomatis merekam siapa yang menyalakan dan mematikannya, XE tidak akan melakukannya di luar kotak (meskipun Anda mungkin menemukan acara yang melacak berhenti / mulainya XE). Anda juga dapat menemukan bahwa keduanya menangkap data yang berbeda, tergantung pada apa yang Anda inginkan.
Mengenai melakukan beberapa pengujian, Anda harus memiliki cadangan basis data, menangkap jejak aplikasi yang sedang dimuat, dan kemudian mengembalikan salinan sambil melakukan replay / replay dengan audit / ganti dengan XE dan membandingkan data kinerja.
Data kinerja apa? Terserah kamu. Untuk beberapa ide - Linchi Shea melakukan perbandingan antara Audit dan Trace dengan berfokus pada Transaksi / detik, sementara Kehayias melakukan perbandingan antara Trace dan XE dengan berfokus pada batch / detik dan runtime replay keseluruhan.
Saya mendorong Anda untuk membaca keduanya dan komentar mereka karena Anda harus tahu bahwa apa pun yang Anda lakukan itu akan terbuka untuk interpretasi. Sulit mendapatkan apel untuk perbandingan apel. Juga, jejak / replay dapat gagal mensimulasikan memuat dengan benar - misalnya ketika aplikasi Anda melakukan banyak beban massal dari file disk yang tidak ada lagi.
Tetapi yang penting adalah Anda mencoba setidaknya satu hal, sehingga Anda dapat membenarkan keputusan Anda, dan juga blog tentang hal itu untuk kita semua.
sumber