文章目录

  • 安装 sysbench
  • sysbench语法
  • 使用示例
  • 结果分析
  • 使用建议

安装 sysbench

最初接触这个工具还是在两年前看《高性能MySQL》的时候,那时候没安装上呀,就没弄了、
我就想起来现在 luasql 也没安装上,会不会过段时间这也不是事儿了。

1、wget https://github.com/akopytov/sysbench/archive/1.0.20.tar.gz
2、tar -zxvf 1.0.20.tar.gz
3、
sudo apt install -y automake
sudo apt install -y libtool
sudo apt install -y pkg-config
sudo apt install -y libmysqlclient-dev
4、cd cd sysbench-1.0.20/
5、./autogen.sh
6、./configure
7、sudo make -j
8、sudo make install
9、sysbench --version


sysbench语法

sysbench的基本语法如下:

sysbench [options]... [testname] [command]

command:sysbench要执行的命令,包括:

prepare:为测试提前准备数据
run:执行正式的测试
cleanup:在测试完成后对数据库进行清理

在新版本中,–test参数已经声明为废弃,可以不使用–test,而是直接指定脚本。

sysbench ./tests/include/oltp_legacy/oltp.lua

测试时使用的脚本为lua脚本,可以使用sysbench自带脚本,也可以自己开发。对于大多数应用,使用sysbench自带的脚本就足够了。


sysbench的options参数有很多,其中比较常用的包括:

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

使用示例

准备数据:

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare

执行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告。

执行测试:

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> ./mysysbench.log

将测试结果导出到文件中,便于后续分析。

清理数据:

sysbench --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --oltp-tables-count=10 --oltp-table-size=100000 ./tests/include/oltp_legacy/oltp.lua cleanup

执行完测试后,清理数据,否则后面的测试会受到影响。


结果分析

参数信息部分:

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)Running the test with following options:
Number of threads: 10
Report intermediate results every 10 second(s)
Initializing random number generator from current time

中间过程信息部分:

Initializing worker threads...Threads started![ 10s ] thds: 10 tps: 477.40 qps: 9560.77 (r/w/o: 6694.08/1910.89/955.80) lat (ms,95%): 29.72 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 10 tps: 451.43 qps: 9027.75 (r/w/o: 6319.48/1805.41/902.85) lat (ms,95%): 30.81 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 10 tps: 424.02 qps: 8484.10 (r/w/o: 5938.15/1697.90/848.05) lat (ms,95%): 33.12 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 10 tps: 410.76 qps: 8212.31 (r/w/o: 5749.55/1641.24/821.52) lat (ms,95%): 34.33 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 10 tps: 394.41 qps: 7885.10 (r/w/o: 5519.27/1577.02/788.81) lat (ms,95%): 35.59 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 10 tps: 395.00 qps: 7900.35 (r/w/o: 5530.06/1580.39/789.89) lat (ms,95%): 35.59 err/s: 0.00 reconn/s: 0.00
[ 70s ] thds: 10 tps: 387.90 qps: 7758.49 (r/w/o: 5431.66/1551.02/775.81) lat (ms,95%): 36.89 err/s: 0.00 reconn/s: 0.00
[ 80s ] thds: 10 tps: 386.48 qps: 7730.24 (r/w/o: 5410.45/1546.73/773.06) lat (ms,95%): 37.56 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 10 tps: 396.70 qps: 7936.20 (r/w/o: 5556.07/1586.72/793.41) lat (ms,95%): 36.24 err/s: 0.00 reconn/s: 0.00
[ 100s ] thds: 10 tps: 400.21 qps: 8005.64 (r/w/o: 5604.10/1601.13/800.41) lat (ms,95%): 36.89 err/s: 0.00 reconn/s: 0.00
[ 110s ] thds: 10 tps: 398.60 qps: 7970.64 (r/w/o: 5579.33/1594.11/797.20) lat (ms,95%): 36.89 err/s: 0.00 reconn/s: 0.00
[ 120s ] thds: 10 tps: 393.49 qps: 7866.67 (r/w/o: 5506.31/1573.47/786.89) lat (ms,95%): 38.94 err/s: 0.00 reconn/s: 0.00

结果统计信息部分:

SQL statistics:queries performed:read:                            688464write:                           196704other:                           98352total:                           983520transactions:                        49176  (409.71 per sec.)queries:                             983520 (8194.14 per sec.)ignored errors:                      0      (0.00 per sec.)reconnects:                          0      (0.00 per sec.)General statistics:total time:                          120.0238stotal number of events:              49176Latency (ms):min:                                    8.24avg:                                   24.40max:                                  162.5295th percentile:                       35.59sum:                              1199824.71Threads fairness:events (avg/stddev):           4917.6000/48.05execution time (avg/stddev):   119.9825/0.01

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

queries:查询总数及qpstransactions:事务总数及tpsLatency-95th percentile:前95%的请求的最大响应时间

使用建议

