mysql基准测试

本文详细介绍sysbench工具的安装与使用方法,并通过实例演示如何进行CPU、文件IO及MySQL数据库的基准测试。涵盖参数配置、测试场景搭建及结果解读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sysbench 压测工具

安装

1 curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
在这里插入图片描述
2 yum -y install sysbench
在这里插入图片描述
3 版本验证: sysbench -version

参数介绍

在这里插入图片描述
–threads=N 要使用的线程数,客户端的并发连接数,默认 1 个 [1]
–events=N 最大允许的事件个数 [0]
–time=N 最大的总执行时间,测试执行的总时间,单位是秒,默认为10秒
–forced-shutdown=STRING 在 --time 时间限制到达后,强制关闭之前等待的秒数,默认“off”
–thread-stack-size=SIZE 每个线程的堆栈大小 [64K]
–rate=N 平均传输速率。0 则无限制 [0]
–report-interval=N 生成报告的时间间隔,以秒为单位定期报告具有指定间隔的中间统计信息 0表示禁用中间报告 [0]
–report-checkpoints=[LIST,…] 转储完整的统计信息并在指定的时间点重置所有计数器。参数是一个逗号分隔的值列表,表示从测试开始经过这个时间量时必须执行报告检查点(以秒为单位)。报告检查点默认关闭。 []
–debug[=on|off] 打印更多 debug 信息 [off]
–validate[=on|off] 尽可能执行验证检查 [off]
–help[=on|off] 显示帮助信息并退出 [off]
–version[=on|off] 显示版本信息并退出 [off]
–config-file=FILENAME 包含命令行选项的文件
–tx-rate=N 废弃,改用 --rate [0]
–max-requests=N 废弃,改用 --events [0]
–max-time=N 废弃,改用 --time [0]
–num-threads=N 废弃,改用 --threads [1]

#sysbench~cpu基准测试

1 cat /proc/cpuinfo
cpu cores : 1

2 cat /proc/cpuinfo
cpu cores : 2
此处需要不同品牌的cpu处理器进行对比,因为我实在虚拟机上测试的,所以几乎没区别,就没有上传图片

#sysbench的文件io基准测试

文件系统的io基准测试模拟了很多innodb的I/O特性
参数简介:
–file-block-size、
–file-io-mode、
–file-fsync-freq 、
–file-rw-ratio 。
对比两台服务器的io性能,需要跑相同的线程。
其中–file-test-mode的选项如下:
seqwr:顺序写入
seqrewr:顺序重写
seqrd:顺序读取
rndrd:随机读取
rndwr:随机写入
rndrw:混合随机读写

sysbench fileio --threads=1 --file-total-size=5G --file-test-mode=rndrw prepare
在这里插入图片描述
此图为memory,cpu资源相同环境下的混合随机读写速度(左:机械盘,右:固态盘)

sysbench fileio --threads=1 --file-total-size=5G --file-test-mode=rndrw prepare
在这里插入图片描述
sysbench fileio --threads=1 --file-total-size=5G cleanup

#sysbench~mysql基准测试

sysbench oltp_read_write --db-driver=mysql --time=300 --threads=1 --report-interval=3 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=10000 prepare

–db-driver=mysql:数据库的驱动类型
–time=300:访问的时间300秒
–threads=1:使用1个线程模拟并发访问
–report-interval=3:表示每隔3秒输出压测情况
–mysql-db=test:指定测试的库为test_db
–tables=20:在这个库中构建20个表
–table_size=10000:每个表中构建出 10万条测试数据
oltp_read_write:表示执行oltp 数据库的读写测试
prepare:准备阶段

/etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
lower_case_table_names = 1
skip-name-resolve = 1
character-set-server = utf8
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:1G:autoextend
log_bin_trust_function_creators = 1

sysbench oltp_read_write --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=10000 --db-ps-mode=disable run > oltp_read_write.log

在这里插入图片描述
thds:10 : 表示当前有10个线程正在压测
tps:379.92 : 表示当前每秒执行了 379.92 个查询
qps:7827: 表示当前每秒可以执行 7827 个请求
(r/w/o: 5474/1566/785) : 表示在每秒 5474 个请求中,有 1566 个读请求,785 个写请求,32 个其他请求
lat (ms,95%): 36.89:表示 95% 的请求的延迟都在36.89 毫秒以下
err/s:1: 表示每秒1个请求失败
reconn/s: 0.00:表示发生了0次的网络重连

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
lower_case_table_names = 1
skip-name-resolve = 1
character-set-server = utf8
innodb_buffer_pool_size = 5G
innodb_data_file_path = ibdata1:1G:autoextend
log_bin_trust_function_creators = 1

sysbench oltp_read_write --db-driver=mysql --time=300 --threads=50 --report-interval=2 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=100000 --db-ps-mode=disable run > oltp_read_write.log
在这里插入图片描述

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
lower_case_table_names = 1
skip-name-resolve = 1
character-set-server = utf8
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:1G:autoextend

sysbench
oltp_read_write --db-driver=mysql --time=300 --threads=30 --report-interval=2 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=100000 --db-ps-mode=disable run > oltp_read_write.log

在这里插入图片描述

总结

由上述压测结果得出,oltp场景下,cpu,memory,buffer cache增加会显著的影响tps,qps。但是对io的影响不是很明显,oltp场景对应的事务多,数据量小的业务。memory和db buffer增大,导致数据多缓存于buffer cache,所以数据从内存和磁盘间的交换较少。cpu处理频率高。如果是生还环境,需要分析具体sql,以及查阅查查profile和perforomance进行具体的性能分析

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶博雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值