Oracle Databaseを使用しているお客様がSQL Serverを検討する際に気にされる点がいくつかありますが、その一つにSQLによる性能劣化があります。
Oracle DatabaseではStatspackやAWRレポートでDBの稼働統計を取得し、SQLの性能調査を行うことができます。
SQL Serverでは、「拡張イベント」 を使用することで上記とほぼ同様のことが行えます。
本記事では拡張イベントの概要について記載します。
拡張イベントとは
SQL Server内で発生したイベント情報や、それに関連する情報を記録することができる機能です。
MS公式ドキュメントでは以下のように記載されています。
拡張イベント アーキテクチャを使用すると、ユーザーは、SQL Server、Azure SQL Database、Azure SQL Managed >Instanceのパフォーマンスの問題のトラブルシューティングや特定に必要なデータをできるだけ多くまたは少なく収集できます。★
拡張イベントが使用できる前は、SQLトレースやSQL Server Profilerという機能があったようですが、それらは非推奨となっているようなので拡張イベントを使用するようにしましょう。
拡張イベントで設定する項目
イベントを選択
例)
SQLの情報を取得する
ストアドプロシージャの情報を取得する
バッチ処理の情報を取得する
選択したイベントから取得する情報を指定
例)
SQLの全文
CPU実行時間
物理読み込み量
取得する情報のフィルタリング
例)
実行時間が10秒以上
上記で設定した情報はリアルタイムで確認することも可能ですが、xelファイルとして作成してある時点の性能状態と比較するといったことも可能です。
参照サイト
■CREATE EVENT SESSION (Transact-SQL)
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/create-event-session-transact-sql?view=sql-server-ver16
■SQL:StmtCompleted イベント クラス
https://learn.microsoft.com/ja-jp/sql/relational-databases/event-classes/sql-stmtcompleted-event-class?view=sql-server-ver16