MySQL 5.7 vs 8.0,性能PK


本文摘自PHP中文网,作者coldplay.xixi,侵删。

mysql教程栏目介绍MySQL 5.7和MySQL 8.0的性能对比。

背景

测试mysql5.7和mysql8.0 分别在读写、只读、只写模式下不同并发时的性能(tps,qps)

前提

  • 测试使用版本为mysql5.7.22和mysql8.0.15
  • sysbench测试前先重启mysql服务,并清空os的cache(避免多次测试时命中缓存)
  • 每次进行测试都是新生成测试数据后再进行mysql5.7和mysql8.0的测试
  • 每次测试时保证mysql5.7和mysql8.0的配置参数一致

环境

机器

1

2

3

4

cat /etc/redhat-release | xargs echo '版本 ' && dmidecode -s system-product-name | xargs echo '是否虚拟化 ' && cat /proc/cpuinfo |grep "processor"|wc -l | xargs echo 'cpu核数 '

版本 CentOS Linux release 7.5.1804 (Core) 

是否虚拟化 KVM 

cpu核数 4复制代码

myql5.7.22

1

2

3

4

5

6

7

5.7.22-log

innodb_buffer_pool_size 128M

innodb_log_buffer_size  64M

innodb_log_file_size    48M

binlog_format   ROW

log_bin ON

transaction_isolation   REPEATABLE-READ复制代码

mysql8.0.15

1

2

3

4

5

6

7

8.0.15

innodb_buffer_pool_size 128M

innodb_log_buffer_size  64M

innodb_log_file_size    48M

binlog_format   ROW

log_bin ON

transaction_isolation   REPEATABLE-READ复制代码

sysbench

1

2

sysbench -V

sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)复制代码

测试

  • 在不同的持久化策略下(binlog, redo log持久化)mysql5.7和mysql8.0 在读写模式、只读模式、只写模式(oltp_read_write,oltp_read_only,oltp_write_only)下的性能表现

  • sysbench 测试时间为60s,测试的表数量为20

  • 测试分别在双1模式(安全性)和0 2模式(高性能)下进行

  • attachments-2020-11-Z2DPVPyr5f9f6fff02cb5.jpg

    SHOW GLOBAL VARIABLES WHERE Variable_name IN('sync_binlog','innodb_flush_log_at_trx_commit'); +--------------------------------+-------+ | Variable_name | Value | +--------------------------------+-------+ | innodb_flush_log_at_trx_commit | 1 | | sync_binlog | 1 | +--------------------------------+-------+

mysql5.7和mysql8.0 在读写模式下的表现

attachments-2020-11-mwisKbYr5f9f70115d5bc.png

  • 双1 配置,读写模式下,mysql5.7.22 和mysql8.0.15 tps 、qps 性能差不多,mysql8.0.15 在120 线程并发时,性能出现了下降抖动:

mysql5.7和mysql8.0 在只读模式下的表现

attachments-2020-11-Lybb2vNi5f9f702380a5d.png

  • 双1 配置,只读模式下,mysql5.7.22 的tps、qps比mysql8.0.15 好1/3 左右;并发线程数增加后,tps、qps并没有随着增加,反而出现了下降的趋势。

mysql5.7和mysql8.0 在只写模式下的表现

attachments-2020-11-B1hvTT4Z5f9f7031ab4f4.png

  • 双1 配置,只写模式下,随着并发数的上升,mysql5.7.22 的性能比mysql8.0.15 好1/4左右。

0 2 模式下

1

2

3

4

5

6

7

SHOW GLOBAL  VARIABLES WHERE Variable_name IN('sync_binlog','innodb_flush_log_at_trx_commit');

+--------------------------------+-------+

| Variable_name                  | Value |

+--------------------------------+-------+

| innodb_flush_log_at_trx_commit | 2     |

| sync_binlog                    | 0   |

+--------------------------------+-------+复制代码

mysql5.7和mysql8.0 在读写模式下的表现

attachments-2020-11-e8WxDqYU5f9f703f22be3.png

  • 0 2配置,读写模式下,并发数低时,mysql5.7.22性能好于mysql8.0.15; 并发数比较高时,mysql8.0.15 性能好于mysql5.7.22;在80 线程的并发以上时,性能开始下降。

mysql5.7和mysql8.0 在只读模式下的表现

  • 0 2配置,只读模式下,mysql5.7.22性能比mysql8.0.15 好1/3左右;随着并发数的上升,性能也没有上升,反而有下降的趋势.

mysql5.7和mysql8.0 在只写模式下的表现

attachments-2020-11-svF4zqL65f9f7056ec1d9.png

  • 0 2 配置,只写模式下,mysql5.7.22的tps 抖动比较大;mysql5.7.22 的qps比mysql8.0.15好1/3左右

结论

  • 整体来看,mysql5.7.22在读写模式、只读模式、只写模式下的表现是优于mysql8.0.15的
  • 随着并行数的增加,性能表现不会也跟着增加,还会出现下降
  • 本次测试结果是在配置很低的情况下进行的,不代表绝对

注意

sysbench 需要设置--db-ps-mode=disable 禁用预编译语句,不然并发测试线程多时会报下面的错误

1

2

3

4

5

6

FATAL: mysql_stmt_prepare() failed

FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)"

FATAL: mysql_stmt_prepare() failed

FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)"

FATAL: thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:288: SQL API error FATAL: mysql_stmt_prepare() failed FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)" FATAL:thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:288: SQL API error

FATAL: mysql_stmt_prepare() failed复制代码

使用脚本

阅读剩余部分

相关阅读 >>

mysql的注释有几种写法?

mysql与php的基础与应用专题之自连接

mysql中常用指令操作的介绍(代码示例)

查看mysql数据库大小、表大小和最后修改时间

mysql中关于权限设置详解

mysql中b树索引和b+树索引的区别详解

重新认识mysql中的count语句

mysql修改root密码的多种方法介绍

mysql介绍系统信息函数

mysql的慢查询分析调优工具 show profile

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...