こんにちは!中の人です。
前回のレシピでは『Amazon Redshift編~接続方法(ODBC/JDBC/PG接続)別パフォーマンス比較~』ということで、接続方式別でのパフォーマンス比較をおこないました。
予想以上に差がなく、様々な接続方式でも同じように利用できることが確認できました。
今回は『Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(シングル)~』と題して、複数クエリを同時実行した場合のパフォーマンス比較をしてみます。
条件は前回のレシピと同じく、以下のテーブルを用意して検索してみました。
約8千行
約60万行
約4000万行
RedshiftはXL ノードをシングル構成での検証です。
1 |
select * from TABLE_NAME where id<1000 |
を実行して比較しております。
なお、接続方式としてはプログラムから操作しやすかったのでPG接続で行なっております。
■約8千行(10回平均)
同時数1 | 同時数2 | 同時数10 | |
---|---|---|---|
平均実行速度(秒) | 0.04 | 0.09 | 1.46 |
最高実行速度(秒) | 0.03 | 0.05 | 0.76 |
最低実行速度(秒) | 0.06 | 0.34 | 2.33 |
CPU負荷(ピーク) | 10% | 22% | 43% |
※通常時のCPU負荷率は10%です。
上記の検証を行なっている時にプログラムにpg_closeの設定を入れ忘れたところ、検証を続けるに連れて同時コネクションが増えてエラーが出るという事が起きました。
その場合、再起動させるか30分くらいで切断されるので待ちましょう。
皆さんもDBに接続したら最後に切るように気をつけましょう!再起動は1分ぐらいで完了するのでオススメです!
■約60万行(10回平均)
同時数1 | 同時数2 | 同時数10 | |
---|---|---|---|
平均実行速度(秒) | 3.11 | 5.47 | 31.16 |
最高実行速度(秒) | 2.85 | 4.85 | 28.77 |
最低実行速度(秒) | 3.86 | 6.18 | 45.01 |
CPU負荷(ピーク) | 20% | 36% | 43% |
■約4000万行(10回平均)
同時数1 | 同時数2 | 同時数10 | |
---|---|---|---|
平均実行速度(秒) | 16.91 | 34.37 | N/A |
最高実行速度(秒) | 15.42 | 33.49 | N/A |
最低実行速度(秒) | 25.11 | 36.35 | N/A |
CPU負荷(ピーク) | 57% | 73% | 100% |
※同時数10はタイムアウトが発生し、測定不能
いかがでしたでしょうか?
接続数が増えていき、テーブルが大きくなることで大幅に時間がかかるようになっていることがわかります。
次回は『Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(マルチ)~』と題して、同じ事をマルチノードでおこなってみます。
マルチノード化させることで、時間や負荷がどのように変わるかを検証してみます。
お楽しみに!