zoukankan      html  css  js  c++  java
  • 《打造扛得住的MySQL数据库架构》第3章 MySQL基准测试

    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 "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 processlistG" >> $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 "
    %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

    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    链表VS数组
    数组VS集合
    最好、最坏、平均、均摊时间复杂度
    代码时间、空间复杂度分析
    “echo >”和“echo >>”的区别
    两数之和
    hadoop学习之----------IntelliJ IDEA上实现MapReduce中最简单的单词统计的程序(本地 和 hadoop 两种实现方式)
    Ubuntu16.04中解决关于The Internet Topology Zoo 的gml文件的读取并画图的问题
    Ubuntu16.04解决Ubuntu Sofware打开后无反应
    Ubuntu16.04中如何启用floodlight的一种方式
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/12275522.html
Copyright © 2011-2022 走看看