千家信息网

MySQL 5.7 vs 8.0版本的性能有什么区别

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍MySQL 5.7 vs 8.0版本的性能有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景测试mysql5.7和mysql8.0 分别在读写、只读、
千家信息网最后更新 2026年11月03日MySQL 5.7 vs 8.0版本的性能有什么区别

这篇文章主要介绍MySQL 5.7 vs 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的配置参数一致
环境

机器

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

5.7.22-loginnodb_buffer_pool_size 128Minnodb_log_buffer_size  64Minnodb_log_file_size    48Mbinlog_format   ROWlog_bin ONtransaction_isolation   REPEATABLE-READ复制代码

mysql8.0.15

8.0.15innodb_buffer_pool_size 128Minnodb_log_buffer_size  64Minnodb_log_file_size    48Mbinlog_format   ROWlog_bin ONtransaction_isolation   REPEATABLE-READ复制代码

sysbench

sysbench -Vsysbench 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模式(高性能)下进行

  • 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 在读写模式下的表现

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

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

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

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

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

0 2 模式下

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 在读写模式下的表现

  • 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 在只写模式下的表现

  • 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 禁用预编译语句,不然并发测试线程多时会报下面的错误

FATAL: mysql_stmt_prepare() failedFATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)"FATAL: mysql_stmt_prepare() failedFATAL: 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 errorFATAL: mysql_stmt_prepare() failed复制代码

使用脚本

cat sysbench_test_mysql5.7_8.0_tps_qps.sh#!/bin/bash#用于sysbench 测试在读写模式、只读模式、只写模式下 mysql5.7和mysql8.0 的tps,qps#nohup bash $0 >/tmp/sysbench_test 2>& 1 &#user=adminpasswd=adminports="8015 57222"host=127.0.0.1sysbench_test_mode="oltp_read_write oltp_read_only oltp_write_only"sysbench_test_info_path=/tmp/sysbench-testfunction red_echo () {        local what="$*"        echo -e "$(date +%F-%T) e[1;31m ${what} e[0m"}function check_las_comm(){    if [ $1 -ne 0 ];then        red_echo $2        exit 1    fi}function  restart_mysqld(){  service mysqld${1} restart  sleep 2}function  purge_binlog(){port=$1mysql -u$user -p$passwd -P$port -h$host< /proc/sys/vm/drop_caches}function  sysbench_with_diff_thread(){thread_num=$1port=$2order=$3test_mode=$4sysbench /usr/local/share/sysbench/${test_mode}.lua --mysql_storage_engine=innodb  --table-size=100000 --tables=20 --mysql-db=test_1 --mysql-user=$user --mysql-password=$passwd --mysql-port=$port  --mysql-host=$host --threads=$thread_num  --time=60 --report-interval=2 --db-ps-mode=disable --events=0 --db-driver=mysql $order}function  main(){for test_mode in $sysbench_test_mode;do  for port in $ports;do    for thread_num in {5,10,20,30,40,80,120,200};do      restart_mysqld "$port"      check_las_comm  "$?" "restart mysqld${port} failed "      clean_os_cache      purge_binlog "$port"      red_echo "sysbench $thread_num  threads cleanup mysqld${port}"      sysbench_with_diff_thread "$thread_num" "$port" "cleanup" "$test_mode">/dev/null      red_echo "sysbench $thread_num  threads prepare mysqld${port}"      sysbench_with_diff_thread "$thread_num" "$port" "prepare" "$test_mode">/dev/null      mkdir -p $sysbench_test_info_path      red_echo "sysbench $thread_num  threads run mysqld${port} $test_mode"      sysbench_with_diff_thread "$thread_num" "$port" "run" "$test_mode" > $sysbench_test_info_path/${test_mode}_${thread_num}_$port      # service mysqld{port} stop    done  donedone}main

以上是MySQL 5.7 vs 8.0版本的性能有什么区别的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

模式 测试 性能 配置 代码 版本 线程 不同 内容 核数 趋势 一致 安全 差不多 代表 价值 兴趣 前提 参数 安全性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中智农互联网科技 广州百单互联网科技有限公司 互联网的科技创新 上海万想互联网科技 互联网 新科技 哈尔滨新华互联网科技 卫星互联网科技股票 玖二柒互联网科技公司待遇 承德科技产业互联网发展 上海宁丞科技互联网 互联网媒体平台算高科技产业 洛阳共同富裕互联网科技有限公司 北京市互联网新科技 互联网科技资金流入 江苏互联网科技小贷 济南小医互联网科技有限公司招聘 恒生互联网科技趋势 瑞安市蟠桃会互联网科技有限公司 互联网科技创业有什么好项目 武汉亿视互联网科技有限公司 上海卓越科技互联网 银优互联网科技有限公司 深圳天众互联网科技公司 互联网科技素材视频竖屏 互联网科技创新企业排名 科技赋能互联网健康 互联网科技年终奖 下一代互联网重大应用科技园 福仕德教育科技互联网 互联网科技创业计划的风险分析
0