基于新版sysbench 1.0.8压测MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
性能测试 PTS,5000VUM额度
简介: 0.前言    Sysbench的作者于2016年将十年未变的sysbench升级至1.0版本,较老版本有了非常大的改变。在使用过程中由于官方文档不太完善,遂有此文。 1.新特性    官方文档中的升级说明: 更好的性能和扩展性,比0.4版本快了3.44倍,比0.5版本快了6.44倍。

0.前言

    Sysbench的作者于2016年将十年未变的sysbench升级至1.0版本,较 老版本有了非常大的改变。在使用过程中由于官方文档不太完善 ,遂有此文。

1.新特性

   官方文档中的升级说明:
  • 更好的性能和扩展性,比0.4版本快了3.44倍,比0.5版本快了6.44倍。
  • 改良了命令行语法
  • 扩展了SQL API,例如每个线程可以有多个连接。
  • latency直方图功能
  • 错误hooks
  • 报告hooks
  • 自定义和并行性命令
  • 多种report类型,如JSON,CSV,SQL等

    最大的升级应该还是OLTP测试中的lua脚本。

2.安装

    官方文档中已列出各种 安装方法,这里推荐一个更快速的,使用percona的源:

点击(此处)折叠或打开

  1. root# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
  2. root# yum install sysbench
    安装完成之后可以在 /usr/share/sysbench/中找到需要使用的lua脚本。

   如果需要使用sysbench Test Suite,需要安装依赖包Cram:

点击(此处)折叠或打开

  1. root# pip install cram
    也可以编译安装:

点击(此处)折叠或打开

  1. root# wget https://bitheap.org/cram/cram-0.6.tar.gz
  2. root# tar zxvf cram-0.6.tar.gz
  3. root# cd cram-0.6
  4. root# make install


3.使用方法

    sysbench --help中已经有了很详细的说明,参考此文件可以得到大部分信息。
    命令语法: sysbench [options]... [testname] [command]
   options:   有
普通选项 伪随机选项 两类,大部分参数都不需要额外配置,使用默认即可。
    log :          打开latency的直方图输出。
   database:     默认即可
   mysql:      填入需要压测的mysql的账号密码,请参阅下面的样例。
    testname:    内建有 fileio、CPU、memory、threads、mutex这几个测试,mysql相关测试请直接调用相关脚本。

   command:有prepare、run、cleanup、help这4个,请参阅下面的样例。

   
    另外,每个测试的lua脚本也有一个help提示,命令如下:

点击(此处)折叠或打开

  1. root# sysbench oltp_read_write.lua help
  2. sysbench 1.0.8 (using bundled LuaJIT 2.1.0-beta2)


    oltp_read_write.lua options:
      --distinct_ranges=N           Number of SELECT DISTINCT queries per transaction [1]
      --sum_ranges=N                Number of SELECT SUM() queries per transaction [1]
      --skip_trx[=on|off]           Don't start explicit transactions and execute all queries in the AUTOCOMMIT mode [off]
      --secondary[=on|off]          Use a secondary index in place of the PRIMARY KEY [off]
      --create_secondary[=on|off]   Create a secondary index in addition to the PRIMARY KEY [on]
      --index_updates=N             Number of UPDATE index queries per transaction [1]
      --range_size=N                Range size for range SELECT queries [100]
      --auto_inc[=on|off]           Use AUTO_INCREMENT column as Primary Key (for MySQL), or its alternatives in other DBMS. When disabled, use client-generated IDs [on]
      --delete_inserts=N            Number of DELETE/INSERT combination per transaction [1]
      --tables=N                    Number of tables [1]
      --mysql_storage_engine=STRING Storage engine, if MySQL is used [innodb]
      --non_index_updates=N         Number of UPDATE non-index queries per transaction [1]
      --table_size=N                Number of rows per table [10000]
      --pgsql_variant=STRING        Use this PostgreSQL variant when running with the PostgreSQL driver. The only currently supported variant is 'redshift'. When enabled, create_secondary is automatically disabled, and delete_inserts is set to 0
      --simple_ranges=N             Number of simple range SELECT queries per transaction [1]
      --order_ranges=N              Number of SELECT ORDER BY queries per transaction [1]
      --range_selects[=on|off]      Enable/disable all range SELECT queries [on]
      --point_selects=N             Number of point SELECT queries per transaction [10]


4.示例

点击(此处)折叠或打开

  1. root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 prepare   #建表,造数据
  2. root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 run       #运行压测程序
  3. root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 cleanup   #执行清理工作
    关键参数说明:


   --threads=64                 测试时使用的线程数
   --time=600                     测试时间
   --histogram=on             在报告中是否输出关于延迟的直方图,建议开启
   --table_size=10000000
 数据表的大小

现在可以愉快的进行测试了。


参考资料:

1. https://github.com/akopytov/sysbench
2. https://bitheap.org/cram/
3.  https://archive.fosdem.org/2017/schedule/event/sysbench/attachments/slides/1519/export/events/attachments/sysbench/slides/1519/sysbench.pdf
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
关系型数据库 MySQL 测试技术
MySQL性能测试(完整版)
MySQL性能测试(完整版)
456 1
|
3月前
|
关系型数据库 MySQL OLTP
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
【8月更文挑战第6天】使用 pt-query-digest 工具分析 MySQL 慢日志性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
259 0
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
|
3月前
|
关系型数据库 MySQL 测试技术
压测工具sysbench的使用
压测工具sysbench的使用
110 0
|
5月前
|
关系型数据库 MySQL 测试技术
《阿里云产品四月刊》—瑶池数据库微课堂|RDS MySQL 经济版 vs 自建 MySQL 性能压测与性价比分析
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
6月前
|
关系型数据库 MySQL C语言
mysql的压力测试软件sysbench
mysql的压力测试软件sysbench
42 1
|
6月前
|
关系型数据库 MySQL 测试技术
sysbench 对MySQL压测100分钟的命令
使用 `sysbench` 对 MySQL 数据库进行性能测试(压测)时,首先确保 `sysbench` 和 MySQL 数据库已经安装,并且你有一个测试数据库可以使用。下面是一个针对 MySQL 数据库进行压测的示例命令,测试时长为 100 分钟(6000 秒)。 在运行此命令之前,请确保以下内容: - 使用适当的数据库连接参数(主机、端口、用户名、密码、数据库名)。 - 根据你的需求调整测试参数(如并发数、线程数、事务数等)。 以下是一个示例命令,使用 `sysbench` 对 MySQL 数据库进行压测 100 分钟: ```shell sysbench --db-driver=m
120 0
|
6月前
|
存储 SQL 关系型数据库
Mysqlslap性能测试MySQL三种存储引擎
Mysqlslap性能测试MySQL三种存储引擎
|
25天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
85 3
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
92 2
|
25天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
53 4