数据库基准测试工具 sysbench

栏目: 数据库 · 发布时间: 5年前

内容简介:数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑(如购物车业务),要求真实的数据。分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出MySQL的性能阈值,并根据实际系统的要求调整配置。

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

基准测试与压力测试

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

作用

分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出 MySQL 的性能阈值,并根据实际系统的要求调整配置。

重要指标

QPS:每秒查询次数

TPS:每秒处理完成事务次数

RT:响应时间

QPS or TPS = 并发量 / 平均响应时间

并发量 = (QPS or TPS) * 平均响应时间

测试工具 sysbench

简介

sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库

安装

参考github的readme,各系统不同,windows目前不支持。

(1)下载解压

wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
unzip sysbench-1.0.zip
cd sysbench-1.0
复制代码

(2)安装依赖 yum install automake libtool –y (3)安装 安装之前,确保位于之前解压的sysbench目录中。

./autogen.sh
./configure
export LD_LIBRARY_PATH=/usr/local/mysql/include #这里换成机器中mysql路径下的include
make
make install
复制代码

(4)安装成功

sysbench --version
sysbench 1.0.9
复制代码

语法

基本语法 sysbench [options]... [testname] [command]

command

command是sysbench要执行的命令,包括prepare、run和cleanup,顾名思义,prepare是为测试提前准备数据,run是执行正式的测试,cleanup是在测试完成后对数据库进行清理。

testname 测试脚本

自带测试脚本

common.lua oltp.lua select.lua update_index.lua delete.lua oltp_simple.lua select_random_points.lua update_non_index.lua

oltp.lua是复杂型测试,支持事务,比较全面最常用。

接指定脚本

sysbench--test=./tests/include/oltp_legacy/oltp.lua

新版本写法

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

参数

指定数据库类型

--db-driver: 指定数据路类型 mysql

mysql参数

--mysql-host:MySQL服务器主机ip,默认localhost。

--mysql-port:MySQL服务器端口,默认3306

--mysql-user:用户名

--mysql-password:密码

--mysql-engine-trx:指定不同的存储引擎测试。

--mysql-db:指定其他数据库(默认为sbtest需要手动创建)

oltp参数

--oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务y;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。

--oltp-tables-count:测试的表数量,根据实际情况选择

--oltp-table-size:测试的表的行数,根据实际情况选择

--threads:客户端的并发连接数

--time:测试执行的时间,单位是秒,该值不要太短,可以选择120

--report-interval:生成报告的时间间隔,单位是秒,如10

测试

准备工作

prepare 语句:

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.1.20 --mysql-port=3306 --mysql-user=root --mysql-password=Admin@123 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=1200 --report-interval=10 --db-driver=mysql prepare
复制代码

我们可以在数据库装看到 sysbench创建的表结构:

CREATE TABLE `sbtest` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `k` int(10) unsigned NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `k` (`k`));
复制代码

开始测试

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
--db-driver=mysql 
run >> /home/test/mysysbench.log ##指定日志生成位置
复制代码

清除测试数据

防止影响之后测试

sysbench
./tests/include/oltp_legacy/oltp.lua
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password=123456
--db-driver=mysql 
cleanup
复制代码

日志

[  10s] threads: 256, tps: 524.19, reads/s: 7697.05, writes/s: 2143.56, response time: 1879.46ms (99%)  
[  20s] threads: 256, tps: 96.50, reads/s: 1351.01, writes/s: 373.30, response time: 9853.49ms (99%)  
[  30s] threads: 256, tps: 235.50, reads/s: 3297.01, writes/s: 946.90, response time: 2150.47ms (99%)  
[  40s] threads: 256, tps: 115.50, reads/s: 1617.00, writes/s: 491.40, response time: 4562.75ms (99%)  
[  50s] threads: 256, tps: 262.10, reads/s: 3669.41, writes/s: 1016.10, response time: 2049.90ms (99%)  
[  60s] threads: 256, tps: 121.50, reads/s: 1701.00, writes/s: 499.10, response time: 3666.03ms (99%)  
[  70s] threads: 256, tps: 201.40, reads/s: 2735.10, writes/s: 769.50, response time: 3867.82ms (99%)  
[  80s] threads: 256, tps: 204.70, reads/s: 2950.29, writes/s: 838.10, response time: 2724.99ms (99%)  
[  90s] threads: 256, tps: 118.40, reads/s: 1657.61, writes/s: 490.00, response time: 3835.53ms (99%)  


OLTP test statistics:  
    queries performed:  
        read:                            8823206    -- 读总数  
        write:                           2520916    -- 写总数  
        other:                           1260458    -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)  
        total:                           12604580   -- 全部总数  
    transactions:                        630229 (174.94 per sec.)   -- 总事务数(每秒事务数)  
    deadlocks:                           0      (0.00 per sec.)     -- 发生死锁总数  
    read/write requests:                 11344122 (3148.86 per sec.)    -- 读写总数(每秒读写次数)  
    other operations:                    1260458 (349.87 per sec.)  -- 其他操作总数(每秒其他操作次数)  


General statistics:     -- 一些统计结果         
    total time:                          3602.6152s -- 总耗时  
    total number of events:              630229     -- 共发生多少事务数  
    total time taken by event execution: 921887.7227s   -- 所有事务耗时相加(不考虑并行因素)  
    response time:                  -- 响应时间  
         min:                                  6.52ms   -- 最小耗时  
         avg:                               1462.78ms   -- 平均耗时  
         max:                               9918.51ms   -- 最长耗时  
         approx.  99 percentile:            3265.01ms   -- 超过99%平均耗时  


Threads fairness:               -- 线程的稳定性  
    events (avg/stddev):           2461.8320/34.60      -- 事件数(平均值/偏差)  
    execution time (avg/stddev):   3601.1239/0.63   -- 执行时间(平均值/偏差)
复制代码

优化

下载优化工具 mysqltuner

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl -O mysqltuner.pl
复制代码

运行优化建议工具 # perl ./mysqltuner.pl

根据建议 修改mysql参数 # vim /etc/my.cnf

注意

新版本需要指定数据库类型--mysql-db。
如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Black Box Society

The Black Box Society

Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00

Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具