こんにちは! 中の人です。
前回までのレシピでは、RedshiftのXLノード1~数台に対して様々なSQLを実行してパフォーマンス比較およびまとめを行いました。
※ 下記、過去記事参照
■ Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(シングル)~
■ Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(マルチ)~
■ Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(XL vs 8XL)~
■ Amazon Redshift編~複数クエリ同時実行時パフォーマンス比較(まとめ)~
今回は『Amazon Redshift編~パフォーマンス比較(MySQL vs Redshift)前編~』と題して、同じデータをMySQLに流しこんで、実際にパフォーマンス比較を行なってみます。
比較を行ったのは以下の2つです。
RDS xlarge | Redshift XLノード | |
---|---|---|
CPU | 8 ECU(2 ECU × 4 仮想コア) | 4.4 ECU(2.2 ECU × 2 仮想コア) |
メモリ | 15 GB メモリ | 15 GB メモリ |
HDD | 100 GB | 2 TB |
その他 | 高速 I/O | 標準 I/O |
時間単価 | $0.860 | $1.250 |
※ RDSでRedshiftの各性能値が同等以上の機種を選んでおります。
※ 料金は2013年7月現在
条件は前回のレシピと同じく、以下のテーブルを用意して検索してみました。
また、Redshiftにはindexを張れないので、indexあり・なし両方計測してみました。(テスト・計測はmysqlslapで行なっております。)
約8千行
約60万行
約4000万行
データのimportにはRDSはload data、Redshiftはcopyを利用しました。
RDS xlarge | Redshift XLノード | |
---|---|---|
約8千行 | 20-30秒 | 20-30秒 |
約60万行 | 約5分 | 70-80秒 |
約4000万行 | 2-3時間 | 約15分 |
※ mysql のload dataは1ファイルを500MB程度に分割する必要があり、大きいファイルを読みこませる事により頻繁にconnectionエラーが発生していたため、エラーが無かった場合の想定で80分程度の見込み
以下の様なSQL文を実行して、実行時間の比較しております。
1 |
select * from TABLE_NAME where id<1000 |
■ 約8千行(10回平均)
≪RDS xlarge≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 0.045 | 0.064 | 0.085 |
最高実行速度(秒) | 0.044 | 0.049 | 0.075 |
最低実行速度(秒) | 0.047 | 0.069 | 0.093 |
≪XLノード≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 0.2 | 0.09 | 0.61 |
最高実行速度(秒) | 0.18 | 0.05 | 0.43 |
最低実行速度(秒) | 0.22 | 0.34 | 0.73 |
■ 約60万行(10回平均)
≪RDS xlarge : インデックスなし≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 1.54 | 1.77 | 2.64 |
最高実行速度(秒) | 1.53 | 1.61 | 2.57 |
最低実行速度(秒) | 1.55 | 2.12 | 2.74 |
≪RDS xlarge : インデックスあり≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 0.41 | 0.49 | 0.74 |
最高実行速度(秒) | 0.4 | 0.43 | 0.68 |
最低実行速度(秒) | 0.44 | 0.77 | 0.95 |
≪XLノード≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 1.52 | 1.7 | 3.77 |
最高実行速度(秒) | 1.21 | 0.95 | 2.33 |
最低実行速度(秒) | 1.66 | 2.68 | 8.14 |
■ 約4000万行(10回平均)
≪RDS xlarge : インデックスなし≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 81.11 | 87.34 | 140.24 |
最高実行速度(秒) | 80.9 | 85.44 | 135.02 |
最低実行速度(秒) | 81.41 | 89.13 | 146.51 |
≪RDS xlarge : インデックスあり≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 6.05 | 6.72 | 11.47 |
最高実行速度(秒) | 5.95 | 6.35 | 10.75 |
最低実行速度(秒) | 6.34 | 7.79 | 12.58 |
≪XLノード≫
同時数1 | 同時数2 | 同時数6 | |
---|---|---|---|
平均実行速度(秒) | 26.71 | 46.29 | N/A |
最高実行速度(秒) | 25.76 | 29.14 | N/A |
最低実行速度(秒) | 31.75 | 104.23 | N/A |
いかがでしたでしょうか?
「あれっ、むしろ正しくindexを張ることでMySQLの方が性能が出ているのでは…!?」と思われるかもしれません。
スペック的にもRDS 4コア vs Redshift 2コアと大きく違うので、RDSが有利な上に、Redshiftの大きな特徴であるカラムナー型の特性を活かした利用方法ではありません。
次回は『Amazon Redshift編~パフォーマンス比較(MySQL vs Redshift) 後編~』と題して、カラムナー型に向いているデータでのパフォーマンスを比較していきます。
お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————