MYSQL性能优化之基准测试

基准测试(benchmarking)是一种测量和评估软件性能指标的活动。你可以在某个时候通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。
说简单点,就是针对系统设置的一种压力测试。测量系统性能,然后确保优化是否有效。

这里写图片描述
这里写图片描述

基准测试的目的:

这里写图片描述
对整个系统进行基准测试:
从系统入口进行测试(如网站Web前端,手机APP前端)

这里写图片描述

单独对MySQL进行基准测试
这里写图片描述

这里写图片描述

  • 响应时间是整个测试完成后的时间;
  • 并发量:同时处理的查询请求的数量(并发量不等于连接数)
  • 并发量实际上正在工作中的并发的操作数或同时工作的数量

基准测试的步骤:

  • 对整个系统还是某一组件
  • 使用什么样的数据
  • 实际情况:实际数据和实际运行的sql。利用生产环境的备份数据以及在一段时间产生的sql慢查日志运行多线程的回放来完成测试;如果是一个配置的测试(很小的修改)可以使用软件来完成
  • 准备基准测试以及数据收集脚本
  • 脚本自己编写(CPU使用率,IO,网络流量,状态与计数器信息等)
  • 运行基准测试,多次测试
  • 保存及分析基准测试结果
    收集脚本:
#!/bin/bash
INTERVAL=5 运行间隔
PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-status 保存位置
RUNFILE=/home/imooc/benchmarks/running 运行标识
echo "1" > $RUNFILE 
MYSQL=/usr/local/mysql/bin/mysql 记录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 & 收集mysql全集的状态信息
    echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatus
    $MYSQL -e "show engine innodb status" >> $PREFIX-${file}-innodbstatus & 收集Innodb的状态信息
    echo "$ts $loadavg" >> $PREFIX-${file}-processlist
    $MYSQL -e "show full processlist\G" >> $PREFIX-${file}-processlist & 收集mysql的线程情况
    echo $ts
done
echo Exiting because $RUNFILE does not exists
#!/bin/bash
awk '
   BEGIN {
     printf "#ts date time load QPS";
     fmt=" %.2f";
   }
   /^TS/ {
   ts = substr($2,1,index($2,".")-1);
   load = NF -2;
   diff = ts - prev_ts;
   printf "\n%s %s %s %s",ts,$3,$4,substr($load,1,length($load)-1);
   prev_ts=ts;
   }
   /Queries/{ 查询数量,QPS
   printf fmt,($2-Queries)/diff;
   Queries=$2
   }
   ' "$@" 
    添加TPS,每秒插入量,删除量,更新量,并发量,线程量。。。。

这里写图片描述

基准测试工具:

mysqlslap:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

sysbench:
这里写图片描述

./autogen.sh (unnecessary if you are building from a release tarball)
    ./configure (or ./configure --without-mysql to compile w/o MySQL support)
    make
    make install

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值