MySQL 8.4 の性能向上がどの程度あるのかを確認するため、
sysbench を使って OLTP ベンチマークを実施しました。
準備
sysbench バージョン確認
# sysbench --version
sysbench 1.1.0-3ceba0b
DB とユーザ作成
# mysql -u root -p
mysql> CREATE DATABASE sbtest;
mysql> CREATE USER sbtest@'%' IDENTIFIED BY 'sbtest';
mysql> GRANT ALL PRIVILEGES ON sbtest.* TO sbtest@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit
テーブル準備
# sysbench /usr/local/share/sysbench/oltp_read_write.lua \
--db-driver=mysql \
--table-size=1000000 \
--mysql-host=localhost \
--mysql-password=sbtest \
--time=60 \
--db-ps-mode=disable \
prepare
テスト実施
# sysbench /usr/local/share/sysbench/oltp_read_write.lua \
--db-driver=mysql \
--table-size=100000 \
--mysql-host=localhost \
--mysql-password=sbtest \
--time=60 \
--db-ps-mode=disable \
--threads=8 \
run
テスト内容
- EC2: t3.small (Amazon Linux 2023)
- 10万行テーブル
- SELECT / INSERT / UPDATE / DELETE 混在
- 8スレッド同時実行
- 実行時間 60秒
ばらつきを確認するため、同条件で 3回ずつ実行。
実行結果(3回分)
スループット比較
| Run | MySQL 8.0 TPS | MySQL 8.4 TPS | 差分 | MySQL 8.0 QPS | MySQL 8.4 QPS | 差分 |
|---|---|---|---|---|---|---|
| 1 | 574.13 | 646.74 | +12.6% | 11,482.52 | 12,934.76 | +12.6% |
| 2 | 583.18 | 641.06 | +9.9% | 11,663.68 | 12,821.11 | +9.9% |
| 3 | 575.97 | 657.98 | +14.2% | 11,519.48 | 13,159.69 | +14.2% |
レイテンシ比較
| Run | MySQL 8.0 Avg (ms) | MySQL 8.4 Avg (ms) | 改善 | MySQL 8.0 p95 (ms) | MySQL 8.4 p95 (ms) | 改善 |
|---|---|---|---|---|---|---|
| 1 | 13.93 | 12.37 | -11.2% | 18.61 | 17.95 | -3.5% |
| 2 | 13.71 | 12.48 | -9.0% | 18.28 | 17.63 | -3.6% |
| 3 | 13.88 | 12.15 | -12.5% | 18.28 | 17.01 | -6.9% |
まとめ(平均・ばらつき)
(mean ± std、min/max 併記)
| 指標 | MySQL 8.0 | MySQL 8.4 | 改善率 |
|---|---|---|---|
| TPS | 577.76 ± 4.78(min 574.13 / max 583.18) | 648.59 ± 8.61(min 641.06 / max 657.98) | +12.3% |
| QPS | 11,555.23 ± 95.72 | 12,971.85 ± 172.31 | +12.3% |
| Avg latency | 13.84 ± 0.12 ms | 12.33 ± 0.17 ms | -10.9% |
| p95 latency | 18.39 ± 0.19 ms | 17.53 ± 0.48 ms | -4.7% |
結論
今回の条件では:
- スループット 約+12% 向上
- 平均レイテンシ 約-11% 改善
- p95 も安定して改善
小規模インスタンスでも、MySQL 8.4 の性能向上が確認できました。