采用sysbench压测mysql详解

news2024/11/28 14:08:11

文章目录

      • 安装sysbench工具
      • 基于sysbench构造测试表和测试数据
      • 数据库读写性能测试
      • 数据库读性能测试
      • 数据库删除性能测试
      • 数据库更新索引字段性能测
      • 数据库更新非索引字段性能测试
      • 数据库插入数据性能测试
      • 数据库写性能测试
      • 执行完成压测之后可以将run改成cleanup,清除数据

安装sysbench工具

#下载sysbench工具
[root@localhost bin]# curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
#安装sysbench工具
[root@localhost bin]# sudo yum -y install sysbench
#查看安装后的版本号
[root@localhost bin]# sysbench --version

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

[root@localhost bin]# 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_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=test --mysql-password=123456:数据库的用户和密码等信息

​ --mysql-db=test_db --tables=20 --table_size=1000000:这一串的意思,就是说在test_db这个库里,构造20个测试表,每个测试表里构造100万条测试数据,测试表的名字会是类似于sbtest1,sbtest2这个样子的

​ oltp_read_write:这个就是说,执行oltp数据库的读写测试

​ --db-ps-mode=disable:这个就是禁止ps模式

​ 最后有一个prepare,意思是参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表里创建100万条测试数据,所以这个工具是非常的方便的。

​ 下面是执行过程中的输出信息:

[root@localhost bin]# 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_read_write --db-ps-mode=disable prepare
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Initializing worker threads...

Creating table 'sbtest1'...
Creating table 'sbtest2'...
Creating table 'sbtest5'...
Creating table 'sbtest3'...
Creating table 'sbtest6'...
Creating table 'sbtest4'...
Creating table 'sbtest9'...
Creating table 'sbtest8'...
Creating table 'sbtest7'...
Creating table 'sbtest10'...
Inserting 1000000 records into 'sbtest6'
Inserting 1000000 records into 'sbtest3'
Inserting 1000000 records into 'sbtest5'
Inserting 1000000 records into 'sbtest7'
Inserting 1000000 records into 'sbtest8'
Inserting 1000000 records into 'sbtest9'
Inserting 1000000 records into 'sbtest10'
Inserting 1000000 records into 'sbtest2'
Inserting 1000000 records into 'sbtest1'
Inserting 1000000 records into 'sbtest4'
Creating a secondary index on 'sbtest5'...
Creating a secondary index on 'sbtest3'...
Creating a secondary index on 'sbtest10'...
Creating a secondary index on 'sbtest4'...
Creating a secondary index on 'sbtest8'...
Creating a secondary index on 'sbtest9'...
Creating a secondary index on 'sbtest1'...
Creating a secondary index on 'sbtest6'...
Creating a secondary index on 'sbtest2'...
Creating a secondary index on 'sbtest7'...
Creating table 'sbtest15'...
Inserting 1000000 records into 'sbtest15'
Creating table 'sbtest13'...
Inserting 1000000 records into 'sbtest13'
Creating table 'sbtest20'...
Creating table 'sbtest18'...
Creating table 'sbtest11'...
Creating table 'sbtest14'...
Inserting 1000000 records into 'sbtest20'
Inserting 1000000 records into 'sbtest18'
Inserting 1000000 records into 'sbtest11'
Inserting 1000000 records into 'sbtest14'
Creating table 'sbtest19'...
Inserting 1000000 records into 'sbtest19'
Creating table 'sbtest12'...
Creating table 'sbtest16'...
Inserting 1000000 records into 'sbtest12'
Inserting 1000000 records into 'sbtest16'
Creating table 'sbtest17'...
Inserting 1000000 records into 'sbtest17'
Creating a secondary index on 'sbtest15'...
Creating a secondary index on 'sbtest14'...
Creating a secondary index on 'sbtest19'...
Creating a secondary index on 'sbtest20'...
Creating a secondary index on 'sbtest17'...
Creating a secondary index on 'sbtest13'...
Creating a secondary index on 'sbtest11'...
Creating a secondary index on 'sbtest18'...
Creating a secondary index on 'sbtest16'...
Creating a secondary index on 'sbtest12'...

​ 查询表中的数据,发现表里面有100w条数据:
在这里插入图片描述

数据库读写性能测试

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

[root@localhost bin]# 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_read_write --db-ps-mode=disable run

​ 下面是截取的执行100秒,200秒,300秒的数据。

[ 100s ] thds: 10 tps: 151.70 qps: 2996.03 (r/w/o: 2091.83/600.80/303.40) lat (ms,95%): 97.55 err/s: 0.00 reconn/s: 0.00
[ 200s ] thds: 10 tps: 131.15 qps: 2644.08 (r/w/o: 1853.16/528.62/262.31) lat (ms,95%): 112.67 err/s: 0.00 reconn/s: 0.00
[ 300s ] thds: 10 tps: 151.05 qps: 3021.04 (r/w/o: 2118.73/600.21/302.10) lat (ms,95%): 95.81 err/s: 0.00 reconn/s: 0.00

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

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

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

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

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

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

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

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

