0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MySQL 5.7与MySQL 8.0 性能对比

数据分析与开发 来源:数据分析与开发 作者:数据分析与开发 2020-11-03 09:26 次阅读

背景

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

最早

测试使用版本为mysql5.7.22和mysql8.0.15

sysbench测试前先重启mysql服务,并清除os的缓存(避免多次测试时命中缓存)

每次进行测试都是新生成测试数据后再进行mysql5.7和mysql8.0的测试

每次测试时保证mysql5.7和mysql8.0的配置参数一致

环境

机器cat / etc / redhat-release |xargs echo'版本'&& dmidecode -s系统产品名称|xargs echo'是否虚拟化'&& cat / proc / cpuinfo | grep“ processor” | wc -l |xargs echo'cpu核数'版本CentOS Linux版本7.5.1804(核心)是否虚拟化KVM cpu核数4

myql5.7.22

5.7.22-log innodb_buffer_pool_size128M innodb_log_buffer_size64M innodb_log_file_size48M binlog_formatROW log_binON transaction_isolationREPEATABLE-READ

mysql8.0.15

8.0.15 innodb_buffer_pool_size128M innodb_log_buffer_size64M innodb_log_file_size48M binlog_formatROW log_binON transaction_isolationREPEATABLE-READ

系统平台

sysbench-V sysbench1.1.0(usingbundledLuaJIT2.1.0-beta3)

测试

在不同的持久化策略下(binlog,重做日志持久化)mysql5.7和mysql8.0在读写模式,引用模式,只写模式(oltp_read_write,oltp_read_only,oltp_write_only)下的性能表现

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

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

参数 任选值 意味着
sync_binlog 0 binlog刷盘持久化由操作系统完成,性能好,存在丢失binlog的风险
sync_binlog 1个 事务提交后刷盘持久化,最安全
sync_binlog ñ 在每N个事务提交后进行刷盘持久化
innodb_flush_log_at_trx_commit 0 每秒钟写redo log并刷盘持久化
innodb_flush_log_at_trx_commit 1个 事务提交后写redo log并刷盘持久化,最安全
innodb_flush_log_at_trx_commit 2 事务提交后写redo log,两次刷盘持久化

双1模式下

