[アップデート] RDS for SQL Server でも Performance Insights 上で実行計画を確認できるようになりました

2024.04.24

いわさです。

RDS の Performance Insights を使うとデータベースパフォーマンス上のボトルネックを解析する際に役立てることが出来ます。
RDS for Oracle のみ、Performance Insights 画面で実行計画を参照することができることをご存知でしょうか。

ちょっと前にアップデート記事を書いたような記憶があったのですが、もう 2 年経ってました。なんと。
当時は、とても良いアップデートで他のエンジンにも来て欲しいなーと思っていたのですが、それから全くこの件のアップデートが無い状態でした。

しかし、今朝ついに RDS for SQL Server でも実行計画が確認できるようになるアップデートがアナウンスされました。

確認してみる

トップ SQL などのタブで「Plans count」フィールドが追加されています。
こちらで確認可能な実行計画が生成されているかをまず確認することが出来ます。
1 個以上のプランが表示されていれば利用可能です。

選択してみるとプランタブにクエリの実行計画が出力されます。
Oracle の場合はテキストでの確認でしたが、SQL Server の場合は階層化されています。

また、複数のプランが存在する場合は最大 2 つまでを選択し、比較することも可能です。
このあたりは Oracle と同じ使い勝手ですね。

SQLPLAN ファイルをダウンロード可能

表示している実行計画はファイルでダウンロードすることが可能です。

ダウンロードしたファイルは SSMS などで表示することが出来ます。
次は Azur Data Studio でプランファイルを開いた状態です。
使い慣れたクライアントを使ってより詳細な分析が可能です。

条件が不明だが、実行計画を利用出来ない場合がある

この機能を使うにあたっての前提条件は本日時点では公式ドキュメントで言及されていません。

しかし、私が今回検証を行った際に、プランの出力が確認出来ない場合がありました。
まず、全体を通して Performance Insights の通常のインサイトが確認できるようになってから、プランが確認できるようになるまで数分のタイムラグがあるようです。

その上で、いくつかの環境ではタイムラグに関係なく常にプランが確認出来ない場合がありました。
私が確認した際には Express Edition だと確認できないように思えました。
以下の複数環境で試したのですが、同じ操作を行った場合に Express Edition でのみ確認が出来ませんでした。

SQL Server バージョン エディション プラン確認
SQL Server 2019 Express Edition
SQL Server 2019 Web Edition
SQL Server 2019 Standard Edition
SQL Server 2022 Express Edition
SQL Server 2022 Standard Edition

インスタンスタイプや拡張モニタリング、バックアップなどのその他設定は特に関係なさそうです。
パラメータグループをデフォルトで作成しているので、パラメータ周りが関係している可能性もあると思います。

利用出来ない場合は、「0 個のプラン」ではなく一律で「-」という表示になります。
今後挙動が変更されたり、ドキュメントが更新される可能性もあると思いますが、本日時点で同じように試してうまく動かなかった方は、ぜひ別のエディションでも試してみてください。

さいごに

本日は RDS for SQL Server でも Performance Insights 上で実行計画を確認できるようになったので確認方法などを紹介しました。

タイムラグがあったり、利用出来ない条件があったりしそうですが、Performance Insights 上でボトルネック解析の延長で実行計画まで確認できるのはやはり良いですね。
MySQL や PostgreSQL でも似たような観点のアップデートが欲しいところです。