SQL statistics:
    queries performed:
        read:                            584150 // 这就是说在300s的压测期间执行了584150次的读请求
        write:                           166900 // 这就是说在300s的压测期间执行了166900次的写请求
        other:                           83450 // 这就是说在300s的压测期间执行了83450次其他请求
        total:                           834500 // 这就是说在300s的压测期间执行了834500次总的请求
    transactions:                        41725  (139.06 per sec.) //共执行了41725次事务 平均1秒执行139.06次事务
    queries:                             834500 (2781.11 per sec.)//共执行834500次查询 平均每秒2781.11次
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0585s
    total number of events:              41725

Latency (ms):
         min:                                    8.56  //请求中延迟最小的是8.56ms
         avg:                                   71.90   //请求中延迟平均的是71.90ms
         max:                                  729.21   //请求中延迟最大的是729.21ms
         95th percentile:                      112.67   //95%的请求中延迟在112.67ms以内124
         sum:                              3000139.42

Threads fairness:
    events (avg/stddev):           4172.5000/7.20
    execution time (avg/stddev):   300.0139/0.02

数据库读性能测试

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_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=1000000 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=1000000 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=1000000 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=1000000 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=1000000 oltp_read_write --db-ps-mode=disable cleanup
[root@localhost bin]# 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_read_write --db-ps-mode=disable cleanup
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

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'...
Dropping table 'sbtest11'...
Dropping table 'sbtest12'...
Dropping table 'sbtest13'...
Dropping table 'sbtest14'...
Dropping table 'sbtest15'...
Dropping table 'sbtest16'...
Dropping table 'sbtest17'...
Dropping table 'sbtest18'...
Dropping table 'sbtest19'...
Dropping table 'sbtest20'...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LegalAI公开数据集的整理、总结及介绍(持续更新ing…)

诸神缄默不语-个人CSDN博文目录 最近更新日期:2023.6.7 最早更新日期:2023.6.7 文章目录 1. 司法判决预测2. 通用语料3. 其他集成项目4. 推理5. NLU6. NLG1 QA2 文本摘要 7. 信息抽取1 命名实体识别2 句子边界检测(分句) 1. 司法…

青岛科技大学|物联网工程|物联网定位技术(第二讲)|15:00

目录 物联网定位技术(第二讲) 1. 卫星的轨道高度与覆盖区域有何关系,试画图给予说明覆盖区地心角与覆盖面积的关系 2. 试给出实际的卫星地面覆盖区和用户空间可视区所对应的半地心角的公式并请给予解释 3. 定位导航卫星为什么一般不采用同…

【集群】LVS负载均衡群集

