Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

今更ながらですが、今年(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で計測したので、そこの違いかもしれません
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした