测试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.225.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.158.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 -V

sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)

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

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

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

参数任选值意味着sync_binlog0binlog刷盘持久化由操作系统完成,性能好,存在丢失binlog的风险

sync_binlog1个事务提交后刷盘持久化,最安全

sync_binlogñ在每N个事务提交后进行刷盘持久化

innodb_flush_log_at_trx_commit0每秒钟写redo log并刷盘持久化

innodb_flush_log_at_trx_commit1个事务提交后写redo log并刷盘持久化,最安全

innodb_flush_log_at_trx_commit2事务提交后写redo log,两次刷盘持久化

双1模式下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禁用预编译语句,不然并发测试线程多时会报下面的错误。致命: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: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'函数失败:/ usr / local / share / sysbench / oltp_common.lua:288:SQL API错误致命:mysql_stmt_prepare()失败

使用脚本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=admin

passwd=admin

ports="8015 57222"

host=127.0.0.1

sysbench_test_mode="oltp_read_write oltp_read_only oltp_write_only"

sysbench_test_info_path=/tmp/sysbench-test

function 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=$1

mysql -u$user -p$passwd -P$port -h$host<

purge binary logs before now();

EOF

}

function clean_os_cache(){

echo 3 > /proc/sys/vm/drop_caches

}

function  sysbench_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

}

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

done

done

}

main

来源:r6d.cn/8cw

mysql8.0与mysql7.0_MySQL 5.7 vs 8.0,哪个性能更牛?相关推荐

  1. mysql5.7与8.0用那个_MySQL 5.7 vs 8.0,哪个性能更牛?

    背景 测试mysql5.7和mysql8.0 分别在读写.只读.只写模式下不同并发时的性能(tps,qps) 前提测试使用版本为mysql5.7.22和mysql8.0.15 sysbench测试前先 ...

  2. MySQL 5.7 vs 8.0,哪个性能更牛?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 背景 测试mysql5.7和mysql8.0分别在读写,选 ...

  3. mysql8.0.4以后_mysql官方源从8.0.3直接通过yum源升级到8.0.4后启动不成功解决方法...

    mysql官方源从8.0.3直接通过yum源升级到8.0.4后启动不成功解决方法 发布时间:2020-05-13 14:57:06 来源:亿速云 阅读:156 作者:三月 下面讲讲关于mysql官方源 ...

  4. windows 如何安装oracle 补丁包,Windows Server 2003 上安装 Oracle10g(10.2.0.1)并升级 至补丁(10.2.0.4) 图解...

    Windows Server 2003 上安装 Oracle10g(10.2.0.1)并升级 至补丁(10.2.0.4) 图解 第一部分:安装 Oracle 10.2.0.1 1.选择安装方法 2.选 ...

  5. 「Web2.0」的创造者表示:为Web3.0喝彩还为时尚早

    题图 | Kelly Sullivan / Getty Images for LinkedIn 图/ADOBE STOCK 最近Web3.0这个概念真的太火了. 简单来说,Web3.0将是去中心化.去 ...

  6. DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.Net2.0(ver 3.0.9Beta)

    英文名:DotNetTextBox V3.0 WYSWYG Web Control For Asp.Net2.0 中文名:DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.N ...

  7. ERROR: tensorboard 1.14.0 has requirement setuptools=41.0.0, but you'll have setuptools 39.1.0 whic

    ERROR: tensorboard 1.14.0 has requirement setuptools>=41.0.0, but you'll have setuptools 39.1.0 w ...

  8. tensorflow-tensorboard 0.4.0rc3 has requirement bleach==1.5.0, but you'll have bleach 2.0.0 which is

    tensorflow-tensorboard 0.4.0rc3 has requirement bleach==1.5.0, but you'll have bleach 2.0.0 which is ...

  9. device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/dev

     device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/dev 解决方法: sess = tf.Sess ...

最新文章

  1. wsl2 图形界面_WSL2配置xrdp一键启动至桌面环境
  2. git连接jenkins_基于 Jenkins 和 Kubernetes 的持续集成测试实践了解一下!
  3. 怎么判断程序运行的当前目录在哪?关键词:根目录
  4. android拨打电话
  5. 湖南大学第十四届ACM程序设计新生杯(重现赛)L-The Digits String (矩阵快速幂)
  6. 体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)
  7. java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...
  8. 微信小程序js数组初始化_微信小程序学习Course 3-2 JS数组对象学习
  9. 百度SEO EBCMS(易贝管理系统) v1.2.0
  10. 2009年度工作安排计划
  11. Windows10+CUDA8.0+VS2015+CUDNN5下配置caffe
  12. 哈夫曼编码(自底向上的哈夫曼编码)
  13. matlab中给图像加几个矩形框_如何用 matlab 在图片上绘制矩形框 和 添加文字 ?...
  14. excel的lookup函数
  15. 一些网络广告定价模式的含义
  16. 解决右键点击文件反应很慢 (可解决文件夹,以及各种exe,快捷方式,图片,txt等文件) 【亲测有效】
  17. 沙扬娜拉--靠!今天怎么了,成了诗人?!
  18. 树莓派连接yl-69土壤湿度传感器
  19. 短时傅里叶变换(1)
  20. Java 面试题 —— 老梁 Java 面试通关要点汇总集

热门文章

  1. java 生产者消费者代码_Java生产者和消费者代码
  2. 线程池是如何重复利用空闲的线程来执行任务的?
  3. LINQ能不能用系列(二)LINQ to SQL 效率比对
  4. 在android中ScrollView嵌套ScrollView解决方案
  5. mysqli与pdo防sql注入源码
  6. 拦截地址栏参数_selenium操作chrome时的配置参数
  7. 1500度的近视能学计算机吗,1500度近视考驾照,近视多少度不能考驾照
  8. 生活质量衡量系统_数据质量与数据质量八个维度指标
  9. html 图片position,【图解CSS#Position】
  10. Windows平台RTMP推送摄像头对接介绍