Benchmark Sysbench
以下のベンチマーク結果は、対応する database engine がコンピュート構成ごとにどの程度の性能を出すかを示しており、instance のサイズを選ぶときの出発点になります。
警告
これらの数値は参考データであり、性能を保証するものではありません。実際のスループットはワークロード、スキーマ、インデックス設計、読み書きの比率、storage とネットワークの構成に左右されます。本番の構成を決める前に、自分のワークロードで検証してください。
計測した内容
このベンチマークは OLTP の読み書き性能を評価し、CPU とメモリの増加に伴うスループットの変化を示し、flavor 間で比較できる数値を提供します。
対象の engine は PostgreSQL、MySQL、MariaDB、MongoDB、Redis です。
| 指標 | 意味 |
|---|---|
| Sysbench Read | テスト中に実行された読み取りクエリの総数。 |
| Sysbench Write | テスト中に実行された書き込みクエリの総数。 |
| QPS (Queries Per Second) | 1 秒あたりに処理されたクエリの平均。 |
| TPS (Transactions Per Second) | 1 秒あたりに完了したトランザクションの平均。 |
QPS と TPS が高いほど、テストしたワークロードでのスループットが高いことを意味します。
PostgreSQL
テスト環境
| パラメータ | 値 |
|---|---|
| ベンチマークツール | Sysbench (OLTP Read/Write) |
| テーブル数 | 64 |
| テーブルあたりの行数 | 1,000,000 |
| ワークロードの種類 | Read/Write |
| スレッド数 | instance サイズごとに設定 |
| PostgreSQL のバージョン | PostgreSQL 17 |
結果
| Flavor (vCPU/RAM) | Threads | Sysbench Read | Sysbench Write | QPS | TPS |
|---|---|---|---|---|---|
| 2C4G | 64 | 2,595,600 | 741,590 | 6,177.66 | 308.88 |
| 2C8G | 64 | 2,481,276 | 708,929 | 5,905.53 | 295.27 |
| 4C8G | 64 | 3,189,018 | 911,134 | 7,589.71 | 379.48 |
| 8C16G | 64 | 4,829,286 | 1,379,738 | 11,496.20 | 574.79 |
| 8C32G | 64 | 5,679,842 | 1,622,732 | 13,519.46 | 675.94 |
| 16C32G | 64 | 6,448,036 | 1,842,199 | 15,350.46 | 767.49 |
| 16C64G | 64 | 6,926,948 | 1,979,031 | 16,489.02 | 824.41 |
MySQL
テスト環境
| パラメータ | 値 |
|---|---|
| ベンチマークツール | Sysbench (OLTP Read/Write) |
| テーブル数 | 64 |
| テーブルあたりの行数 | 1,000,000 |
| ワークロードの種類 | Read/Write |
| スレッド数 | instance サイズごとに設定 |
| MySQL のバージョン | MySQL 8.0.42 |
結果
| Flavor (vCPU/RAM) | Threads | Sysbench Read | Sysbench Write | QPS | TPS |
|---|---|---|---|---|---|
| 4C8G | 16 | 6,814,500 | 1,947,000 | 16,224.39 | 811.22 |
| 8C16G | 32 | 9,748,144 | 2,785,184 | 23,209.29 | 1,160.46 |
| 8C32G | 32 | 9,423,834 | 2,692,524 | 22,430.67 | 1,121.53 |
| 16C32G | 64 | 9,786,238 | 2,796,068 | 23,289.48 | 1,164.47 |
MariaDB
テスト環境
| パラメータ | 値 |
|---|---|
| ベンチマークツール | Sysbench (OLTP Read/Write) |
| テーブル数 | 64 |
| テーブルあたりの行数 | 1,000,000 |
| ワークロードの種類 | Read/Write |
| スレッド数 | instance サイズごとに設定 |
| MariaDB のバージョン | MariaDB 10.6 |
結果
| Flavor (vCPU/RAM) | Threads | Sysbench Read | Sysbench Write | QPS | TPS |
|---|---|---|---|---|---|
| 4C8G | 16 | 10,573,514 | 2,111,341 | 25,174.34 | 1,258.72 |
| 8C16G | 32 | 8,923,236 | 2,094,628 | 21,245.25 | 1,062.26 |
| 8C32G | 32 | 8,491,182 | 2,086,388 | 20,216.52 | 1,010.83 |
| 16C32G | 64 | 10,267,208 | 2,568,032 | 24,444.58 | 1,222.23 |
| 16C64G | 64 | 10,789,884 | 2,719,241 | 25,688.30 | 1,284.42 |
MongoDB
テスト環境
| パラメータ | 値 |
|---|---|
| ベンチマークツール | Sysbench (OLTP Read/Write) |
| ドキュメント数 | 1,000,000 |
| 操作数 | 1,000,000 |
| ワークロードの種類 | Read/Write |
| スレッド数 (YCSB threads) | instance サイズごとに設定 |
| MongoDB のバージョン | MongoDB 6.0.6 |
結果
| Flavor (vCPU/RAM) | Threads | Sysbench Read | Sysbench Write | QPS | TPS |
|---|---|---|---|---|---|
| 2C4G | 8 | 500,195 | 499,805 | 3,372.36 | 3,372.36 |
| 2C8G | 8 | 500,022 | 499,978 | 4,004.93 | 4,004.93 |
| 4C8G | 16 | 499,772 | 500,228 | 5,023.81 | 5,023.81 |
| 8C16G | 32 | 500,293 | 499,707 | 6,417.54 | 6,417.54 |
| 8C32G | 32 | 500,372 | 499,628 | 5,921.64 | 5,921.64 |
| 16C32G | 64 | 499,865 | 500,135 | 8,532.79 | 8,532.79 |
| 16C64G | 64 | 499,989 | 500,011 | 12,972.02 | 12,972.02 |
Redis
テスト環境
| パラメータ | 値 |
|---|---|
| ベンチマークツール | Sysbench (OLTP Read/Write) |
| キー数 | 1,000,000 |
| ワークロードの種類 | Read/Write |
| Redis のバージョン | Redis 7.2.1 |
結果
| Flavor (vCPU/RAM) | Sysbench Read | Sysbench Write | Total QPS | P99 latency | AVG latency |
|---|---|---|---|---|---|
| 2C4G | 68,600 | 29,405 | 98,005.25 | 28.93 | 3.10 |
| 2C8G | 68,346 | 29,296 | 97,641.61 | 30.85 | 3.92 |
| 4C8G | 67,948 | 29,126 | 97,074.26 | 35.33 | 6.77 |
| 8C16G | 68,655 | 29,428 | 98,083.03 | 28.03 | 3.41 |
| 8C32G | 67,811 | 29,067 | 96,878.29 | 35.84 | 5.77 |
| 16C32G | 67,964 | 29,132 | 97,096.07 | 33.54 | 4.89 |
| 16C64G | 68,329 | 29,289 | 97,617.73 | 31.74 | 4.42 |
数値の読み方
CPU とメモリを増やすと概してスループットは上がりますが、スケールの仕方は engine ごとに異なり、ワークロードとシステムの上限によっては高い構成で伸びが頭打ちになります。
これらの表で候補を 2〜3 個の flavor に絞り、実際のアプリケーションで検証してください。明らかなリソース不足を脱した後は、flavor よりもワークロードの性質のほうが影響します。
次のステップ
- database リソース構成の変更。稼働中の database の flavor を変更します
- Auto scaling の設定
- 用語集