mysql电商场景基准测试_mysql 基准测试

基准测试:不关心业务

模拟比当前系统更高的负载,以找到系统扩展瓶颈增加数据量并发,观察qps tps变化 找到性能最佳时刻的并发。测试不同的硬件,软件版本,和操作系统配置对数据库性能的影响。

怎样进行基准测试

一.对整个系统进行基准测试

从系统入口进行测试(如网站web前端)

优点:能够测试整个系统的性能 包括web服务器 缓存 数据库。

缺点:测试设计复杂 消耗时间长

二.单独对mysql进行基准测试

优点:操作简单 耗时短 适合针对某个具体问题进行测试

缺点:无法全面了解整个系统的性能基线

mysql基准测试常见指标

1.单位时间内所处理的事务数(TPS)

2.单位时间内处理的查询数(QPS)

3.响应时间(平均响应时间,最小响应时间,最大响应时间,各时间所占百分百)

4.并发量:同时处理的查询请求数量

正在工作中的并发的操作数或同时工作的数量

基准测试步骤

1.明确测试范围(系统还是单独mysql)

2.使用什么数据(生产环境的实际数据(使用生产环境数据库备份),如果只想知道某个参数变化带来的影响(使用软件生成测试需要的的数据和sql))

3.计划和设计基准测试

数据收集脚本(收集cpu使用率,IO,网络流量,状态和计数器信息)

类似下面的收集脚本

.sh收集脚本

INTERVAL=5

PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-status

RUNFILE=/home/imooc/benchmarks/running

echo "1" > $RUNFILE

MYSQL=/usr/local/mysql/bin/mysql

$MYSQL -e "show global variables" >> mysql-variables

while test -e $RUNFILE; do

file=$(date +%F_%I)

sleep=$(date +%s.%N | awk '{print 5 - ($1 % 5)}')

sleep $sleep

ts="$(date +"TS %s.%N %F %T")"

loadavg="$(uptime)"

echo "$ts $loadavg" >> $PREFIX-${file}-status

$MYSQL -e "show global status" >> $PREFIX-${file}-status &

echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatus

$MYSQL -e "show engine innodb status" >> $PREFIX-${file}-innodbstatus &

echo "$ts $loadavg" >> $PREFIX-${file}-processlist

$MYSQL -e "show full processlist\G" >> $PREFIX-${file}-processlist &

echo $ts

done

echo Exiting because $RUNFILE does not exists

运行基准测试

保存分析基准测试结果(可编写.sh分析脚本)

一些值得注意的问题

1.使用生产环境的数据时只使用了部分数据(应该选择数据库的全部备份)

2.在多用户的场景中,只做单用户的测试(对于多用户推荐使用多线程并发测试)

3.在单服务器上测试分布式应用(使用相同的架构测试)

4.反复执行同一个查询(容易缓存命中)

常见基准测试

系统整体测试(AB,http_load)

mysql基准测试工具

1.mysqlslap (mysql5.1后自带的工具)

特点

可以模拟服务器负载,并输出相关统计信息

可以指定或自动生成查询语句

常用参数

--auto-generate-sql (用于指定使用系统自带生成sql脚本和相关数据测试还是自己指定)

--auto-generate-sql-add-autoincrement(在生成的表中增加自增id)用innodb中,最好使用自增id做主键

--auto-generate-sql-load-type (指定测试中使用的查询类型:默的类型认为混合

)

--auto-generate-sql-write-number (指定初始化数据时生成的数据量)

--concurrcy (指定并发线程的数量)可以通过这个测试多并发,以使用逗号分隔不同数目的并发量

--engine (指定测试表的存储引擎,可以使用逗号分隔多个存储引擎,测试完一个存储引擎后,删除表再测试下一个)(不能喝--no-drop一起用)

--no-drop 指定不清理测试数据

--iterations 指定测试运行次数,每次运行一次测试会重新生成测试数据,所以不能和no-drop一起用

–number-of-queries 指定每个线程执行的查询数

–debug-info(指定输出额外的内存和cpu统计信息)

--number-int-cols指定测试表中包含int类型列的数量

--number-char-cols 指定测试表中包含vachar类型列的数量

--create-schema指定了用于执行测试的数据库的名字

--query 用于指定自定义sql的脚本--only-print 并不会运行测试脚本 而是把生成的脚本打印出来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值