zoukankan      html  css  js  c++  java
  • sysbench工具和mysql的基准测试

    一、基准测试

      1、什么是基准测试

        数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。

        基准测试与压力测试

        基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑(如购物车业务),要求真实的数据。

      2、基准测试的作用

        对MySQL的基准测试,有如下两种思路:

       (1)针对整个系统的基准测试:通过http请求进行测试,如通过浏览器、APP或postman等测试工具。该方案的优点是能够更好的针对整个系统,测试结果更加准确;缺点是设计复杂实现困难。

       (2)只针对MySQL的基准测试:优点和缺点与针对整个系统的测试恰好相反。

            在针对MySQL进行基准测试时,一般使用专门的工具进行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(因为模拟了许多Innodb的IO特性),下面介绍使用sysbench进行基准测试的方法。

    二,sysbench工具

      1、sysbench简介

      sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库;主要包括以下几种测试: 

      cup性能、磁盘IO性能、调度程序性能、内存分配以及传输速度、POSIX线程性能,数据库性能测试(OLTP基准测试)

      2、sysbench的安装

       下载解压:

    1 wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
    2 unzip sysbench-1.0.zip
    3 cd sysbench-1.0

       安装依赖

    yum install -y automake libtool

       安装:

    1 ./autogen.sh
    2 ./configure
    3 export LD_LIBRARY_PATH=/home/zhutong/DB/mysql-5.7.21/include #这里换成机器中mysql路径下的include
    4 make
    5 make install

       安装成功:

    [root@test sysbench-1.0]# sysbench --version
    sysbench 1.0.9

         报错:

    sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

       解决办法:  

    vi /etc/ld.so.conf
    下边加一行数据库的安装lib目录
    我的:
    /home/mysql/lib

        查看动态链接库中是否存在 libmysqlclient.so.20   

    ldconfig -p| grep mysql
    libmysqlclient.so.18 (libc6,x86-64) =>/usr/lib64/mysql/libmysqlclient.so.18

       不存在创建软连接并刷新动态链接库 

    ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/
    ldconfig

        再次查看

    ldconfig -p| grep mysql
      完美解决

    三、使用sysbench 测试表

      参数须知

      

      MySQL连接信息参数

    • --mysql-host:MySQL服务器主机名,默认localhost;如果在本机上使用localhost报错,提示无法连接MySQL服务器,改成本机的IP地址应该就可以了。
    • --mysql-port:MySQL服务器端口,默认3306
    • --mysql-user:用户名
    • --mysql-password:密码

      MySQL执行参数

    • --oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。
    • --oltp-tables-count:测试的表数量,根据实际情况选择
    • --oltp-table-size:测试的表的大小,根据实际情况选择
    • --threads:客户端的并发连接数
    • --time:测试执行的时间,单位是秒,该值不要太短,可以选择120
    • --report-interval:生成报告的时间间隔,单位是秒,如10

      1、准备数据 

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-table-engine=innodb  --db-driver=mysql --mysql-db=cloud-data  --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 --mysql-socket=/tmp/mysql.sock prepare

      

      2、执行测试

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-table-engine=innodb  --db-driver=mysql --mysql-db=cloud-data  --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 --mysql-socket=/tmp/mysql.sock run

      

       清理数据:

      

      分析结果:  

      其中,对于我们比较重要的信息包括:

      queries:查询总数及qps

      transactions:事务总数及tps

      Latency-95th percentile:前95%的请求的最大响应时间,本例中是23.1毫秒。

  • 相关阅读:
    Android ListView 列表视图
    android handler msg的使用 实现进度条
    Intent 传递数据
    微服务-springcloud
    微服务-dubbo学习
    日志收集系统
    微服务追踪
    链表有环判断,快慢指针两种方法/合并链表/删除重复元素/二分递归和while
    算法练习,链表二分最大n个
    池以及barrier简单
  • 原文地址:https://www.cnblogs.com/zbbiex/p/9808146.html
Copyright © 2011-2022 走看看