はじめに
みなさんは RDS/Aurora に高い負荷がかかったとき、どのように調査をしていますか?
AWSには CloudWatch Database Insights という DB の状態を詳しく調べられる便利な機能があります。
本記事ではまず Database Insights とは何か、Database Insights にはどのような機能があるかについてご紹介します。その上で実際にアラートが発生したシナリオを例に、Database Insights を使った調査方法と対応の流れをご紹介します。
Database Insights とは
Database Insights とは RDS/Aurora の状態をモニタリングする機能です。これまで RDS には Performance Insights という機能がありましたが、2026年6月30日にサポート終了予定になりました。Performance Insights の後継機能として Database Insights が登場しました。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PerfInsights.html
Database Insights の主な機能
Database Insights にはスタンダードモードとアドバンストモードの 2 種類のモードがあります。スタンダードモードは無料で利用できますが、アドバンストモードは有料で、スタンダードモードに加えてより高度な機能を利用できます。以下のサイトから引用して、それぞれのモードで利用できる機能をご紹介します。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Database-Insights.html
スタンダードモード
スタンダードモードには、以下の機能があります。
- DB Load の上位の寄与要因をディメンション別で分析する
- 最大 7 日間の保持期間を持つデータベースメトリクスにクエリ、グラフ、アラーム設定をする
- きめ細かなアクセスコントロールポリシーを定義し、SQL テキストなどの機密性の高いディメンションへのアクセス権を制限する
アドバンストモード
アドバンストモードには、スタンダードモードに加えて以下の機能を利用できます。
- 実行中のプロセスごとに詳細なメトリクスを使用して、データベースで発生しているオペレーティングシステムのプロセスを分析する
- フリート全体のモニタリングビューを作成して保存し、何百ものデータベースの健全性を評価する
- 15 ヶ月の保持期間とガイド付き UX の環境で SQL ロックを分析する
- 15 か月間の保持とガイド付き UX の環境で SQL 実行プランを分析する
- クエリごとの統計を視覚化する
- 遅い SQL クエリを分析する
- CloudWatch Application Signals を使用して通話サービスを表示する
- メトリクス、ログ、イベント、アプリケーションを含め、すべてのデータベーステレメトリの統合ダッシュボードを表示する
- Performance Insights のカウンターメトリクスを CloudWatch に自動的にインポートする
- CloudWatch で Amazon RDS イベントを表示する
- オンデマンド分析を使用し、選択した期間のデータベースのパフォーマンスを分析する
スタンダードモードとアドバンストモードではデータの保持期間が異なります。データを7日間保持すれば良いケースでは無料のスタンダードモードがあれば充分です。7日間を超えるデータ保持が必要な場合は有料のアドバンストモードを利用する必要があります。
Database Insights を使った実際の調査、対応の流れ
ここでは、「とあるシステムの検索処理が重い」というシナリオを例に、Database Insights の使い方をご紹介します。なお、以下の手順はすべてスタンダードモードで利用できます。
CPU使用率の確認
まずはCPU使用率が何%になっているかを確認します。
1.「Aurora and RDS」を開き、「データベース」をクリックします。

2.確認したいインスタンスをクリックします。

3.「モニタリング」をクリックします。

4.「メトリクスで検索」に「cpu」と入力し、CPUUtilization のグラフを表示します。

5.カレンダーアイコン→「絶対値」 をクリックして表示したい期間を設定し、「適用」をクリックします。

6.CPUUtilization のグラフからCPU使用率を確認します。

負荷がかかっている上位のSQLの確認
CPUの使用率が高い期間が特定できたら、Database Insightsを使って原因となるSQLを特定します。
1.CloudWatch を開き、「インフラストラクチャモニタリング」→「データベースインサイト」をクリックします。

2.確認したいインスタンスをクリックします。

3.カレンダーアイコン→「絶対値」をクリックして表示したい期間を設定し、「適用」をクリックします。

4.「上位のSQL」の一覧からラジオボタンを選択します。

5.画面を下のほうまでスクロールし、「SQLテキスト」からSQLを確認します。テーブル名やカラム名などを確認して原因となる機能を特定します。

対応方法の検討
該当のSQLの内容を確認します。サーバーへの影響を考慮し、必要な場合はSQLの実行プロセスを終了させます。ここではMySQLの例で終了手順を紹介します。
1.MySQLに接続します。(mysqlコマンドやDBツール等何でも構いません)
2.実行中のSQLの一覧を確認します。「Info」の項目からSQLを確認できます。
show full processlist;
3.プロセスを終了させます。(「123」の部分には終了させたいプロセスの「Id」を入力してください)
kill 123;
https://www.wakuwakubank.com/posts/344-mysql-kill-query/
暫定対応としてはこれで完了となります。恒久対応としては SQL を見直したりプログラムを修正するといったアクションが必要になってきます。
まとめ
今回は Database Insights についてご紹介しました。データベースがどの時間帯にどのくらい負荷がかかっていて、どんな SQL の実行に時間がかかっているのかを画面操作で分かりやすく調べることができます。ぜひみなさんもシステムの保守作業で Database Insights を活用してみてください!