MySQL基准测试

1、什么是基准测试?

    基准测试是一种测量和评估软件性能指标的活动。用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响。

    基准测试是针对系统设置的一种压力测试。

    

    . 压力测试需要针对不同的主题,所使用的的数据和查询也是真实用到的。

    . 基准测试可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系。

 

2、基准测试的目的

    (1) 建立MySQL服务器的性能基准线,确定当前MySQL服务器运行情况。

    (2) 模拟比当前系统更高的负载,以找出系统的扩展瓶颈。增加数据库并发,观察QPS,TPS变化,确定并发量与性能最优的关系。

    (3) 测试不同的硬件、软件和操作系统配置。

    (4) 证明新的硬件系统设备是否配置正确。

 

3、如何进行基准测试

    (1) 对整个系统进行基准测试。

        从系统入口进行测试(如网站Web前端,手机APP前端)。

        优点:

            . 能够测试整个系统的性能,包括web服务器、缓存、数据库等。

            . 能反映出系统中各个组件接口间的性能问题,体现真实性能状况。

        缺点:

            . 测试设计复杂,消耗时间长。

    (2) 单独对MySQL进行基准测试

        优点:

            . 测试设计简单,所需耗费时间短。

        缺点:

            . 无法全面了解整个系统性能的基准线。

 

4、MySQL基准测试的常见指标

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

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

    (3) 响应时间。

    (4) 并发量:同时处理的查询请求的数量。

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

 

5、基准测试的步骤

    (1) 计划和设计基准测试

        . 对整个系统还是某一组件

        . 使用什么样的数据

        . 准备基准测试及数据收集脚本

            CPU使用率、IO、网络流量、状态与计数器信息等。

             Get_Test_info.sh

 
 
  1. #!/bin/bash
  2. INTERVAL=5
  3. PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-status
  4. RUNFILE=/home/imooc/benchmarks/running
  5. echo "1" > $RUNFILE
  6. MYSQL=/usr/local/mysql/bin/mysql
  7. $MYSQL -e "show global variables" >> mysql-variables
  8. while test -e $RUNFILE; do
  9. file=$(date +%F_%I)
  10. sleep=$(date +%s.%N | awk '{print 5 - ($1 % 5)}')
  11. sleep $sleep
  12. ts="$(date +"TS %s.%N %F %T")"
  13. loadavg="$(uptime)"
  14. echo "$ts $loadavg" >> $PREFIX-${file}-status
  15. $MYSQL -e "show global status" >> $PREFIX-${file}-status &
  16. echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatus
  17. $MYSQL -e "show engine innodb status" >> $PREFIX-${file}-innodbstatus &
  18. echo "$ts $loadavg" >> $PREFIX-${file}-processlist
  19. $MYSQL -e "show full processlist\G" >> $PREFIX-${file}-processlist &
  20. echo $ts
  21. done
  22. echo Exiting because $RUNFILE does not exists
  23.  

        . 运行基准测试

        . 保存及分析基准测试结果

            analyze.sh

 
 
  1. #!/bin/bash
  2. awk '
  3. BEGIN {
  4. printf "#ts date time load QPS";
  5. fmt=" %.2f";
  6. }
  7. /^TS/ {
  8. ts = substr($2,1,index($2,".")-1);
  9. load = NF -2;
  10. diff = ts - prev_ts;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值