3-1 什么是基准测试

测量系统性能,优化是否有效?MySQL基准测试。

定义:基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能基准,以便当系统发生软硬件

变化时重新进行基准测试以评估变化对性能的影响。

基准测试:直接、简单、易于比较,用于评估服务器的处理能力。

压力测试:对真实的业务数据进行测试,获得真实系统所能承受的压力。

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

基准测试的目的:

1、建立MySQL服务器的性能基准线

2、模拟比当前系统更高的负载,以找出系统的拓展瓶颈

3、测试不同的硬件、软件和操作系统配置是否配置正确

3-2 如何进行基准测试

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

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

单独对MySQL进行基准测试

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

MySQL基准测试的常见指标:

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

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

响应时间:平均、最小、最大、各时间所占百分比

并发量:同时处理的查询请求的数量。正在工作中的并发的操作数或同时工作的数量。

3-3 基准测试演示实例

计划和设计基准测试

准备基准测试及数据收集脚本,CPU使用率、IO、网络流量、状态与计数器信息等

Get_Test_info.sh

#!/bin/bash
INTERVAL=5
PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-status
RUNFILE=/home/imooc/benchmarks/running
echo "" > $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

analyze.sh

#!/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/{
printf fmt,($2-Queries)/diff;
Queries=$2
}
' "$@"

基准测试中容易忽略的问题

  • 在单服务器上测试分布式应用,推荐:使用相同架构进行测试。

3-4 Mysql基准测试工具之mysqlslap

MySQL服务器自带的基准测试工具,随MySQL一起安装。

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

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

常用参数说明

3-5 Mysql基准测试工具之sysbench

安装说明

./autogen.sh

./configure --with-mysql-includes=/usr/local/mysql/include/--with-mysql-libs=/usr/local/mysql/lib/

make && make install

常用参数

3-6 sysbench基准测试演示实例

 

create database imooc;

grant all privileges on *.* to sbest@'localhost' identified by '123456';

exit

cd tests/db

ls

ls -1 *lua

show processlist

最新文章

  1. GoF--外观设计模式
  2. TeamTalk源码分析之服务端描述
  3. C#操作文件夹及文件的方法的使用
  4. 【uTenux实验】任务管理
  5. python 使用*args 和**kwargs
  6. centOS 一键php环境安装-php博弈
  7. python---pyc pyo文件详解
  8. iOS开发之地图代理不起作用(提示vImage decode failed, falling back to CG path.)
  9. (整理)ubuntu 的 相关知识(来自 鸟哥的私房菜)
  10. 如何只克隆git仓库中的一个分支?
  11. 基于visual Studio2013解决C语言竞赛题之0604二维数组置换
  12. GIT用服务器上的版本强制覆盖掉本地的版本(转)
  13. RaspberryPI 连接rs232模块接线图
  14. java项目开发第五天——奋力完成数据库
  15. os x下如何挂载iso镜像
  16. JS高程12.2.3元素大小的学习笔记
  17. Mysql 存储过程批量建表
  18. 关于Linux安装Mono 3.4的bug
  19. POST BOY : Restful API 调试工具
  20. Codeforces Gym 191033 E. Explosion Exploit (记忆化搜索+状压)

热门文章

  1. 吴裕雄--天生自然java开发常用类库学习笔记:观察者设计模式
  2. 整合 nginx php-fpm
  3. LocalDateTime整合到SpringBoot + MyBatis中
  4. linux下安装redis,按照redis官网安装不成功需要提前安装c++环境(安装成功并可以测试)
  5. 【pwnable.kr】 uaf
  6. javascript 创建私有变的三个方法
  7. 73.Python中ORM聚合函数详解:Count
  8. JDBC获取数据库连接慢
  9. HDOJ 1722--Cake(切蛋糕问题)
  10. junit基础学习之-测试controller层(2)