测试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并刷盘持久化,最安全