mysql基准测试与sysbench工具

一、基准测试简介 

1、什么是基准测试

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

基准测试与压力测试

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

2、基准测试的作用

对于多数Web应用,整个系统的瓶颈在于数据库;原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘灯、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写分离、分库分表来减轻压力,但是与系统其它组件的水平扩展相比,受到了太多的限制。

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

3、基准测试的指标

常见的数据库指标包括:

  • TPS/QPS:衡量吞吐量。
  • 响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。。
  • 并发量:同时处理的查询请求的数量。

二、sysbench

1、sysbench安装(ubuntu系统)

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh |sudo bash
sudo apt -y install sysbench

2、oltp测试

find / -name oltp.lua
sysbench --test=tests/db/oltp.lua(根据具体位置填写) --mysql-host=databasehost --mysql-port=3306 --mysql-user=user --mysql-password=password --mysql-db=databasename --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=10000000 --rand-init=on  prepare/run/cleanup

参数详解:

--test=tests/db/oltp.lua 指定测试的脚本

--oltp-test-mode=complex 执行模式,包括simple、nontrx和complex,默认是complex,complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。

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

--oltp-table-size 测试的表的大小

--rand-init=on 表示每个测试表都是用随机数据来填充的

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

3、测试结果

sysbench 0.5:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 256
Report intermediate results every 10 second(s)
Random number generator seed is 0 and will be ignored

-- 线程启动
Threads started!

-- 每10秒钟报告一次测试结果,tps、每秒读、每秒写、99%以上的响应时长统计
[  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    -- 全部总数 查询总数及qps
    transactions:                        630229 (174.94 per sec.)    -- 总事务数(每秒事务数) 事务总数及tps
    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    -- 执行时间(平均值/偏差)

4、清理测试数据

sysbench --test=tests/db/oltp.lua(根据具体位置填写) --mysql-host=databasehost --mysql-port=3306 --mysql-user=user --mysql-password=password --mysql-db=databasename --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=10000000 --rand-init=on  cleanup

 

原文地址:https://www.cnblogs.com/ywxbbbbb/p/9486322.html

时间: 2024-10-06 19:40:43

mysql基准测试与sysbench工具的相关文章

详解MySQL基准测试和sysbench工具

前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处,欢迎批评指正. 目录 一.基准测试简介 1.什么是基准测试 2.基准测试的作用 3.基准测试的指标 4.基准测试的分类 二.sysbench 1.sysbench简介 2.sysbench安装 3.sysbench语法 4.sysbench使用举例 5.测试结果 三.建议 一.基准测试简介 1.什么

mysql测试和sysbench工具详解

前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处,欢迎批评指正. 目录 一.基准测试简介 1.什么是基准测试 2.基准测试的作用 3.基准测试的指标 4.基准测试的分类 二.sysbench 1.sysbench简介 2.sysbench安装 3.sysbench语法 4.sysbench使用举例 5.测试结果 三.建议 一.基准测试简介 1.什么

mysql基准测试工具tpcc-mysql安装、使用、结果解读

TPCC是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统,tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于MySQL基准测试.其源码放在launchpad上,用bazaar管理,项目地址:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql,专门转对mysql的基准测试工具,模拟电商业务流程.但是tpcc-mysql的结果并未获得TP

tpcc-mysql   mysql基准测试工具使用文档

mysql基准测试工具tpcc-mysql的安装和使用1.tpcc-mysql介绍:TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是TPC协会制定的,用来测试典型的复杂OLTP系统的性能.Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试.2.官网地址:https://github.com/Percona-Lab/tpcc-mysql

Mysql基准测试详细解说(根据慕课网:《打造扛得住Mysql数据库架构》视频课程实时笔录)

什么是基准测试 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以及评估变化对性能的影响. 我们可以这样认为:基准测试是针对系统设置的一种压力测试.用来观察系统在不同压力下的行为,评估系统的容量,观察系统如何处理不同的数据,但是要注意的是基准测试和通常所说的压力测试还是有区别的. 基准测试要尽量的直接和简单,使各个结果之间容易比较,基准测试所使用的数据通常是由测试工具所生成的,只能用于评估服务器的 处理能力:而压力测试通常是通过真实

MySQL基准测试(二)--方法

MySQL基准测试(二)--方法 目的: 方法不是越高级越好.而应该善于做减法.至简是一种智慧,首先要做的是收集MySQL的各状态数据.收集到了,不管各个时间段出现的问题,至少你手上有第一时间的状态数据,而不是凭空想象的去做剖析和分析问题. 数据模拟参考 仿真多线程插入和查询语句,可以参考Python模拟数据(MySQL数据库)文档 MySQL状态命令的解释 SHOW GLOBAL VARIABLES 查看目前的MySQL的各个参数变量值. SHOW GLOBAL STATUS 查看全局的MyS

常用MySQL图形化管理工具

MySQL是一个非常流行的小型关系型数据库管理系统.目前MySQL被广泛地应用在Internet上的 中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据 库. 1.phpMyAdmin(http://www.phpmyadmin.net/) phpMyAdmin是最常用的MySQL维护工具,是一个用PHP开发的基于Web方式架构在网站主机上的MySQL管理工具,支持中文,管理数据库非常方便.不足之处在于

mysql 性能优化常用工具

mysql 性能优化常用工具: 常用性能检测工具 show engine innodb  status show full processlist information_schema.processlist explain create table innodb_table_monitor(a int) engine=innodb; innodb_locks innodb_lock_wait innodb_trx zabbix监控 pt-tools 工具 性能优化的两种方式: 1.执行计划的解

as3+java+mysql(mybatis) 数据自动工具(七) - 完结

autoscript packed 文件地址:http://pan.baidu.com/s/1dDvgcO5 如果需要项目源码的话,可以留下邮箱,先声明一下,该工具主要是为了实现自动同步输出代码类文件的功能,所以代码写得并不是很规范什么的,没太大的参考意义,主要还是工具的实用性. 数据类和常量的配置基本就是前面所说明的那些了,现在来说一下怎么执行配置文件.执行配置文件需要写一个批处理文件,格式如下 java -classpath ./lib/*; AutoScript -? 这是一个执行 jav