るいすのブログ

オタクエンジニアの雑記

Amazon RDS 最安インスタンス db.t2.micro を契約してみた。【ベンチマーク】


データベースもクラウドの時代や! 自サーバーにデータベースを置くとバックアップするのが面倒だったり、管理が大変だったりと大変なので クラウドに置いてみようと思った。

 

Amazon RDS を選んだ理由

Amazon_rds

無料体験期間で12ヶ月無料で使えるからです! 無料で使えるプランは db.t2.micro 最安インスタンスです。

 

インスタンス vCPU メモリ PIOPS 用に最適化 ネットワークパフォーマンス 容量
db.t2.micro 1 1GB 5GB

その他の料金については公式サイトを見て下さい。

 

また、使えるエンジンも多く ・Aurora ・MySQL ・MariaDB ・PostgreSQL ・Oracle ・SQL Server と現時点(2016/04/23)で6個から選べる...。

 

他にもクラウドデータベースは ・Oracle Cloud ・Google Cloud SQL ・Rackspace があります。

 

 

オンデマンドインスタンス & リザーブドインスタンス

オンデマンドインスタンス

オンデマンドインスタンスでは長期間の契約や初期費用がなく、時間単位でインスタンスに対する料金が発生します。これにより、データベースのキャパシティーを事前にプランニングしたり、購入したりするコストや手間が省けます。オンデマンドの料金設定のため使用した分のみ料金が発生し、開発、テスト、その他の短期ワークロードに最適です。

言ってしまえば従量課金制です。使った分だけ支払います。

 

リザーブドインスタンス

リザーブドインスタンスは一定量のデータベースワークロードに最適で、オンデマンドと比べて大幅にコストを削減できます。オンデマンド料金と比べると、1 年契約のリザーブドインスタンスでは最大 44%、3 年契約のリザーブドインスタンスでは最大 63% のコスト削減が可能です。リザーブドインスタンスの場合は、所定の期間終了まで使用する契約を結ぶことになり、初期費用のお支払いが必要ですが、時間あたりの料金は下記のとおり割安になります。実際に使用したかどうかにかかわらず、期間中は各時間ごとに料金が発生します。

こちらは固定料金みたいなものです。

今回契約したのは オンデマンドインスタンス です。 使うのなんて月に数回程度、数十行のレコードへのINSERT,UPDATE,SELECTぐらいなのでリザーブドインスタンスだととてつもなく料金の無駄になります。

 

 

使い方

FireShot Capture 36 - RDS · AWS Console_ - https___us-west-2.console.aws.amazon.com_rds_home

使い方ではなくインスタンス作成の時ですが、右側を選択すると「無料利用枠範囲内」で 勝手に項目が決定されます。

ステータスが利用可能になるとエンドポイント(URL)が表示されます。 セキュリティポリシー的なやつで、アクセス元IPをホワイトリストに追加する必要があります。 mysql -h <エンドポイントURL> -u <ユーザー名> -p でいつものように使えるようになります。

既存のデータベースをダンプして、RDSにインポートしてコードを書き換えれば 簡単に移行できます。

 

ベンチマーク

今回は Sysbench というベンチマークソフトを使ってみました。 CPU、ディスクI/O、データベースなど様々なベンチマークを測ることができます。

準備
sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=10000 \
--mysql-password=<パスワード> \
prepare

レコード数は10000

 

sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=10000 \
--mysql-password=<パスワード> \
--num-threads=1 \
--max-requests=0 \
--max-time=60 \
--oltp-read-only=off \
run

何となく分かると思います。

比較はトランザクション数で比較します。

 

トランザクションとは

一般にデータベースには多くの人がアクセスし、様々な処理を行います。閲覧するだけの人もいれば、データを追加・更新したり、削除する人もいます。その中でも特に、データの追加・更新・削除、SQL 文で言うと「INSERT 文」「UPDATE 文」「DELETE 文」についての処理のまとまりをトランザクションと言います。 - http://www.techscore.com/tech/sql/SQL11/11_01.html/

詳しいことはこちらが参考になります。

 

 

vCPU : 4 / メモリ : 4GB サーバー

OLTP test statistics:
    queries performed:
        read:                            158886
        write:                           56745
        other:                           22698
        total:                           238329
    transactions:                        11349  (189.15 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 215631 (3593.84 per sec.)
    other operations:                    22698  (378.30 per sec.)

Test execution summary:
    total time:                          60.0002s
    total number of events:              11349
    total time taken by event execution: 59.9105
    per-request statistics:
         min:                                  4.12ms
         avg:                                  5.28ms
         max:                                 91.92ms
         approx.  95 percentile:               6.33ms

Threads fairness:
    events (avg/stddev):           11349.0000/0.00
    execution time (avg/stddev):   59.9105/0.00

transactions: 11349 (189.15 per sec.)

 

Amazon RDS db.t2.micro

OLTP test statistics:
    queries performed:
        read:                            280
        write:                           100
        other:                           40
        total:                           420
    transactions:                        20     (0.31 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 380    (5.93 per sec.)
    other operations:                    40     (0.62 per sec.)

Test execution summary:
    total time:                          64.1199s
    total number of events:              20
    total time taken by event execution: 64.1194
    per-request statistics:
         min:                               2933.48ms
         avg:                               3205.97ms
         max:                               4202.67ms
         approx.  95 percentile:            4170.87ms

Threads fairness:
    events (avg/stddev):           20.0000/0.00
    execution time (avg/stddev):   64.1194/0.00

transactions: 20 (0.31 per sec.)

差が圧倒的すぎる...。 僕の使用用途はただユーザー情報を入れてるだけのデータベースで、正規化するほどのものでもないので 十分です...。

無料利用枠もあって、使いやすいし Amazon RDS オススメです。 まあ、Google Cloud SQL の最安プライン オンデマンドインスタンスの方が安いんですけどねw