mysql5.7与mysql8对比测试

压测服务器配置与环境

· 实例类型:亚马逊t2.xlarge实例
· 存储:gp2(SSD存储,最小100 IOPS,最大16000 IOPS)
· 虚拟CPU:4
· 内存:16GiB
· MySQL5.7版本:MySQLCommunity Server (GPL) 5.7.24
· MySQL8.0版本:MySQLCommunity Server – GPL 8.0.14

mysql my.cnf关键参数设置

· innodb_max_dirty_pages_pct= 90 ##这是MySQL 8.0中的默认值。

· innodb_max_dirty_pages_pct_lwm= 10 ##这是MySQL 8.0中的默认值

· innodb_flush_neighbors=0

· innodb_buffer_pool_instances=8

· innodb_buffer_pool_size=8GiB

压测脚本

sb-prepare.sh

#!/bin/bash 
host=$1 
#host192.168.10.110
port=3306
user='sysbench'
password='MysqP@55w0rd'
table_size=500000
rate=20
ps_mode='disable'
sysbench/usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --threads=1--max-requests=0 --time=3600 --mysql-host=$host --mysql-user=$user--mysql-password=$password --mysql-port=$port --tables=10 --report-interval=1--skip-trx=on --table-size=$table_size --rate=$rate --db-ps-mode=$ps_modeprepare

sb-run.sh

#!/usr/bin/envbash

host=$1
port=3306
user="sysbench"
password="MysqP@55w0rd"
table_size=100000
tables=10
rate=20
ps_mode='disable'
threads=1
events=0
time=5
trx=100
path=$PWD

counter=1

echo "thread,cpu" >${host}-cpu.csv

for i in 16 32 64 128 256 512 1024 2048; 
do

threads=$i

mysql -h $host -e"SHOW GLOBAL STATUS" >> $host-global-status.log
tmpfile=$path/${host}-tmp${threads}
touch $tmpfile
/bin/bashcpu-checker.sh $tmpfile $host $threads &

/usr/share/sysbench/oltp_read_write.lua--db-driver=mysql --events=$events --threads=$threads --time=$time--mysql-host=$host --mysql-user=$user --mysql-password=$password--mysql-port=$port --report-interval=1 --skip-trx=on --tables=$tables--table-size=$table_size --rate=$rate --delete_inserts=$trx --order_ranges=$trx--range_selects=on --range-size=$trx --simple_ranges=$trx --db-ps-mode=$ps_mode--mysql-ignore-errors=all run | tee -a $host-sysbench.log

echo"${i},"`cat ${tmpfile} | sort -nr | head -1` >> ${host}-cpu.csv
unlink ${tmpfile}

mysql -h $host -e"SHOW GLOBAL STATUS" >> $host-global-status.log
done

python $path/innodb-ops-parser.py $host

mysql -h $host -e "SHOW GLOBALVARIABLES" >> $host-global-vars.log

/usr/share/sysbench/oltp_read_write.lua脚本执行读/写负载测试。该脚本转储全局状态和MySQL变量,收集CPU利用率,并解析由脚本innodb-ops-parser.py处理的InnoDB行操作。脚本根据基准测试期间收集的转储日志生成* .csv文件,我在这里使用Excel电子表格从* .csv文件生成图表。请检查 github中提交的代码。

处理图表结果

从上图可以看到 到512线程并发压测的时候。mysql8得到的行数将是mysql5.7的2倍,【性能是mysql5.7的2倍】。 无论工作负载如何,mysql8都能高效地运行 。

如上图所示,MySQL 8.0的结果趋势显示出其处理事务所需的时间比mysql5.7要小。

结论

总的来说,MySQL 8.0的性能已经远超过MySQL 5.7了。
MySQL 8.0中有许多改进。基准测试结果显示,与MySQL 5.7相比,MySQL 8.0不仅在处理读负载时,而且在读写混合的高负载下的性能都取得了令人瞩目的进步。

赞(2) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » mysql5.7与mysql8对比测试

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