Amazon Redshift編~パフォーマンスチューニング 圧縮編~

こんにちは!中の人です。

前回の『Amazon Redshift編~パフォーマンスチューニング sortkey編~』『Amazon Redshift編~パフォーマンスチューニング distkey編~』のレシピでは、Redshiftのパフォーマンスチューニングとしてsortkey/distkeyの設定方法と、設定によるパフォーマンスの違いを紹介しました。

今回は『Amazon Redshift編~パフォーマンスチューニング 圧縮編~』と題して、Redshiftに対して圧縮を設定した場合のパフォーマンスについてお話したいと思います。

それではさっそく、作業をおこなっていきましょう!

圧縮を設定したRedshiftのパフォーマンス比較

上記のクエリで、下記の3つの内容を圧縮(compression)に設定して速度を比較してみます。

設定は

での解析結果にしたがってみたいと思います。

「ANALYZE」についての補足です。

一定以上の件数が必要となりますが、ANALYZEにより最適な圧縮方法を確認することができます。
上記のように

とテーブル全体に対して確認する方法と

の様に指定することができます。

なお、
・ 最適なsortkey/distが設定されているテーブル
・ 何も設定していないテーブル
に対して行なっております。

同じテーブルに対して解析を行なっても、keyの設定の有り/無しによって解析結果が異なりました。

例えば、

指定なし 指定あり
id (integer) runlength bytedict
column01 (integer) runlength delta
date (varchar) runlength bytedict

 
の様にフォーマットが異なります。
dateがvarcharなのはサンプルデータのフォーマットが通常の日付と若干異なっているためです。

圧縮の設定方法ですが、以下の様に各カラムに対して設定します。

■ 約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┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————

この記事を書いた人

aws-recipe-user