読者です 読者をやめる 読者になる 読者になる

SQL Server Audit と Profiler(Trace) のパフォーマンス差のメモ

第1回 関西DB勉強会 - 関西DB勉強会 | Doorkeeper
のディスカッションで Profiler と Audit どっちが重いのかと話題になったのでちょっと調べてみました。

といっても、自分で検証したわけでは無く blog と 資料ですが。
今回紹介する記事は 2008R2 当時のものです。2012/2014/2016 では変わっているかもしれません。

ひとつは
徹底検証シリーズ | SQL Server 2008 R2
コンプライアンス実現のためのガイドライン」に記載があります。
もうひとつは、
Linchi Shea : Performance impact: SQL2008 R2 audit and trace
です。

どちらも Profiler(Trace) より、Audit のほうがパフォーマンスへの影響は少ないように書かれています。

ちなみに Profiler(Trace) と書いているのは、Profiler の GUI ではなく、Trace イベントを使った方が負荷が少ないからです。
DO's&DONT's #1: やらない方がいいこと – 運用環境で、Profiler GUI を使用してトレースする - Microsoft SQL Server Japan Support Team Blog - Site Home - MSDN Blogs

開発中にちょっと見たい程度なら Profiler でも良いと思いますが、そうでないなら Trace イベントを使った方が良さげです。

2012 以降だと、Trace イベントより拡張イベントの方が良いのかな?
既存の SQL トレース スクリプトから拡張イベント セッションへの変換
SQL トレースのイベント クラスと等価な拡張イベントを確認する
検証してないのでどっちが良いのか分かりませんが、移行用のドキュメントがあるので拡張イベント推しなのかもしれませんね。
Profiler/Trace イベント/拡張イベント のオーバーヘッドを比較しているサイトもありました。
Measuring “Observer Overhead” of SQL Trace vs. Extended Events - SQLPerformance.com