基于新版sysbench 1.0.8压测MySQL

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
关系型数据库 MySQL Java
【JMeter】(3)---MySQL压测
【JMeter】(3)---MySQL压测
176 0
|
4月前
|
关系型数据库 MySQL Serverless
|
11月前
|
存储 Oracle 固态存储
用sysbench测试mysql
在github上有安装说明
126 0
|
11月前
|
关系型数据库 MySQL 测试技术
mysqlslap mysql性能测试
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端 同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性 能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的 掌握线上数据库支撑的用户流量上限及其抗压性等问题。
112 0
|
关系型数据库 MySQL Linux
MySQL压测时Linux中断异常飚高,原来是因为...
MySQL压测时Linux中断异常飚高,原来是因为...
115 0
|
关系型数据库 MySQL 测试技术
MySQL 8.0 InnoDB压缩行格式性能测试(2)
MySQL 8.0 InnoDB压缩行格式性能测试
120 0
MySQL 8.0 InnoDB压缩行格式性能测试(2)
|
监控 固态存储 关系型数据库
MySQL 8.0 InnoDB压缩行格式性能测试(1)
MySQL 8.0 InnoDB压缩行格式性能测试
MySQL 8.0 InnoDB压缩行格式性能测试(1)
|
测试技术 OLTP
sysbench的压测工具的安装与使用
sysbench的压测工具的安装与使用
156 0
|
存储 缓存 安全
性能测试告诉你 mysql 数据库存储引擎该如何选?
简介 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL 的核心就是插件式存储引擎。
134 0
性能测试告诉你 mysql 数据库存储引擎该如何选?
|
存储 传感器 监控
InfluxDB与MySQL的性能测试
InfluxDB与MySQL的性能测试
InfluxDB与MySQL的性能测试