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

《打造扛得住的MySQL数据库架构》第3章 MySQL基准测试的更多相关文章

  1. MySQL中 如何查询表名中包含某字段的表 ,查询MySql数据库架构信息:数据库,表,表字段

    --查询tablename 数据库中 以"_copy" 结尾的表 select table_name from information_schema.tables where ta ...

  2. mysql数据库架构设计与优化

    mysql数据库架构设计与优化 2019-04-23 20:51:20 无畏D尘埃 阅读数 179  收藏 更多 分类专栏: MySQL   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...

  3. MYSQL数据库自动本地/异地双备份/MYSQL增量备份

    构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...

  4. mysql数据库优化课程---18、mysql服务器优化

    mysql数据库优化课程---18.mysql服务器优化 一.总结 一句话总结: 1.四种字符集问题:字符集都设置为utf-82.slow log慢查询日志问题3.root密码丢失 1.mysql存在 ...

  5. mysql数据库优化课程---17、mysql索引优化

    mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...

  6. mysql数据库优化课程---16、mysql慢查询和优化表空间

    mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...

  7. mysql数据库优化课程---15、mysql优化步骤

    mysql数据库优化课程---15.mysql优化步骤 一.总结 一句话总结:索引优化最立竿见影 1.mysql中最常用最立竿见影的优化是什么? 索引优化 索引优化,不然有多少行要扫描多少次,1亿行大 ...

  8. mysql数据库优化课程---13、mysql基础操作

    mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...

  9. 重新学习MySQL数据库1:无废话MySQL入门

    重新学习Mysql数据库1:无废话MySQL入门 开始使用 我下面所有的SQL语句是基于MySQL 5.6+运行. MySQL 为关系型数据库(Relational Database Manageme ...

  10. mysql数据库优化课程---12、mysql嵌套和链接查询

    mysql数据库优化课程---12.mysql嵌套和链接查询 一.总结 一句话总结:查询user表中存在的所有班级的信息? in distinct mysql> select * from cl ...

随机推荐

  1. SNOI2019 选做

    施工中... d1t1 字符串 题面 考虑两个字符串 \(s_i,s_j(i<j)\) ,实质是 \(s[i+1,\dots j]\) 和 \(s[i,\dots ,j-1]\) 的字符串字典序 ...

  2. leetcode1019 Next Greater Node In Linked List

    """ We are given a linked list with head as the first node. Let's number the nodes in ...

  3. 编译安装常用包+阿里镜像源-常用资源-系统-下载-科莱软件下载-docker仓库包-安全圈-杏雨梨云-图形界面安装-docker私有双仓库-阿里源报错处理-centos7目录大小

    yum install apr-util apr-util-devel apr apr-devel pcre pcre-devel zlib zlib-devel openssl openssl-de ...

  4. JAVA笔记03 变量和运算符 面试题以及笔记

    标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...

  5. vue axios的跨域前后端解决方案

    原因出于安全考虑,浏览器有一个同源策略.浏览器中,异步请求的地址与目标地址的协议.域名和端口号三者与当前有不同,就属于跨域请求. 限制跨域访问是浏览器的一个安全策略,因为如果没有这个策略,那么就有被跨 ...

  6. dede:list 与 dede:arclist 的区别

    1.{dede:list}是用于列表页的文章列表调用,通常是用于list_article.htm页面,这个文章列表是可以分页的. 功能说明:表示列表模板里的分页内容列表适用范围:仅列表模板 list_ ...

  7. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

  8. php.laravel.csrf

    概念请自己查 在全局帮助函数库Illuminate\Foundation\helpers.php中有以下几个函数定义,在看过前两个函数实现可以在使用中多少有点帮助. function csrf_fie ...

  9. 前端安全之 XSS攻击

    参看: XSS的原理分析与解剖 前端安全 -- XSS攻击 web大前端开发中一些常见的安全性问题 1.前言 XSS 是面试时,hr提出来给我的,然后大体的浏览一遍,今天才查阅资料大体了解了它. XS ...

  10. 干货分享:想要写好Proposal,这四个问题必须解决

    当大家确定了毕业论文选题之后,下一步就是着手写开题报告,也就是proposal.开题报告或者说是研究计划要回答四个问题:为什么这个问题重要,为什么这个问题很难解决,为什么现在要考虑解决这个问题,为什么 ...