Amazon RDSのPerformance Insightsにて、Oracleデータベースの実行計画を確認できるようになりました

2022.01.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Oracleデータベースでの実行計画がPerformance Insightsで確認出来るようになったようです。最高なのでは。

以下はAWSブログから引用した文章です。

トップSQLを確認すると、二つのパターンのクエリが確認できます。一つはLIKE句を使ったクエリ、もう一つはBETWEEN句を使っているクエリです。明らかにLIKE句のクエリの待機イベントが大きくなっている為こちらのクエリが原因となっていると考えられます。ここで、パフォーマンスチューニングに慣れている方はこのクエリの実行計画を確認すると思います。現在(2021年11月)Performance Insights上では実行計画を確認することができませんので、Performance Insights上で確認できる情報を頼りにパフォーマンスチューニングを進めます。

初めてのPerformance Insights入門 – その2 | Amazon Web Services ブログ

今後はPerformance Insight上ですぐに実行計画ベースで改善点を検討することが出来ますね。
早速試してみましょう。

Planタブから実行計画を確認

特に機能の有効化などは不要で、Performance Insightを使ったRDS for Oracleインスタンスであれば、すぐに利用が可能です。

マネジメントコンソール上では「SQLの詳細」タブに加えて「Plan」タブが追加されおり、こちらで実行計画の情報が確認出来るようになっています。

SQLの詳細情報とあわせて、Performance Insightにて設定された日数保存されます。

同じクエリで実行計画を比較できる

また、改善前後での実行計画を比較することが出来ます。

今回は適当に結合させただけのクエリですが、インデックスの作成前後で同一クエリを比較してみました。

SQL> select count(*) from test a inner join test b on a.customeid = b.hogeid;

  COUNT(*)
----------
  10000842

Elapsed: 00:00:01.54

SQL> CREATE INDEX test_idx ON test(customeid);

Index created.

Elapsed: 00:00:00.87

SQL> select count(*) from test a inner join test b on a.customeid = b.hogeid;

  COUNT(*)
----------
  10000842

Elapsed: 00:00:00.94

同一クエリなのでグルーピングされます。

親項目を選択し、ターゲットとなる実行計画が複数存在する場合に並べて比較することが出来ます。

この例ではオペレーションやコストなどでどのように改善されているかのより詳細な情報が確認出来るようになりましたね。

さいごに

本日はPerformance Insightsで追加された実行計画の確認機能を紹介しました。

パフォーマンスチューニングの最初の段階でPerfomance Insightをまず眺めるシーンは多いと思うのですが、そのタイミングで問題のあるクエリが見つかったときにそのまま実行計画まで見れるのはとても良いですね。
本番環境の調査であらためて実行計画の取得調査を行う必要がなく、履歴からすぐ確認出来るということですね。

本日時点ではRDS for Oracleのみで利用可能なようですが、他のエンジンでも利用可能になると嬉しいですね。