Chinaunix首页 | 论坛 | 博客
  • 博客访问: 560397
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 16:13
个人简介

中国科学院大学计算机硕士,曾在新浪爱彩数据库组带DBA团队,现居新加坡。wx: lihui_dba

文章分类

全部博文(36)

文章存档

2020年(2)

2019年(3)

2017年(7)

2016年(1)

2015年(7)

2014年(11)

2013年(5)

分类: Mysql/postgreSQL

2017-10-06 16:47:30

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
  2. root# yum install sysbench
    安装完成之后可以在/usr/share/sysbench/中找到需要使用的lua脚本。

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

点击(此处)折叠或打开

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

点击(此处)折叠或打开

  1. root# wget
  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.
2. 
3. 
阅读(1606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~