こんにちは!中の人です。
前回のレシピでは『Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(シングル)~』ということで、Redshift1台に対して様々なSQLを実行してパフォーマンス比較をおこないました。
結果、レコード件数と同時実行数に応じてレスポンスが低下することが確認できました。
今回は『Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(マルチ)~』と題して、複数クエリを同時実行した場合、1台と比較して複数並列することによりパフォーマンスがどのように変わるかの検証を行います。
条件は前回のレシピと同じく、以下のテーブルを用意して検索してみました。
約8千行
約60万行
約4000万行
RedshiftはXL ノードをマルチ構成での検証です。
シングルノードからマルチノードに変更する方法は非常に簡単です。
1. まず、該当するクラスタの詳細画面から「Resize」を選択します。
2. 次に、詳細画面で必要なサイズ・台数を選択して「Resize」をクリックします。
これだけで好きなサイズ・台数にリサイズすることが出来ます。
なお、リサイズに要する時間はデータのサイズに依存するようです。
1 |
select * from TABLE_NAME where id<1000 |
を実行して比較しております。
なお、接続方式としては前回同様PG接続で行なっております。
※ 前回と異なるデータでテストを行なっております。
※ 同時数は最大6件で検証を行なっております。
■ 約8千行(10回平均)
<2台並列>
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 0.1 | 0.12 | 0.28 |
最高実行速度(秒) | 0.08 | 0.09 | 0.17 |
最低実行速度(秒) | 0.11 | 0.2 | 0.41 |
CPU負荷(ピーク) | 11% | 43% | 71% |
※通常時のCPU負荷率は11%です。
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 0.2 | 0.09 | 0.61 |
最高実行速度(秒) | 0.18 | 0.05 | 0.43 |
最低実行速度(秒) | 0.22 | 0.34 | 0.73 |
CPU負荷(ピーク) | 14% | 60% | 73% |
※通常時のCPU負荷率は14%です。
■ 約60万行(10回平均)
<2台並列>
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 0.72 | 1.01 | 1.91 |
最高実行速度(秒) | 0.58 | 0.86 | 1.3 |
最低実行速度(秒) | 0.82 | 1.18 | 2.69 |
CPU負荷(ピーク) | 16% | 51% | 70% |
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 1.52 | 1.7 | 3.77 |
最高実行速度(秒) | 1.21 | 0.95 | 2.33 |
最低実行速度(秒) | 1.66 | 2.68 | 8.14 |
CPU負荷(ピーク) | 29% | 76% | 97% |
■ 約4000万行(10回平均)
<4台並列>
同時数1 | 同時数2 | 同時数 6 | |
---|---|---|---|
平均実行速度(秒) | 10.56 | 14.88 | 17.17 |
最高実行速度(秒) | 9.21 | 11.96 | 14.38 |
最低実行速度(秒) | 12.38 | 19.46 | 24.72 |
CPU負荷(ピーク) | 31% | 44% | 35% |
<2台並列>
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 12.43 | 17.52 | 28.82 |
最高実行速度(秒) | 11.64 | 11.56 | 17.28 |
最低実行速度(秒) | 16.65 | 21.67 | 94.15 |
CPU負荷(ピーク) | 40% | 73% | 91% |
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 26.71 | 46.29 | N/A |
最高実行速度(秒) | 25.76 | 29.14 | N/A |
最低実行速度(秒) | 31.75 | 104.23 | N/A |
CPU負荷(ピーク) | 87% | 83% | 100% |
いかがでしたでしょうか?
ノードが増えることによってパフォーマンスが大きく変わることが確認できます。
何よりCPU負荷が100%になるような場合にはマルチノードにすることで大きく差が出てくるので、解析するデータが大きく頻度が高い場合にはマルチノードであることが必須となります。
台数が多いほど、データサイズが大きくても影響は小さく、安定して稼働します。
また、マルチノードの場合、管理ノードのみ20-30%程度CPU負荷が高くなる傾向がありました。
次回は『Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(XL vs 8XL)~』と題して、同じ事を8XLに対しても行なってみます。
マシンを大きくさせることで、時間や負荷がどのように変わるかを検証してみます。
お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————