[新機能] Amazon Redshift Query Profilerを試してみました
AWS事業本部コンサルティング部の石川です。Amazon Redshiftは、クエリの可視性とトラブルシューティングを強化する 新機能「Query Profiler」 を発表しました。Amazon Redshift ServerlessとAmazon Redshift Provisionedの両方で、新機能であるQuery Profilerを試してみたので紹介します。
Query Profilerとは
Query Profilerは、AWSコンソール内でクエリの実行順序、実行計画、および統計情報をグラフィカルに表示し、システムテーブルやログを手動で分析することなく、クエリのパフォーマンスを簡単に監視、分析、トラブルシューティングすることが可能になります。
Query Profilerは、クエリの実行を視覚的に理解することで、パフォーマンスのボトルネックを特定しやすくなります。以下のようなクエリコンポーネントを分析できます。
- 子クエリ: クエリが複数の子クエリに分割されることがあり、これにはユーザークエリ、テンポラリテーブルクエリ、統計クエリなどがある
- ストリーム: コンピュートノードスライスに分配されたセグメントの集合
- セグメントとステップ: セグメントは並列処理単位であり、ステップはクエリ内の作業単位
補足: 子クエリ
子クエリとは、クエリの一部を指します。Amazon Redshiftでは、クエリを1つの大きなものとして処理するよりも、小さな子クエリに分割した方が効率的な場合があります。 プロファイラーでは、それぞれの子クエリの特性を確認できます。子クエリは、ストリームやその他のサブコンポーネントで構成されています。
Query Profilerを試す
利用方法
Amazon Redshift Serverlessの場合
- Redshift Serverless コンソールを開く
- ナビゲーション ペインの [モニタリング] で、 [クエリとデータベースの監視] を選択する
- ワークグループを選択する
- クエリとロードに表示されるクエリを選択する
プロビジョニングされたクラスタの場合
- Redshiftプロビジョニングクラスタダッシュボードからアクセス
- クラスターを選択
- [クエリのモニタリング] タブを選択します。
- クエリとロードで、[データベースに接続]を押して認証情報を入力して接続する
- クエリを選択します
クエリの詳細の確認
クエリを選択すると、[SQL]タブが表示され、実行したSQLを確認できます。
なお、[Related metrics]タブでは、クエリ毎のメトリクスを確認できます。
新機能「Query Profiler」
新機能「Query Profiler」は、クエリ詳細ページの[Query Profiler]タブにあります。
クエリ詳細ページ
クエリの統計情報と子クエリ(下図のChild queries)が表示されます。
子クエリページ
子クエリの実行計画やストリームが視覚的に表示されます。
Query Profilerの効果的なユースケース
Query Profilerを使用することで、クエリの分析から得られる示唆は多岐にわたります。このツールはクエリの実行計画を視覚的に表示し、パフォーマンスの最適化や問題解決に役立ちます。
実行速度の遅いクエリのトラブルシューティング
クエリの各ステップにかかる時間や処理されるデータ量を分析することで、どの部分がパフォーマンスのボトルネックになっているかを特定できます。これにより、最適化が必要な領域を明確にすることができます。
システムリソースの管理
クエリプランからストレージキャパシティーやCPU使用率なども確認できるため、システムリソースの最適な活用方法を見出すことができます。
クエリの書き換えと最適化
Query Profilerは、クエリがどのように実行されているか詳細に示すため、非効率なSQL文や不必要なデータスキャンを特定し、クエリを書き換える機会を提供します。これにより、クエリ速度が大幅に向上する可能性があります。
最後に
Query Profilerを使用することで、複雑なクエリの流れやそれぞれの所要時間を把握できることがわかりました。特に、大規模なデータセットを扱う際には、その効果が顕著です。視覚的なインターフェースは直感的で使いやすく、SQLコードや実行計画を詳細に確認できる点が非常に便利でした。
この新機能は、データベース管理者やデータアナリストにとって強力なツールとなるでしょう。Amazon Redshiftユーザーにはぜひ試していただきたい機能です。
参考文献