四、Mysql基准测试介绍及用法

前言:分三部分
一、为什么需要进行基准测试
从 操作系统、硬件、服务器配置分析 mysql性能,本文不包括数据库逻辑设计
目的:
a、建立mysql服务器的性能基准线,确定当前mysql服务器运行情况。
b、模拟比当前系统更高的负载,以找出系统的扩展瓶颈,增加数据库并发,观察qps,tps变化,确定并发量与性能最优的关系。
c、测试不同的硬盘、软件、操作系统配置的效率

1、基准测试定义:
基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响。
尽量直接、简单、易于比较、用于评估服务器的处理能力。不关心业务逻辑。

2、压力测试
对真实的业务数据进行测试,获取真实系统所能承受的压力。需模拟真实数据。

3、测试方式
a、从系统入口进行测试(如网站web前端,手机APP前端)
优点:能测试整个系统性能,包括缓存、数据库等。能够反映给出系统各个组件接口间的性能问题体现真实性能状况。
缺点: 测试设计复杂,消耗时间长
b、单独对mysql进行基准测试。
优点:测试方法简单,消耗时间短
缺点:无法全面了解系统的性能基线

4、常见测试指标
TPS: 事务数量
QPS:查询数量
响应时间:
并发数量:并发数量,不等于连接数。

5、注意事项
a、使用生产环境数据时只使用了部分数据
b、在多用户场景中,只做单用户测试
c、在单服务器上测试分布式应用
c、返回执行同一查询(容易缓存命中)

6、工具
a、mysqlslap:
特点
模拟服务器负载,并输出相关统计信息。
可以指定也可以自动生成查询语句。
b、sysbench:
相比 mysqlslap 更优秀

二、基准测试工具之mysqlslap
简介:为mysqlslap 是mysql自带的工具

参数介绍:
–auto-generate-sql 由系统自动生成sql脚本进行测试
–auto-generate-sql-add-autoincrement 在生成的表中增加自增ID
–auto-generate-sql-load-type read,key,write,update和mixed(默) read:查询 write:插入 key:读主键 update:更新主键 mixed:一半插入一半查询
–auto-generate-sql-write-number 指定初始化数据库时生成的数据量
–concurrency 指定并发线程数量
–engine 指定存储引擎,也可以多个,如果指定多个,会先执行其中一种,再清空,重新测试另一张
–no-drop 不清理测试数据
–iterations 指定测试运行次数
–number-of-queries 总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算(–number-of-queries / --concurrency )
–debug-info 指定输出额外的内存及CPU统计信息
–number-int-cols 指定测试表中包含的int类型列的数量
–number-char-cols 指定测试表中包含的varchar类型列的数量
–create-schema 指定用于执行测试的数据库名字
–query用于指定自定义sql的脚本
–only-print 并不允许测试脚本,而是把生成的脚本打印出来

例如:
mysqlslap -hlocalhost -uroot -p123456 --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=200 --auto-generate-sql-load-type=mixed --auto-generate-sql-write-number=1000000 --create-schema=sbtest>1.sql

Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.180 seconds
Minimum number of seconds to run all queries: 0.146 seconds
Maximum number of seconds to run all queries: 0.235 seconds
Number of clients running queries: 50 //总共几个并发
Average number of queries per client: 4 //每个并发执行

三、sysbench基准测试
官网地址:
https://github.com/akopytov/sysbench#linux

1、安装:(1.0.16版本)
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh| sudo bash
sudo yum -y install sysbench

命令后面跟执行方式
prepare、run、cleanup

2、CPU测试(通过素数计算,时间越短越好)
执行命令
sysbench cpu run
注意:只测试单核,并不能进行多核测试。

参考 https://www.jianshu.com/p/be8dfa2ec10b

3、IO测试(测试 ssd 或 raid 盘)
注意:测试数据一定要大于内存,否则走的都是缓存。
在这里插入图片描述
a、创建测试需要的文件
sysbench fileio --file-total-size=2G prepare

在这里插入图片描述

b.1、可用参数
sysbench fileio help(test-model = rndrw 更符合数据库)
在这里插入图片描述

b.2、执行测试命令
sysbench fileio --file-total-size=2G --file-test-mode=rndrw run

在这里插入图片描述

4、mysql测试
a、找到测试脚本 oltp_read_write.lua
若找不到执行 find / -name oltp_read_write.lua 命令执行。
b、切换到脚本目录下 ,执行
sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sbtest --mysql-user=root --mysql-password=123456 --table_size=20000 --tables=1 --threads=500 --events=500 --report-interval=10 --time=0 run
c、若出现以下错误
Can not connect to MySQL server. Too many connections”-mysql 1040错误:
则设置最大连接数

shell>mysql -uroot -p****
mysql>show variables like ‘max_connections’;(查看当前的最大连接数)
mysql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)
mysql>show variables like ‘max_connections’;(查看当前的最大连接数)
mysql>exit

再次执行命令

d、结果
在这里插入图片描述

queries performed:
read: 4003048 //总select数量
write: 1143728 //总update、insert、delete语句数量
other: 571864 //commit、unlock tables以及其他mutex的数量
total: 5718640
transactions: 285932 (2382.10 per sec.) //通常需要关注的数字(TPS)
read/write requests: 5146776 (42877.85 per sec.)
other operations: 571864 (4764.21 per sec.)
ignored errors: 0 (0.00 per sec.) //忽略的错误数
reconnects: 0 (0.00 per sec.)

General statistics:
total time: 120.0334s //即max-time指定的压测实际
total number of events: 285932 //总的事件数,一般与transactions相同
total time taken by event execution: 15362.6623s
response time:
min: 17.60ms
avg: 53.73ms //95%的语句的平均响应时间
max: 252.90ms
approx. 95 percentile: 66.88ms

Threads fairness:
events (avg/stddev): 2233.8438/9.04
execution time (avg/stddev): 120.0208/0.01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值