AWSのRedshiftでクエリを実行して実行計画を取得するサンプルです。
目次
サンプル | Redshiftとは |
explainで実行計画を取得する | |
実行したSQLの実行計画を確認する | |
STL システムビューのstl_explainから実行計画を取得する |
Redshiftとは
- Redshiftは、フルマネージド型のデータウェアハウスサービスです。
- データウェアハウスとは、大量のデータを収集、保存、分析するためのデータベースです。
- PostgreSQLをベースに開発されています。
- TICKITと呼ばれるサンプルテーブルを使用します。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_sampledb.html
explainで実行計画を取得する
1.検索入力欄で「Redshift」と入力し、表示された「Redshift」をクリックします。
※画面右上のリージョンを確認します。例:東京 ap-northeast-1
2.画面左のクラスターをクリックし、「クエリエディタ」をクリックします。
3.データベースに接続し以下のSQLを実行します。
explain
select * from users
inner join SALES
on users.userid = SALES.SELLERID
explainは、実際にクエリを発行しません。(データは取得されません)
usersテーブルとsalesテーブルは、サンプルとして最初からあるテーブルです。データもあります。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_sampledb.html
4.画面下に実行計画が表示されます。Exportボタンからテキスト形式でダウンロードも可能です。
XN Hash Join DS_BCAST_INNER (cost=624.88..59988008006.76 rows=177707 width=176)
Hash Cond: ("outer".sellerid = "inner".userid)
-> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=64)
-> XN Hash (cost=499.90..499.90 rows=49990 width=112)
-> XN Seq Scan on users (cost=0.00..499.90 rows=49990 width=112)
実行したSQLの実行計画を確認する
1.クエリエディタで以下のSQLを実行します。
select * from users
inner join SALES
on users.userid = SALES.SELLERID
2.SQLの実行完了後、画面左にある「クエリとロード」をクリックします。
3.確認したいSQLのクエリの数値をクリックします。
4.クエリプランをクリックするとクエリプランの実際のステップを確認できます。
STL システムビューのstl_explainから実行計画を取得する
stl_explainからも実行計画を取得できます。
select * from stl_explain
where query = 451
whereのqueryの値は、クエリIDを指定します。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_STL_EXPLAIN.html
関連の記事