こんにちは!中の人です。
前回の『Amazon Redshift編~パフォーマンスチューニング sortkey編~』『Amazon Redshift編~パフォーマンスチューニング distkey編~』のレシピでは、Redshiftのパフォーマンスチューニングとしてsortkey/distkeyの設定方法と、設定によるパフォーマンスの違いを紹介しました。
今回は『Amazon Redshift編~パフォーマンスチューニング 圧縮編~』と題して、Redshiftに対して圧縮を設定した場合のパフォーマンスについてお話したいと思います。
それではさっそく、作業をおこなっていきましょう!
圧縮を設定したRedshiftのパフォーマンス比較
1 |
select avg(column01) from SAMPLE_TABLE where column01>5000 and date like '13-06%' |
上記のクエリで、下記の3つの内容を圧縮(compression)に設定して速度を比較してみます。
設定は
1 |
ANALYZE compression [テーブル名]; |
での解析結果にしたがってみたいと思います。
「ANALYZE」についての補足です。
一定以上の件数が必要となりますが、ANALYZEにより最適な圧縮方法を確認することができます。
上記のように
1 |
ANALYZE compression [テーブル名]; |
とテーブル全体に対して確認する方法と
1 |
ANALYZE compression [テーブル名] ([カラム名], [カラム名]); |
の様に指定することができます。
なお、
・ 最適なsortkey/distが設定されているテーブル
・ 何も設定していないテーブル
に対して行なっております。
同じテーブルに対して解析を行なっても、keyの設定の有り/無しによって解析結果が異なりました。
例えば、
指定なし | 指定あり | |
---|---|---|
id (integer) | runlength | bytedict |
column01 (integer) | runlength | delta |
date (varchar) | runlength | bytedict |
の様にフォーマットが異なります。
dateがvarcharなのはサンプルデータのフォーマットが通常の日付と若干異なっているためです。
圧縮の設定方法ですが、以下の様に各カラムに対して設定します。
1 2 3 4 5 6 |
create table SAMPLE_TABLE ( id int, name varchar(200) encode bytedict ・・・ date timestamp ); |
■ 約4000万行(10回平均)
≪ XLノード ≫
指定なし | 圧縮設定 | |
---|---|---|
平均実行速度(秒) | 7.71 | 6.81 |
最高実行速度(秒) | 6.37 | 6.5 |
最低実行速度(秒) | 10.57 | 7.95 |
また、前回1番パフォーマンスが良かった「column01とdate」に対してsortkey, 「id」に対してdistkeyを追加した場合の結果です。
指定なし | 圧縮設定 | |
---|---|---|
平均実行速度(秒) | 5.59 | 7.02 |
最高実行速度(秒) | 5.40 | 6.55 |
最低実行速度(秒) | 6.15 | 7.95 |
いかがでしたでしょうか?
特に何も指定しない場合には圧縮を指定することでパフォーマンスの改善が確認できました。逆にkey設定がある場合は指定の仕方によってはパフォーマンスが落ちることも確認されました。
次回は『Amazon Redshift編~パフォーマンスチューニング まとめ編~』と題して、sortkey / distkey / compression typeでのパフォーマンスについてのまとめをしたいと思います。お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————