LoginSignup
5
4

More than 5 years have passed since last update.

MySQL5.7と8.0でシンプルにベンチマークを比較してみる

Last updated at Posted at 2018-10-02

今更ながらですが、今年(2018)の4月にMySQL8.0の製品版がリリースされました。
色々と新規、改善された機能があるのですが、個人的にはMySQL 8.0: MySQL 5.7よりも最大2倍高速という所が気になり、ちょっと試してみました。

前提

  • 環境
    • AWS EC2 t2.small(vCPU1 メモリ2GB) ×2(5.7と8.0でサーバーを分ける)
    • AMI Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type
    • MySQL 5.7.23、8.0.12 (すべてデフォルト設定)
  • 検証ツール

準備

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
create database benchmark;
  • sysbenchでデータの作成(レコードは100万行)
sysbench --db-driver=mysql \
      --mysql-host=localhost \
      --mysql-user=root \
      --mysql-password=password \
      --mysql-db=benchmark \
      --table_size=1000000 \
      oltp_read_write \
      prepare

測定(30秒間でのトランザクション数)

  • oltp_read_only
sysbench --db-driver=mysql \
      --mysql-host=localhost \
      --mysql-user=root \
      --mysql-password=password \
      --mysql-db=benchmark \
      --time=30 \
      --threads=1 \
      oltp_read_only \
      run
MySQL5.7 MySQL8.0
1回目 20836 (694.45 per sec.) 19619 (653.89 per sec.)
2回目 22860 (761.93 per sec.) 19946 (664.79 per sec.)
3回目 22461 (748.63 per sec.) 19821 (660.64 per sec.)
4回目 22980 (765.93 per sec.) 19832 (661.00 per sec.)
5回目 23061 (768.61 per sec.) 19897 (663.16 per sec.)
  • oltp_write_only
sysbench --db-driver=mysql \
      --mysql-host=localhost \
      --mysql-user=root \
      --mysql-password=password \
      --mysql-db=benchmark \
      --time=30 \
      --threads=1 \
      oltp_write_only \
      run
MySQL5.7 MySQL8.0
1回目 14603 (486.72 per sec.) 6686 (222.82 per sec.)
2回目 15425 (514.10 per sec.) 6684 (222.78 per sec.)
3回目 15683 (522.69 per sec.) 6798 (226.55 per sec.)
4回目 14369 (478.90 per sec.) 6772 (225.70 per sec.)
5回目 15671 (522.31 per sec.) 6750 (224.96 per sec.)
  • oltp_read_write
sysbench --db-driver=mysql \
      --mysql-host=localhost \
      --mysql-user=root \
      --mysql-password=password \
      --mysql-db=benchmark \
      --time=30 \
      --threads=1 \
      oltp_read_write \
      run
MySQL5.7 MySQL8.0
1回目 7428 (247.57 per sec.) 4410 (146.98 per sec.)
2回目 7851 (261.68 per sec.) 4632 (154.37 per sec.)
3回目 7907 (263.54 per sec.) 4533 (151.07 per sec.)
4回目 8002 (266.69 per sec.) 4745 (158.15 per sec.)
5回目 8029 (267.61 per sec.) 4574 (152.44 per sec.)

感想

あれ?MySQL8.0の方が遅い・・・?
検証しているサーバーが逆じゃないか、何度も確かめたがやはり間違いはなかった。
結果だけ見ると特にwrite系の処理で差が出ているように見える。
デフォルトの設定でチューニングも何もしていないからか、チューニング次第で速くなるのかな?それとも他の要因?
もしそうであればもう少し調査してから実運用を検討したい。

参考

追記

  • 10/4 Enterprise editionではなくCommunity editionで計測したので、そこの違いかもしれません
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4