RDB as a Serviceのベンチマーク

Contents
  1. はじめに
  2. TL; DR
  3. ベンチマーク方法
  4. 構築
  5. tpcc-mysql
  6. sysbench
  7. 結果
  8. インスタンスタイプ
  9. tpcc-mysql
  10. sysbench
  11. まとめ

はじめに

最近古くなった Web アプリケーションインフラの刷新プロジェクトをやっていて、AWS と GCP それぞれのパフォーマンスが気になっていたところに IDCF の RDB サービスがリリースされたのでベンチマークを取ってみました。

ベンチマークしたのサービスは以下の 4 つで、すべて MySQL 互換です。

ベンチマークログ、Terraform のコードは次のレポジトリにあります。

https://gitlab.com/nownabe/rdb-bench

TL; DR

おおむね、

IDCF > Aurora > Cloud SQL > RDS

でした。IDCF はやい。

ベンチマーク方法

ベンチマークツールは tpcc-mysql と sysbench を使いました。MySQL のパラメータはすべてサービスのデフォルトのままです。また、それぞれ計測は 1 回のみとなります。

構築

それぞれのクラウドで RDB のインスタンスとベンチマークをかけるクライアントとなる VM インスタンスを立ち上げました。

AWS と GCP の構築は Terraform で自動化してあります。

https://gitlab.com/nownabe/rdb-bench/tree/master/terraform

tpcc-mysql

tpcc-mysql は Percona が提供しているベンチマークツールで、TPC-C というベンチマーク仕様の実装です。1

tpcc-mysql では以下の設定で計測をしました。

  • Warehouse は 50, 100
  • 同時接続数は 20, 40, 60, 80, 100
  • ウォーミングアップ時間は 300 秒
  • 計測時間は 600 秒

https://gitlab.com/nownabe/rdb-bench/blob/master/run-tpcc.sh

sysbench

sysbench は Lua スクリプトでベンチマークを定義できるベンチマークツールです。CPU やメモリなどに加えて、MySQL と PostgreSQL の性能も計測できます。

sysbench では以下の設定で計測をしました。

  • シナリオは oltp_read_write.lua
  • Table size は 10k, 100k, 1m
  • Threads は 2, 4, 8, 16, 32, 64, 128, 256
  • 計測時間は 300 秒

https://gitlab.com/nownabe/rdb-bench/blob/master/run-sysbench.sh

結果

細かい結果が気になる方はレポジトリにログが全部あるので見てみてください。

インスタンスタイプ

それぞれのサービスで次の表のインスタンスタイプを使いました。

サービス タイプ vCPU Memory
RDS db.r4.2xlarge 8 61
Aurora db.r4.2xlarge 8 61
Cloud SQL db-n1-highmem-8 8 52
IDCF RDB highmem.XL64 8 64

tpcc-mysql

tpcc-mysql-50.png (15.3 kB)

tpcc-mysql-100.png (13.4 kB)

RDS はデータのロードがおそすぎて待ち時間がやばかったので Warehouse = 100 は計測してません。

sysbench

oltp_read_write-10k.png (18.3 kB)

oltp_read_write-100k.png (18.8 kB)

oltp_read_write-1m.png (17.4 kB)

IDCF はデフォルトで max_connections が 151 だったので Threads = 256 は計測できていません。ちなみに、RDS は 5100、Aurora は 3000、Cloud SQL は 4000 でした。

まとめ

IDCF めっちゃ速いですね。 Aurora もさすがという感じで、ある程度トラフィックがあるようなサービスだとコスパ的にもわざわざ AWS で RDS を選択する意味はあまりなさそうです。 Cloud SQL は概ね RDS よりはやくて、特にデータが多くて同時接続数が多いときが得意そうです。

Footnotes

  1. 厳密ではないらしい ↩