书接上回,接下来为大家带来一篇详细的MySQL压测,如果没有安装sysbench的话请参考上文,接下来直接开干!
安装sysbench请点击链接
创建测试库以及表
#创建一个库
create databases a character set
utf8mb4 collate utf8mb4_bin;#往库里添加数据
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_read_write \
--db-ps-mode=disable prepare
sysbench参数解析
# 啥数据库用对应的数据库驱动
--db-driver=mysql
# 连续访问120秒
--time=120
# 10个线程模拟并发访问
--threads=10
# 每隔1秒输出一下压测情况
--report-interval=1
# 数据库所在机器的IP地址
--mysql-host=127.0.0.1
# 端口号:3306
--mysql-port=3306
# 用户名
--mysql-user=root
# 密码
--mysql-password=lmx
# 压测数据库
--mysql-db=a
# 模拟构造10个测试表
--tables=10
# 每个表构造10万条测试数据,测试表的名字会是类似于sbtest1,sbtest2这样
--table_size=100000
# 执行oltp数据库的读写测试
oltp_read_write
# 禁止ps模式
--db-ps-mode=disable
# 参照这个命令的设置去构造出来我们需要的数据库里的数据
# 自动创建20个测试表,每个表里创建10万条测试数据
prepare
待测试表和测试数据构造完毕之后就可以开始进行压测了。
开始测压
1. 综合测压oltp_read_write
模式
模式就是测试命令里的参数
#命令没变,只是把prepare改成了run,意思就是运行
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_read_write \
--db-ps-mode=disable run#输出参数如下,指定多少秒就是输出多少秒
[ 1s ] thds: 10 tps: 291.30 qps: 5921.67 (r/w/o: 4154.95/1175.16/591.57) lat (ms,95%): 43.39 err/s: 0.00 reconn/s: 0.00
输出结果解析一下
# 第多少秒输出的压测报告
[ 1s ] # 压测线程数量:10个
thds: 10 # 每秒执行事务数量:291.30个
tps: 291.30 # 每秒执行请求数量:5921.67个
qps: 5921.67 # 每秒的请求数中,读请求个数/写请求个数/其他请求个数
# 每秒(5921.67个)请求中,读请求:4154.95个、写请求:1175.16个,其他请求:591.57个
(r/w/o: 4154.95/1175.16/591.57)
# 95%的请求延迟在43.39 ms以下
lat (ms,95%): 43.39
# 每秒请求数中的失败数量
err/s: 0.00
# 每秒请求数中的重连数量
reconn/s: 0.00
压测完成之后,会显示一个总压测报告,分析如下:
# SQL统计信息
SQL statistics:# 执行的查询类型及其数量queries performed:read: 572880 # 读查询数量write: 163680 # 写查询数量other: 81840 # 其他类型查询数量(可能是更新、删除等)total: 818400 # 总查询数量# 执行的事务数量及其每秒事务数transactions: 40920 (340.93 per sec.) # 总事务数及每秒事务速率# 执行的总查询数量及其每秒查询数queries: 818400 (6818.60 per sec.) # 总查询数及每秒查询速率# 被忽略的错误数量及其每秒错误数ignored errors: 0 (0.00 per sec.) # 无被忽略的错误# 重新连接次数及其每秒重新连接数reconnects: 0 (0.00 per sec.) # 无重新连接# 一般统计信息
General statistics:# 测试总时间total time: 120.0236s # 总测试时长# 总事件数量(此处指事务数量)total number of events: 40920 # 总事务数# 延迟统计信息(以毫秒为单位)
Latency (ms):# 最小延迟min: 3.39 # 最小响应时间# 平均延迟avg: 29.32 # 平均响应时间# 最大延迟max: 102.42 # 最大响应时间# 95百分位延迟95th percentile: 38.25 # 95%的请求响应时间不超过38.25毫秒# 总延迟时间sum: 1199974.23 # 所有请求的总响应时间# 线程公平性统计信息
Threads fairness:# 每个线程平均处理的事件数及其标准差events (avg/stddev): 4092.0000/18.68 # 每个线程平均处理的事务数及标准差,显示线程间负载是否均衡# 每个线程平均执行时间及其标准差execution time (avg/stddev): 119.9974/0.01 # 每个线程平均执行时间及标准差,同样显示线程间执行时间的均衡性
接下来测试就不分析结果了,自行参考这个案例,或者是问ai,接下来重点介绍常用的测压
2. 只读性能oltp_read_only
模式
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_read_only \
--db-ps-mode=disable run
3. 删除性能(oltp_delete )模式
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_delete \
--db-ps-mode=disable run
4.更新索引字段性能oltp_update_index
模式
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_update_index \
--db-ps-mode=disable run
5.更新非索引字段性能oltp_update_non_index
模式
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_update_non_index \
--db-ps-mode=disable run
6. 插入性能oltp_insert
模式
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_insert \
--db-ps-mode=disable run
7. 写入性能oltp_write_only
模式
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_write_only \
--db-ps-mode=disable run
执行完成压测之后可以将run改成cleanup,清除数据
/usr/sysbench/bin/sysbench --db-driver=mysql --time=120 --threads=10 \
--report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-password=lmx --mysql-db=a --tables=10 --table_size=100000 oltp_write_only \
--db-ps-mode=disable cleanup
以上就是sysbench的测压方式了,如果对您有用请收藏点赞关注,谢谢!,下篇为大家MySQL
pt(Percona Toolkit)的安装和使用