メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

ステップ 2: システムパフォーマンスをテストしてベースラインを確定する

テーブルのチューニング前と後にシステムパフォーマンスをテストしたら、以下の詳細を記録します。

  • ロード時間

  • ストレージ使用量

  • クエリパフォーマンス

このチュートリアルの例は、4 ノード構成の dw2.large クラスターの使用に基づいています。結果は、同じクラスター設定を使用している場合でも、異なったものになります。システムパフォーマンスは、多くの要因から影響を受け、システムによって異なるためです。

以下のベンチマークの表を使用して結果を記録します。

ベンチマーク タグを
ロード時間 (5 テーブル)
ストレージ使用量
LINEORDER
PART
CUSTOMER
DWDATE
SUPPLIER
合計ストレージ
クエリ実行時間
Query 1
Query 2
Query 3
合計実行時間

システムパフォーマンスをテストしてベースラインを確定するには

  1. 5 つのすべてのテーブルの累積的なロード時間を記録し、ベンチマークの表の「前」列に入力します。

    これは、前のステップで記録した値です。

  2. ストレージ使用量を記録します。

    STV_BLOCKLIST テーブルに対してクエリを実行することで、各テーブルに使用される 1 MB ディスクブロックの数を調べて、結果をベンチマークの表に記録します。

    Copy
    select stv_tbl_perm.name as table, count(*) as mb from stv_blocklist, stv_tbl_perm where stv_blocklist.tbl = stv_tbl_perm.id and stv_blocklist.slice = stv_tbl_perm.slice and stv_tbl_perm.name in ('lineorder','part','customer','dwdate','supplier') group by stv_tbl_perm.name order by 1 asc;

    結果は以下のようになります。

    Copy
    table | mb ----------+------ customer | 384 dwdate | 160 lineorder | 51024 part | 200 supplier | 152
  3. クエリパフォーマンスをテストします。

    クエリを初めて実行すると、そのコードは Amazon Redshift によってコンパイルされて、コンピューティングノードに送信されます。クエリの実行時間を比較するときは、最初にクエリを実行するときの結果を使用しないでください。その代わり、各クエリの 2 回目の実行時間を比較します。詳細については、「クエリパフォーマンスに影響を与える要因」を参照してください。

    コンパイル時間を排除するために、以下のクエリは 2 回実行します。各クエリについて 2 回目の時間をベンチマークの表に記録します。

    Copy
    -- Query 1 -- Restrictions on only one dimension. select sum(lo_extendedprice*lo_discount) as revenue from lineorder, dwdate where lo_orderdate = d_datekey and d_year = 1997 and lo_discount between 1 and 3 and lo_quantity < 24; -- Query 2 -- Restrictions on two dimensions select sum(lo_revenue), d_year, p_brand1 from lineorder, dwdate, part, supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_category = 'MFGR#12' and s_region = 'AMERICA' group by d_year, p_brand1 order by d_year, p_brand1; -- Query 3 -- Drill down in time to just one month select c_city, s_city, d_year, sum(lo_revenue) as revenue from customer, lineorder, supplier, dwdate where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_orderdate = d_datekey and (c_city='UNITED KI1' or c_city='UNITED KI5') and (s_city='UNITED KI1' or s_city='UNITED KI5') and d_yearmonth = 'Dec1997' group by c_city, s_city, d_year order by d_year asc, revenue desc;

    2 回目の時間の結果は以下のようになります。

    Copy
    SELECT executed successfully Execution time: 6.97s (Statement 1 of 3 finished) SELECT executed successfully Execution time: 12.81s (Statement 2 of 3 finished) SELECT executed successfully Execution time: 13.39s (Statement 3 of 3 finished) Script execution finished Total script execution time: 33.17s

以下のベンチマークの表に示しているのは、このチュートリアルで使用したクラスターの結果の例です。

ベンチマーク タグを
ロード時間 (5 テーブル) 10 分 23 秒
ストレージ使用量
LINEORDER 51024
PART 200
CUSTOMER 384
DWDATE 160
SUPPLIER 152
合計ストレージ 51920
クエリ実行時間
Query 1 6.97
Query 2 12.81
Query 3 13.39
合計実行時間 33.17

次のステップ

ステップ 3: ソートキーを選択する