shiichan

Aurora DSQL、待ち時間の犯人 SQL が一目でわかるようになったよ!CloudWatch Database Insights に対応!

やっほー、しぃちゃんだよ!今日は AWS What's New から、Aurora DSQL を使っている人にうれしいアップデートを紹介するよ。

AWS What's New aws.amazon.com

なにが発表されたの?

AWS What's New に、Amazon Aurora DSQL が Amazon CloudWatch Database Insights に対応したというお知らせが載ったの。クラスタ内のアクティブなセッションについて、サンプリングされた待機状態(wait state)と、正規化された SQL 文を、ステートメント単位・クラスタレベルでまとめて確認できるようになったんだって。クラスタの性能問題の診断や、どのクエリが一番リソースを食っているかの特定に使えるよ。

今までどうだったの?

Aurora DSQL には元々「DASH(DSQL Active Session History)」という仕組みが入っていて、クラスタ内のアクティブなセッションを毎秒サンプリングし、1 分ごとに集計したデータを CloudWatch の OTel メトリクスとして送っていたの。DASH 自体はクラスタを作った瞬間からデフォルトで有効になっているんだけど、そのデータを直感的に眺めたり、「どの SQL 文が原因で待ちが発生しているか」をパッと確認したりするには、Amazon RDS や Aurora(非 DSQL)でおなじみの CloudWatch Database Insights との連携が必要だったんだよね。今回、その Database Insights が Aurora DSQL でも正式に使えるようになったの。

これで何が変わるの?

Database Insights を開くと、上のペインに待機イベント別のデータベース負荷(Average Active Sessions の時系列)が、下のペインにその時間帯で一番アクティブだった SQL 文が並ぶよ。RDS や Aurora を触ったことがある人にはおなじみの画面なんだって。

Aurora DSQL はサーバーレスで弾力的にスケールするから「Max vCPU」の表示はないの。その代わり、待機イベントの比率の変化を見て健全性を判断する、という DSQL らしい見方をすることになるよ。たとえば SequentialScanRead(範囲読み取り)の割合が急に増えて CommitOnCpu の割合が減っていたら、アプリやクエリプランの変更でスキャンに時間を取られすぎている合図、みたいな読み方ができるんだって。

対応内容はこんな感じだよ。

  • メトリクスは 1 分間隔でキャプチャされ、デフォルトで有効・追加費用なし
  • Aurora DSQL が使えるすべての AWS リージョンで利用可能
  • 同じ DASH データは CloudWatch PromQL でも直接クエリできる
  • Aurora DSQL system diagnostics AI skill を使えば、AI エージェントに性能チェックを頼むこともできる

深く潜ってみよう

DASH はアクティブなセッションを毎秒サンプリングしていて、「CPU を使っている」「ストレージ待ちやコミット待ちでブロックされている」「トランザクション中でアプリからの次の指示を待っている」のどれかに当てはまるセッションを対象にしているの。サンプルには実行中だった SQL テキストの先頭 256 文字も記録されるから、「何が」「何を待っていたか」がセットでわかる仕組みだよ。データは 15 か月保持されるので、傾向分析やキャパシティプランニング、たまにしか起きない問題の調査にも使えるの。

DSQL の待機イベントは、コミュニティ版 PostgreSQL(PostgreSQL 18 で 273 種類)に比べるとかなり少ないよ。DSQL のクエリプロセッサはラッチやデータロック、IPC を管理する必要がないから、OnCpu(CPU 実行中)、ClientRead/ClientWrite(アプリとの通信待ち)、Commit(コミット待ち)、SequentialScanRead/ScatteredBatchRead(ストレージからの読み取り)といった、シンプルな一覧になっているんだって。

PromQL 派の人向けには、CloudWatch Query Studio から直接クエリを投げる方法も紹介されていたよ。たとえば「待機イベント別の平均アクティブセッション数」や「平均アクティブセッション数トップ 5 のクエリ」を、topk() を使った PromQL で取り出せるの。

さらに、AWS の Agent Plugins に含まれる databases-on-aws プラグインを使うと、「us-east-1 の DSQL クラスタの性能をチェックして、Markdown レポートを書いて」のようにエージェントへ頼むだけで、直近 1 時間・前日同時刻・先週同時刻といったベースラインと比較したレポートを作ってくれるんだって。怪しいクエリが見つかったときは、そのクエリに絞ったより詳しい診断まで自動で進めてくれるみたいだよ。

まとめ

  • Amazon Aurora DSQL が Amazon CloudWatch Database Insights に対応して、待機状態と SQL 文をステートメント単位・クラスタレベルで確認できるようになったよ
  • 元々あった DASH の集計データを、RDS や Aurora でおなじみの画面から直感的に見られるようになったのがポイント
  • 1 分間隔でキャプチャ、デフォルト有効、追加費用なし、対応する全リージョンで使えるよ
  • PromQL での直接クエリや、AI エージェントによる自動診断レポートにも同じデータを活用できるの
  • Aurora DSQL を運用していて「どのクエリが遅さの原因かパッと知りたい」人には、今日からすぐ試せるうれしいアップデートだよ!