sysbench在mysql中的使用

2024-01-24 19:28
文章标签 mysql 使用 database sysbench

本文主要是介绍sysbench在mysql中的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

sysbench安装

[root@gip ~]# yum install epel-release -y

[root@gip ~]#  yum install sysbench -y

查看sysbench的版本:

[root@gip ~]# sysbench --version
sysbench 1.1.0-df89d34

基于sysbench构造测试表和测试数据

sysbench --db-driver=mysql --time=5 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=greatdb --mysql-password=greatdb --mysql-db=test_db --tables=2 --table_size=10 oltp_read_write --db-ps-mode=disable prepare

命令行中的参数说明:

--db-driver=mysql:代表数据库驱动 
--time=300:这个就是说连续访问300秒 
--threads=10:这个就是说用10个线程模拟并发访问
--report-interval=1:这个就是说每隔1秒输出一下压测情况 
--mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=greatdb --mysql-password=greatdb:数据库的用户和密码等信息 
--mysql-db=test_db --tables=2 --table_size=10:这一串的意思,就是说在test_db这个库里,构造2个测试表,每个测试表里构造10条测试数据,测试表的名字会是类似于sbtest1,sbtest2这个样子的 
oltp_read_write:这个就是说,执行oltp数据库的读写测试 
--db-ps-mode=disable:这个就是禁止ps模式 最后有一个prepare,意思是参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表里创建100万条测试数据。

下面是命令执行后,输出的信息:

    sysbench 1.1.0-df89d34 (using bundled LuaJIT 2.1.0-beta3)
    
    Initializing worker threads...
    
    Creating table 'sbtest1'...
    Creating table 'sbtest2'...
    Inserting 10 records into 'sbtest2'
    Inserting 10 records into 'sbtest1'
    Creating a secondary index on 'sbtest2'...
    Creating a secondary index on 'sbtest1'...

查看创建的表信息:

mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| sbtest1           |
| sbtest2           |
+-------------------+
2 rows in set (0.01 sec)

mysql> select count(*) from sbtest1;
+----------+
| count(*) |
+----------+
|       10 |
+----------+
1 row in set (0.01 sec)
 

数据库读写性能测试

做性能测试前,需要先创建数据

[root@localhost bin]# sysbench --db-driver=mysql --time=50 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=greatdb --mysql-password=greatdb --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable prepare

数据库读写性能测试,将执行指令最后的prepare修改成run

[root@localhost bin]# sysbench --db-driver=mysql --time=50 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=greatdb --mysql-password=greatdb --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable run

执行run命令后数据显示:

[ 10s ] thds: 10 tps: 800.11 qps: 16012.28 (r/w/o: 11207.60/3204.46/1600.23) lat (ms,95%): 15.27 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 10 tps: 697.26 qps: 13957.21 (r/w/o: 9771.64/2791.04/1394.52) lat (ms,95%): 13.46 err/s: 0.00 reconn/s: 0.00

对表中的数据进行说明,以第一条数据做解释描述:

​ thds: 10,这个意思就是有10个线程在压测

​ tps: 800.11,这个意思就是每秒执行了800.11个事务

​ qps:  16012.28,这个意思就是每秒可以执行2996.03个请求

​ (r/w/o: 11544.02/3298.07/1642.90),这个意思就是说,在每秒16012.28个请求中,有11544.02个请求是读请求,3298.07个请求是写请求,1642.90个请求是其他的请求,就是对QPS进行了拆解

​ lat (ms, 95%): 10.27,这个意思就是说,95%的请求的延迟都在 10.27毫秒以下

​ err/s: 0.00 reconn/s: 0.00,这两个的意思就是说,每秒有0个请求是失败的,发生了0次网络重连

下面是执行完成后控制台输出的数据:

SQL statistics:
    queries performed:
        read:                            482034 // 这就是说在50s的压测期间执行了482034 次的读请求
        write:                           137724 // 这就是说在50s的压测期间执行了137724 次的写请求
        other:                           68862  // 这就是说在50s的压测期间执行了68862  次其他请求
        total:                           688620 // 这就是说在300s的压测期间执行了688620 次总的请求
    transactions:                        34431  (684.29 per sec.)  //共执行了34431  次事务 平均1秒执行684.29 次事务
    queries:                             688620 (13685.79 per sec.) //共执行688620次查询 平均每秒13685.79次
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

Throughput:
    events/s (eps):                      684.2895
    time elapsed:                        50.3164s
    total number of events:              34431

Latency (ms):
         min:                                    4.15  //请求中延迟最小的是4.15ms
         avg:                                   14.61  //请求中延迟平均的是14.61ms
         max:                                  499.87  //请求中延迟最大的是499.87ms
         95th percentile:                       13.46  //95%的请求中延迟在13.46ms以内
         sum:                               502991.87

Threads fairness:
    events (avg/stddev):           3443.1000/21.30
    execution time (avg/stddev):   50.2992/0.00

数据库读性能测试

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=10000 oltp_read_only --db-ps-mode=disable run

数据库删除性能测试

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=10000 oltp_delete --db-ps-mode=disable run

数据库更新索引字段性能测

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=10000 oltp_update_index --db-ps-mode=disable run

数据库更新非索引字段性能测试

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_non_index --db-ps-mode=disable run

数据库插入数据性能测试

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=10000 oltp_insert --db-ps-mode=disable run

数据库写性能测试

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=10000 oltp_write_only --db-ps-mode=disable run

清除数据,将run改成cleanup

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=10000 oltp_read_write --db-ps-mode=disable cleanup


[root@gip ~]# sysbench --db-driver=mysql --time=50 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=greatdb --mysql-password=greatdb --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable cleanup
sysbench 1.1.0-df89d34 (using bundled LuaJIT 2.1.0-beta3)Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
Dropping table 'sbtest4'...
Dropping table 'sbtest5'...
Dropping table 'sbtest6'...
Dropping table 'sbtest7'...
Dropping table 'sbtest8'...
Dropping table 'sbtest9'...
Dropping table 'sbtest10'...

这篇关于sysbench在mysql中的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/640746

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式