文章目录 前言一、企业群集应用概述1. 群集的含义1.1 群集的特点1.2 扩展服务器的方式 2. 群集的类型2.1 负载均衡群集(Load Balance Cluster)2.2 高可用群集(High Availability Cluster)2.3 高性能运算群集(High Perf…

软考A计划-电子商务设计师-模拟试题卷七

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

有一种附件叫做V2附件

大家好,才是真的好。 一般而言,Notes中上传的附件都会对应到某个富文本字段中,这样附件易于处理,也容易进行排版。 最简单的案例就是我们的Notes邮件,附件可以附加在正文中,如下图: 还有我们…

新入职一家公司,接手了个从零开始的项目

开发流程 一个完整的从零开始开发的项目,会涉及到功能设计、数据库设计、项目框架搭建、接口设计与实现等流程,具体可以参考下图。 与我们后端开发有关的主要是功能设计、数据库设计、接口设计与实现这三部分,当然接口设计与实现中也包含项目…

chatgpt赋能python:Python如何快速SEO

Python如何快速SEO Python作为一种通用编程语言,广泛应用于各行各业,包括网站开发和SEO。SEO(Search Engine Optimization)是通过调整网站的结构和内容来提高其在搜索引擎排名中的位置,从而提高网站的流量和收益。Pyt…

【百问百答】可靠性基础知识第四期

1. IP等级的主要测试标准有哪些? 主要参考标准有GB 4208和IEC 60598, 其中也可以具体参考产品标准, 例如LED灯具参考标准为GB 7000, 汽车电子产品可以参考GB/T 28046.3等等。 2.IP等级可分为几个等级? 根据GB4208标准防止固定异物进入&…

阿里云 Serverless 容器服务全面升级:新增组件全托管、AI 镜像秒级拉取能力

6 月 1 日在阿里云峰会粤港澳大湾区上,阿里云智能云原生应用平台总经理丁宇宣布,Serverless 容器服务 ASK 全面升级,进一步帮助企业和开发者降本提效。 Gartner 曾预测,2023 年 70% 的 AI 应用将基于容器和 Serverless 技术开发。…

开源“上天入地”的本领都在这!2023 开放原子全球开源峰会「开源展览」一文拿捏!

2023 开放原子全球开源峰会 将于 6 月 11-13 日正式举办 开源领域新技术、新应用、新热点 Show Time! 前沿开源展览汇 互动体验项目 让每一位参会者融入开源技术新世界! 还有精彩的娱乐项目和丰厚礼品 一网打尽! 抢先揭秘,一…

【Springboot】基于AOP机制的前置通知以及Cookies记录用户操作日志

文章目录 前言1. 添加依赖2. 创建自定义注解LogAnnotation3. 创建日志记录类型3. 编写切面逻辑4. 完善切面层,获取详细的请求信息4.1 获取自定义注解上的属性值4.2 通过Cookies获取用户信息4.3 获取执行时间4.4 日志实体类以及对应数据库类型 5.最后实现的结果 前言…

Spring Authorization Server扩展实现OAuth2.0的密码模式

写在前面 Spring官方已经停止对Spring Security Oauth2的维护,项目和相关文档也被移除 Spring Authorization Server是官方新推出的OAuth2.1和OpenID Connect1.0的实现 两个主要的版本,0.4.x:jdk8。1.x: jdk17 这里用的版本是0.4.1 OAuth2…

A Comprehensive Survey of Neural Architecture Search: Challenges and Solutions

这是NAS综述系列的第二篇文章,针对《A Comprehensive Survey of Neural Architecture Search:Challenges and Solutions》的翻译。 神经架构搜索综述:挑战与解决方案 摘要1 引言1.1 动机1.2 我们的贡献和相关综述1.3 文章组织 2 早期NAS的特征3 优化策略…

SpringBoot之Spring Data JPA入门学习2

我们继续使用上一章的环境。SpringBoot之Spring Data JPA入门学习 一、自动生成数据 我们修改一下实体 增加了几个注解: CreationTimestamp 自动生成创建时间。 UpdateTimestamp 自动生成更新时间。 使用这两个注解我们还需要在类上加上两个注解DynamicInsert和…

【unity造轮子】排序排行榜的制作

List类中有一个【Sort方法】 可以非常快速的对【整数类】 或者【小数类】元素进行升序 public class TestCompare MonoBehaviour {public List<int>numbers;private void Start(){numbersnew List<int>(){20,10,30,70,60,40,50,90,80,100}:}private void Update()…

stable diffusion图片资源分享和模型推荐,好用的模型有哪些呢?

前言 这篇文章主要是分享我的图片和推荐一些好用的模型&#xff0c;模型不在多在于精&#xff0c;基于几个好的大模型适当下载一下LORA模型&#xff0c;就能画出非常好的图片&#xff0c;多话不说 图片分享 简单展示 详情请看&#xff1a;https://space.bilibili.com/109890…

Amazon Web Services (AWS)上的 OpenText 信息管理(IM) 解决方案

Amazon Web Services (AWS)上的 OpenText 信息管理(IM) 解决方案 OpenText 行业领先的信息管理(IM) 解决方案作为完全托管的服务提供&#xff0c;以 Amazon 公有云环境的安全性、可扩展性和性能为后盾&#xff0c;实现业务数字化转型并推动创新。 价值 降低运营成本30%以上&…

ldap服务安装,客户端安装,ldap用户登录验证测试

安装服务端 # 安装ldap服务 docker run -p 389:389 -p 636:636 \ --name openldap \-v /home/manager/testldap:/testldap \ --env LDAP_ORGANISATION"admin" \ --env LDAP_DOMAIN"hadoop.apache.org" \ --env LDAP_ADMIN_PASSWORD"Dmpxxx" \ -…

上周发布的Notes/Domino 12.0.2FP1以及REST API 1.0.4

大家好&#xff0c;才是真的好。 一段时间没见&#xff0c;有没有分外想念&#xff1f; 其实&#xff0c;我们每周都至少更新一篇&#xff0c;虽然今天是周日&#xff0c;可也是工作日啊&#xff0c;因此本周也算赶上发了一篇。 废话不多说&#xff0c;先上图&#xff1a; …

PMP证书含金量也太高了吧!在一线城市可享受多项福利~

近年来&#xff0c;企业与企业、城市与城市间的人才争夺变得更加激烈&#xff0c;各大城市为了泛集聚和培养重点领域紧缺专业人才均针对持有国际职业资格认证的人才出台了相关优惠政策&#xff0c;目前我了解到的已有以下5个城市针对PMP项目管理及相关行业和认证出台了鼓励政策…