SHOWGLOBALVARIABLESWHEREVariable_nameIN('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模式下

SHOWGLOBALVARIABLESWHEREVariable_nameIN('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禁用预编译语句,不然并发测试线程多时会报下面的错误。致命:mysql_stmt_prepare()失败致命:MySQL错误:1461“不能创建超过max_prepared_stmt_count语句(当前值:16382)“致命:mysql_stmt_prepare()失败致命:MySQL错误:1461”不能创建超过max_prepared_stmt_count语句(当前值:16382)“致命:thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua 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'函数失败:/ usr / local / share / sysbench / oltp_common.lua:288:SQL API错误致命:mysql_stmt_prepare()失败

使用脚本

catsysbench_test_mysql5.7_8.0_tps_qps.sh #!/bin/bash #用于sysbench测试在读写模式、只读模式、只写模式下mysql5.7和mysql8.0的tps,qps #nohupbash$0>/tmp/sysbench_test2>&1& # user=admin passwd=admin ports="801557222" host=127.0.0.1 sysbench_test_mode="oltp_read_writeoltp_read_onlyoltp_write_only" sysbench_test_info_path=/tmp/sysbench-test functionred_echo(){ localwhat="$*" echo-e"$(date+%F-%T)e[1;31m${what}e[0m" } functioncheck_las_comm(){ if[$1-ne0];then red_echo$2 exit1 fi } functionrestart_mysqld(){ servicemysqld${1}restart sleep2 } functionpurge_binlog(){ port=$1 mysql-u$user-p$passwd-P$port-h$host</proc/sys/vm/drop_caches } functionsysbench_with_diff_thread(){ thread_num=$1 port=$2 order=$3 test_mode=$4 sysbench/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 } functionmain(){ fortest_modein$sysbench_test_mode;do forportin$ports;do forthread_numin{5,10,20,30,40,80,120,200};do restart_mysqld"$port" check_las_comm"$?""restartmysqld${port}failed" clean_os_cache purge_binlog"$port" red_echo"sysbench$thread_numthreadscleanupmysqld${port}" sysbench_with_diff_thread"$thread_num""$port""cleanup""$test_mode">/dev/null red_echo"sysbench$thread_numthreadspreparemysqld${port}" sysbench_with_diff_thread"$thread_num""$port""prepare""$test_mode">/dev/null mkdir-p$sysbench_test_info_path red_echo"sysbench$thread_numthreadsrunmysqld${port}$test_mode" sysbench_with_diff_thread"$thread_num""$port""run""$test_mode">$sysbench_test_info_path/${test_mode}_${thread_num}_$port #servicemysqld{port}stop done done done } main

责任编辑:xj

原文标题:MySQL 5.7 & MySQL 8.0 性能对比

文章出处:【微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MySQL
    +关注

    关注

    1

    文章

    829

    浏览量

    26704
  • MYSQL数据库
    +关注

    关注

    0

    文章

    96

    浏览量

    9438

原文标题:MySQL 5.7 & MySQL 8.0 性能对比

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用 sysbench 对华为云 Flexus 服务器 X 做 Mysql 应用加速测评

    目前的厂商服务器中是特有独一份的,应用加速包括 MySQL,Redis,NGINX 三种选择。并且服务器性能较同类产品有了大量优化,今天咱们针对 MySQL 应用加速测评一下。                         ❀
    的头像 发表于 01-23 17:26 83次阅读
    使用 sysbench 对华为云 Flexus 服务器 X 做 <b class='flag-5'>Mysql</b> 应用加速测评

    使用插件将Excel连接到MySQL/MariaDB

    使用插件将 Excel 连接到 MySQL/MariaDB 适用于 MySQL 的 Devart Excel 插件允许您将 Microsoft Excel 连接到 MySQL 或 MariaDB
    的头像 发表于 01-20 12:38 106次阅读
    使用插件将Excel连接到<b class='flag-5'>MySQL</b>/MariaDB

    适用于MySQL和MariaDB的.NET连接器

    支持 ORM 的适用于 MySQL 和 MariaDB 的 .NET 连接器 dotConnect for MySQL 是一种高性能 ADO.NET 数据提供程序,可在开发 MySQL
    的头像 发表于 01-16 14:17 90次阅读
    适用于<b class='flag-5'>MySQL</b>和MariaDB的.NET连接器

    MySQL数据库的安装

    MySQL数据库的安装 【一】各种数据库的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介绍
    的头像 发表于 01-14 11:25 116次阅读
    <b class='flag-5'>MySQL</b>数据库的安装

    华为云 Flexus X 实例 MySQL 性能加速评测及对比

    基于 sysbench 构造测试表和测试数据 12 3.5 数据库读写性能测试 13 四、业界 U 系列无加速 MySQL
    的头像 发表于 12-25 17:10 233次阅读
    华为云 Flexus X 实例 <b class='flag-5'>MySQL</b> <b class='flag-5'>性能</b>加速评测及<b class='flag-5'>对比</b>

    云服务器 Flexus X 实例 MySQL 应用加速测试

    文章目录 目录 文章目录   购买配置   基本配置参考如下:   连接服务器   查询MySQL状态   启动MySQL   添加配置   添加密码并修改权限   性能测试   C#插入数据测试
    的头像 发表于 12-24 12:19 209次阅读
    云服务器 Flexus X 实例 <b class='flag-5'>MySQL</b> 应用加速测试

    MySQL还能跟上PostgreSQL的步伐吗

    Percona 的老板 Peter Zaitsev最近发表一篇博客,讨论了MySQL是否还能跟上PostgreSQL的脚步。Percona 作为MySQL 生态扛旗者,Percona 开发了知名
    的头像 发表于 11-18 10:16 259次阅读
    <b class='flag-5'>MySQL</b>还能跟上PostgreSQL的步伐吗

    详解MySQL多实例部署

    详解MySQL多实例部署
    的头像 发表于 11-11 11:10 317次阅读

    MySQL编码机制原理

    前言 一位读者在本地部署 MySQL 测试环境时碰到一个问题,我觉得挺有代表性的,所以写篇文章介绍一下,看完相信你会对 MySQL 的编码机制有最本质的了解,本文的目录结构如下 读者问题简介
    的头像 发表于 11-09 11:01 286次阅读

    适用于MySQL的dbForge架构比较

    dbForge Schema Compare for MySQL 是一种工具,用于轻松有效地比较和部署 MySQL 数据库结构和脚本文件夹差异。该工具提供了 MySQL 数据库架构中所有差异的全面视图。
    的头像 发表于 10-28 09:41 247次阅读
    适用于<b class='flag-5'>MySQL</b>的dbForge架构比较

    Jtti:MySQL初始化操作如何设置root密码

    MySQL初始化时,可以通过以下步骤设置root密码: 打开命令行工具,使用以下命令启动MySQL服务:   sudo service mysql start   使用以下命令登录MySQL
    的头像 发表于 08-08 16:45 430次阅读

    MySQL知识点汇总

    大家好,这部分被称为DQL部分,是每个学习MySQL必须要学会的部分,下面就让我来介绍MySQL中的其他部分。
    的头像 发表于 08-05 15:27 446次阅读
    <b class='flag-5'>MySQL</b>知识点汇总

    华纳云:如何修改MySQL的默认端口

    MySQL是世界上最流行的开源关系型数据库管理系统之一。在某些情况下,由于安全性、网络策略或端口冲突的原因,数据库管理员可能需要更改MySQL服务的默认监听端口。本文将指导您如何在不同的操作系统上
    的头像 发表于 07-22 14:56 344次阅读
    华纳云:如何修改<b class='flag-5'>MySQL</b>的默认端口

    MySQL的整体逻辑架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心
    的头像 发表于 04-30 11:14 488次阅读
    <b class='flag-5'>MySQL</b>的整体逻辑架构

    MySQL忘记root密码解决方案

    mysql登录密码为password()算法加密,解密成本太高,以下为通用方案; 原理:mysql提供了特殊启动方式,即跳过权限表验证,启动后,登录不需要提供密码; 登录后,即可修改mysql数据库的user表,重置
    的头像 发表于 04-23 16:08 758次阅读