1、尽量不要在MySQL服务器运行的机器上进行测试。
2、可以逐步增加客户端的并发连接数,观察在连接数不同情况下,MySQL服务器的表现。
3、如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。
4、在开始测试之前,应该首先明确:应采用针对整个系统的基准测试,还是针对MySQL的基准测试,还是二者都需要。
5、如果需要针对MySQL的基准测试,那么还需要明确精度方面的要求:是否需要使用生产环境的真实数据,还是使用工具生成也可以;前者实施起来更加繁琐。如果要使用真实数据,尽量使用全部数据,而不是部分数据。
6、基准测试要进行多次才有意义。
7、测试时需要注意主从同步的状态。
8、测试必须模拟多线程的情况,单线程情况不但无法模拟真实的效率,也无法模拟阻塞甚至死锁情况。


MySQL基准测试工具:sysbench 新手入门体验相关推荐

  1. 详解 MySQL 基准测试和 sysbench 工具

    前 言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处 ...

  2. MySql性能测试工具-sysbench

    转自:MySql性能测试工具-sysbench - 没那么简单的博客 虽然mysql默认的有mysqlslap这个性能测试工具,但和sysbench比较来说,还逊色不少. 下载安装包 https:// ...

  3. 详解MySQL基准测试和sysbench工具

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取近百本电子书入口 来源:22j.co/b4yw 什么是基准测试 数据库的基准 ...

  4. mysql sysbench_详解MySQL基准测试和sysbench工具

    一.基准测试简介 1.什么是基准测试 数据库的基准测试是对数据库的性能指标进行定量的.可复现的.可对比的测试. 基准测试与压力测试 基准测试可以理解为针对系统的一种压力测试.但基准测试不关心业务逻辑, ...

  5. MySQL 常用工具sysbench/fio/tpcc等测试

    为什么要压力测试 采购新设备,评估新设备性能 开发新项目,评估数据库容量 新系统上线前,预估/模拟数据库负载 更换数据库版本,评估性能变化 关注指标  CPU %wait,%user,%sys 内存 ...

  6. MySQL性能测试工具sysbench的安装和使用

    sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Oracle和PostgreSQL.当前 ...

  7. seo提交工具_新手入门必备的十个SEO优化方法

    SEO的实质问题不是一个,而是千万个!在这里小编就随便列举几条比较基础的SEO优化方法吧~ 一.熟知搜索引擎工作原理: 网站优化之前,我们一定要清楚搜索引擎的工作原理,毕竟SEO是针对搜索引擎操作的, ...

  8. Mysql下载以及安装(新手入门,超详细)

    一.Mysql下载 1.官网地址 https://www.mysql.com/ 2.或者百度搜索官网 3.找到Downloads按钮 4.找到社区版 5.找到对应电脑系统,这里选择Mysql on W ...

  9. IntelliJ IDEA 使用Maven工具 (新手入门简单操作,maven的下载,安装,配置)

    一.maven的概述 1.什么是maven   maven是一个项目管理工具,包含项目管理,插件以及目标的逻辑等.maven为我们提供了一系列的执行流程: maven执行流程 2.maven的下载安装 ...

最新文章

  1. 《C++primer》第一章--开始
  2. python运行错误怎么查找_求助,python的二分法查找,按照视频上的代码写下来,结果运行错误...
  3. Django CMS教程一:安装
  4. maven的环境搭建
  5. 【freemarker】渲染列表一系列操作
  6. python可视化添加文本_python Matplotlib基础--如何添加文本和标注
  7. Matlab代码提示“svmtrain已删除 请改用fitcsvm”,以及svmpredict没有返回结果label和精度accuracy的解决办法
  8. vs2015运行项目时出现“编译器失败,错误代码为 1”的解决方案
  9. windows下利用批处理命令生成maven项目(java、javaWeb)
  10. 手机直播app制作大揭秘之视频直播系统方案
  11. ipad协议更新非常稳定
  12. 华数机器人旋转编程_华数机器人HRT-6-Ⅰ型示教器操作与编程.ppt
  13. 利用ccle数据库构造分类器区分耐药与不耐药样本
  14. 服务器中的固态硬盘优缺点,「服务器」固态硬盘的优缺点有哪些
  15. PMBOK2004版44个过程的工具和技术的总结
  16. win10在此计算机上找不到系统映像,解决Win10系统Windows找不到文件确定是否正确...
  17. 通达信精确逃顶主图指标
  18. 小程序-仿朋友圈开发问题
  19. NDK33_最全排查UnsatisfiedLinkError: No implementation found
  20. 关于QT跨平台和编译器的理解

热门文章

  1. MathType公式编辑器右边选项变灰
  2. 48. 旋转图像 leetcode
  3. 盘点国内11家已经获得融资的移动CRM平台
  4. 如何保护个人信息安全?天津大学提出隐私政策合规性检测工具
  5. wxWidgets自定义标题栏
  6. TiDB 软件和硬件环境建议配置
  7. jquery索引选择器
  8. 使用java实现面向对象编程第十章嗖嗖移动业务大厅项目_ACCP6.0使用Java实现面向对象编程-第一章.ppt...
  9. 汽车理论制动性仿真-MATLAB
  10. MATLAB 神经网络预测工具箱