PostgreSQLエンジンでAuroraとRDSでpgbenchを使った負荷テストを行った。
テスト環境
クライアント
- pgbench (PostgreSQL) 14.2 (Ubuntu 14.2-1ubuntu1)
- EC2のc5.2xlargeインスタンスから実行
- クライアントインスタンスの性能上限には引っかかっていないことは確認
- 以下のようなスクリプトを実行
#!/bin/bash . .rds for i in 8 16 32 48 64; do echo "--- $(date +%FT%TZ) RDS $i" pgbench -i -s 100 -q pgbench -c $i -T 210 sleep 60 done echo "--- $(date +%FT%TZ) RDS end"
サーバ
- PostgreSQL 13.6
- インスタンス数はそれぞれ1台ずつ(冗長化なし)
- Parameter Groupはデフォルト
- クライアントインスタンスと同じAZ
- Encryption有効
- Performance Insights有効
- Enhanced Monitoring有効
- ログはエクスポートしていない
- RDSのストレージはgp2/1000GB
結果
tps
latency
CPU使用率
Performance Insights(それぞれdb.r6.2xlarge)
RDS
Aurora
雑感
- 実際のワークロードに合わせたテストでないとプロダクション投入時の性能はなんともいえないと思う…と前置きしつつ
- Auroraのtps限界が想定よりずいぶん低い
- Auroraには可用性やフェイルオーバーの速さなどのメリットがあるが、うーん…
- Auroraのアーキテクチャ的に細かいトランザクションが多いワークロードでは遅くなりそうな気はする
- ただ、MySQLエンジンではこんなワークロードでもAurora > RDSだったのでPostgreSQLエンジンでも同様だと思っていた
- Googleで調べた感じAuroraのほうがtpsが高い結果が見られるので、なにか設定を間違えている気もする…
- インスタンスクラスをもっと大きくしたら結果が違うのかもしれない
- RDSのストレージサイズによる性能の違いも調べたいところ
参考リンク
- ぜんぜんわからない。俺たちは雰囲気でpgbenchを使っていた。 - Qiita
- PostgreSQL 13.1文書 pgbench
- Amazon Aurora with PostgreSQL Compatibility を評価して
- RDSがAuroraより速い!?について調べてみた - なからなLife
- Is Aurora PostgreSQL really faster and cheaper than RDS PostgreSQL - Benchmarking - MigOps
- Benchmarking read/write speed on Amazon Aurora, classic RDS and local disk | by Raphaël Champeimont | DataDrivenInvestor
追記
RDSがSingle-AZだったのでMulti-AZで追試。
tps
latency
CPU使用率
Performance Insights(db.r6.2xlarge)
追記2
MySQLエンジンでTPC-B(tpcb-like)を軽く検証したので、結果を張っておく。
※ツールが違うのでPostgreSQLエンジンの値とは直接比較できない点に注意のこと