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

    文章

    897

    浏览量

    29230
  • MYSQL数据库
    +关注

    关注

    0

    文章

    97

    浏览量

    10196

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MySQL 8.0性能优化实战指南

    作为一名运维工程师,MySQL数据库优化是我们日常工作中最具挑战性的任务之一。MySQL 8.0作为当前主流版本,在性能、安全性和功能上都有了显著提升,但如何充分发挥其潜力,仍需要我们
    的头像 发表于 07-24 11:48 538次阅读

    MySQL数据备份与恢复策略

    数据是企业的核心资产,MySQL作为主流的关系型数据库管理系统,其数据的安全性和可靠性至关重要。本文将深入探讨MySQL的数据备份策略、常用备份工具以及数据恢复的最佳实践,帮助运维工程师构建完善的数据保护体系。
    的头像 发表于 07-14 11:11 465次阅读

    企业级MySQL数据库管理指南

    在当今数字化时代,MySQL作为全球最受欢迎的开源关系型数据库,承载着企业核心业务数据的存储与处理。作为数据库管理员(DBA),掌握MySQL的企业级部署、优化、维护技能至关重要。本文将从实战角度出发,系统阐述MySQL在企业环
    的头像 发表于 07-09 09:50 504次阅读

    介绍三种常见的MySQL高可用方案

    方案——MHA(MySQL High Availability Manager)、PXC(Percona XtraDB Cluster) 和 Galera Cluster。我们将从原理、架构、优势和局限性等角度对比这三种方案,并探讨它们在实际应用中的部署场景和最佳实践。
    的头像 发表于 05-28 17:16 1000次阅读

    除了增删改查你对MySQL还了解多少

    我们都知道MySQL服务器的默认端口为3306,之后就在这个端口号上等待客户端进程进行连接(MySQL服务器会默认监听3306端口)。
    的头像 发表于 04-14 17:20 513次阅读

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

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

    从Delphi、C++ Builder和Lazarus连接到MySQL数据库

      从 Delphi、C++ Builder 和 Lazarus 连接到 MySQL 数据库 MySQL 数据访问组件(MyDAC)是一个组件库,提供从 Delphi 和 C++ Builder
    的头像 发表于 01-20 13:47 1315次阅读
    从Delphi、C++ Builder和Lazarus连接到<b class='flag-5'>MySQL</b>数据库

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

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

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据库

    适用于 MySQL 和 MariaDB 的 Python 连接器 Python Connector for MySQL 是一种可靠的连接解决方案,用于从 Python 应用程序访问 MySQL
    的头像 发表于 01-17 12:18 844次阅读
    适用于<b class='flag-5'>MySQL</b>和MariaDB的Python连接器:可靠的<b class='flag-5'>MySQL</b>数据连接器和数据库

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

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

    windows服务器备份mysql脚本

    osimport reimport datetimeimport subprocess## 需要备份数据库的登录信息mysql_host = { 'test': '10.10.3.207'}db_user
    的头像 发表于 01-02 09:14 667次阅读

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

    基于 sysbench 构造测试表和测试数据 12 3.5 数据库读写性能测试 13 四、业界 U 系列无加速 MySQL
    的头像 发表于 12-25 17:10 852次阅读
    华为云 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 798次阅读
    云服务器 Flexus X 实例 <b class='flag-5'>MySQL</b> 应用加速测试

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
    的头像 发表于 12-16 11:05 1000次阅读
    数据库数据恢复—<b class='flag-5'>Mysql</b>数据库表记录丢失的数据恢复流程