当前位置: 首页 > news >正文

Mysql压力测试(sysbench)

目录

配置项目环境:

参考:采用sysbench压测mysql详解_dream21st的博客-CSDN博客

实验步骤:

1、安装sysbench工具

2、在master上创建用户和库,配置用户的权限可以使他可以访问库(Mysql的主从复制)

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

4、创建我们需要的数据库里的数据

5、数据库读写性能测试(获取测试数据)

6、执行完成压测之后可以将run改成cleanup,清除数据

sysbench工具对Mysql数据库的其他测试代码:

数据库读性能测试:

数据库删除性能测试:

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

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

数据库插入数据性能测试:

数据库写性能测试:

数据库清除创建的测试数据:


配置项目环境:

[root@ab ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)[root@mysql-1 ~]# mysql --version
mysql  Ver 14.14 Distrib 5.7.41, for linux-glibc2.12 (x86_64) using  EditLine wrapper
[root@mysql-1 ~]# 

参考:采用sysbench压测mysql详解_dream21st的博客-CSDN博客

实验步骤:

1、安装sysbench工具

[root@ab ~]# yum install epel-release -y[root@ab ~]# yum install sysbench -y已安装:sysbench.x86_64 0:1.0.17-2.el7                                                                                                                                                             作为依赖被安装:ck.x86_64 0:0.5.2-2.el7                           luajit.x86_64 0:2.0.5-1.20220913.46e62cd.el7                           postgresql-libs.x86_64 0:9.2.24-8.el7_9                          完毕!

2、在master上创建用户和库,配置用户的权限可以使他可以访问库(Mysql的主从复制)

参考:Mysql - 配置Mysql主从复制-keepalived高可用-读写分离集群_Claylpf的博客-CSDN博客

CREATE USER 'claylpf'@'%' IDENTIFIED BY '123456';  #创建用户create database test_db;  #创建测试库GRANT ALL PRIVILEGES ON test_db.* TO 'claylpf'@'%';  #配置用户权限FLUSH PRIVILEGES;  #重新加载用户权限表

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

[root@ab ~]# sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable prepare

命令行中的参数说明:

​--db-driver=mysql:代表数据库驱动

--time=300:这个就是说连续访问300秒

--threads=10:这个就是说用10个线程模拟并发访问

--report-interval=1:这个就是说每隔1秒输出一下压测情况

--mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --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万条测试数据,所以这个工具是非常的方便的。

4、创建我们需要的数据库里的数据

[root@ab ~]# sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable prepare# 注意--tables=10 --table_size=1000所对应的数据不能调试太大(如:--tables=20 --table_size=1000000000),否则会导致你的Mysql集群的磁盘耗尽,导致集群崩溃.
sysbench 1.0.17 (using system LuaJIT 2.0.4)Initializing worker threads...Creating table 'sbtest10'...
Creating table 'sbtest3'...
Creating table 'sbtest9'...
Creating table 'sbtest6'...
Creating table 'sbtest1'...
Creating table 'sbtest8'...
Creating table 'sbtest4'...
Creating table 'sbtest5'...
Creating table 'sbtest7'...
Creating table 'sbtest2'...
Inserting 1000 records into 'sbtest10'
Inserting 1000 records into 'sbtest1'
Inserting 1000 records into 'sbtest2'
Inserting 1000 records into 'sbtest4'
Inserting 1000 records into 'sbtest5'
Inserting 1000 records into 'sbtest6'
Inserting 1000 records into 'sbtest7'
Inserting 1000 records into 'sbtest8'
Inserting 1000 records into 'sbtest9'
Inserting 1000 records into 'sbtest3'
Creating a secondary index on 'sbtest1'...
Creating a secondary index on 'sbtest10'...
Creating a secondary index on 'sbtest6'...
Creating a secondary index on 'sbtest4'...
Creating a secondary index on 'sbtest5'...
Creating a secondary index on 'sbtest2'...
Creating a secondary index on 'sbtest7'...
Creating a secondary index on 'sbtest9'...
Creating a secondary index on 'sbtest8'...
Creating a secondary index on 'sbtest3'...

5、数据库读写性能测试(获取测试数据)

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

[root@ab ~]# sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable run
sysbench 1.0.17 (using system LuaJIT 2.0.4)Running the test with following options:
Number of threads: 10
Report intermediate results every 1 second(s)
Initializing random number generator from current timeInitializing worker threads...Threads started!
#​ 下面是截取的执行1秒,2秒,3秒,4秒等的数据。
[ 1s ] thds: 10 tps: 172.58 qps: 3597.26 (r/w/o: 2541.82/701.30/354.14) lat (ms,95%): 71.83 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 10 tps: 187.08 qps: 3691.57 (r/w/o: 2574.10/745.32/372.16) lat (ms,95%): 71.83 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 10 tps: 196.01 qps: 3961.13 (r/w/o: 2774.09/792.03/395.01) lat (ms,95%): 65.65 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 10 tps: 206.93 qps: 4139.62 (r/w/o: 2900.04/824.73/414.86) lat (ms,95%): 64.47 err/s: 1.00 reconn/s: 0.00
[ 5s ] thds: 10 tps: 212.06 qps: 4236.12 (r/w/o: 2970.79/841.22/424.11) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 6s ] thds: 10 tps: 184.06 qps: 3728.31 (r/w/o: 2608.92/751.26/368.13) lat (ms,95%): 97.55 err/s: 0.00 reconn/s: 0.00
[ 7s ] thds: 10 tps: 208.86 qps: 4131.17 (r/w/o: 2894.02/819.44/417.71) lat (ms,95%): 59.99 err/s: 0.00 reconn/s: 0.00
[ 8s ] thds: 10 tps: 214.14 qps: 4283.87 (r/w/o: 2997.01/858.58/428.29) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 9s ] thds: 10 tps: 187.96 qps: 3725.23 (r/w/o: 2600.47/750.85/373.92) lat (ms,95%): 84.47 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 10 tps: 195.96 qps: 3981.11 (r/w/o: 2795.38/791.82/393.91) lat (ms,95%): 66.84 err/s: 0.00 reconn/s: 0.00
^C
[root@ab ~]# 

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

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:                            836822write:                           239020other:                           119517total:                           1195359transactions:                        59744  (199.12 per sec.)queries:                             1195359 (3984.01 per sec.)ignored errors:                      29     (0.10 per sec.)reconnects:                          0      (0.00 per sec.)General statistics:total time:                          300.0377stotal number of events:              59744Latency (ms):min:                                   19.82avg:                                   50.21max:                                  267.2895th percentile:                       68.05sum:                              2999907.14Threads fairness:events (avg/stddev):           5974.4000/21.35execution time (avg/stddev):   299.9907/0.01

6、执行完成压测之后可以将run改成cleanup,清除数据

[root@ab ~]# sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable cleanup
sysbench 1.0.17 (using system LuaJIT 2.0.4)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'...
[root@ab ~]# 

sysbench工具对Mysql数据库的其他测试代码:

数据库读性能测试:

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_only --db-ps-mode=disable run

数据库删除性能测试:

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_delete --db-ps-mode=disable run

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

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_update_index --db-ps-mode=disable run

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

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_update_non_index --db-ps-mode=disable run

数据库插入数据性能测试:

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_insert --db-ps-mode=disable run

数据库写性能测试:

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_write_only --db-ps-mode=disable run

数据库清除创建的测试数据:

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=192.168.2.221 --mysql-port=7001 --mysql-user=claylpf --mysql-password=123456 --mysql-db=test_db --tables=10 --table_size=1000 oltp_read_write --db-ps-mode=disable cleanup

相关文章:

Mysql压力测试(sysbench)

目录 配置项目环境: 参考:采用sysbench压测mysql详解_dream21st的博客-CSDN博客 实验步骤: 1、安装sysbench工具 2、在master上创建用户和库,配置用户的权限可以使他可以访问库(Mysql的主从复制) 3、基…...

TBDS MPP参数列表

TBDS MPP参数列表 namesettingdescriptionapplication_namessqlSets the application name to be reported in statistics and logs.archive_cleanup_commandSets the shell command that will be executed at every restart point.archive_command(disabled)Sets the shell co…...

C# OpenCvSharp 读取rtsp流

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using Syste…...

每日后端面试5题 第七天

一、内连接和外连接查询有什么区别? 内连接只查询出两表的交集; 外连接会查询出某表的全部与两表的交集。 二、Nginx的作用 1.反向代理 前端把请求发送给nginx,再由nginx将请求发送给后端服务器。 2.负载均衡 提高访问速度&#xff1b…...

计算机视觉的应用10-图片中的表格结构识别与提取实战

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用10-图片中的表格结构识别与提取实战,表格结构识别在信息处理领域中具有广泛应用,但由于表格的多样性和复杂性,以及难以准确解析的布局和格式,传统的方…...

P4178 Tree (点分治)

题目链接 一:我们考虑树上两点之间的路径有什么情况 1:经过根节点(即在根节点的两端) 2:不经过根节点(完全在一颗子树的一侧) 二:我们考虑这两种路径是否可以归为一类 1&#xff1…...

Kubernetes 二进制搭建

Kubernetes 二进制搭建 一、二进制搭建 Kubernetes v1.201.1 部署准备1.2 操作系统初始化配置1.3 部署 etcd 集群1.3.1 etcd 作为服务发现系统,有以下的特点1.3.2 准备签发证书环境1.3.3 在 master01 节点上操作1.3.4 生成证书 1.4 部署 docker引擎1.4.1 部署 Maste…...

QT QtXlsx安装使用

QtXlsx介绍 QtXlsx是一个可以读取和写入Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。 这里一定是需要QT5支持的。 须知安装QtXlsx时,需要下载perl 1.安装perl 这里选择官网下载安装即可。 官网地址:https://p…...

Java医院信息化HIS管理系统源码

HIS模板分为两种:病历模板和报表模板。模板管理是运营管理的核心组成部分,是基层卫生健康云中各医疗机构定制电子病历和报表的地方,各医疗机构可根据自身特点特色定制电子病历和报表,制作的电子病历及报表可直接在业务系统中使用。…...

【Uni-App】uview 开发多端应用,密码显示隐藏功能不生效问题

出现的问题: 使用uview组件u-input框密码绑定时会出现右侧密码显隐图标不显示的问题 思路: 1.看了下uview源码,发现这有一段注释,我们需要把源码修改一下,问题出在这里 这行代码修改为 :password"password || …...

人工智能算法-SVM, KNN

目录 SVM, KNN区别 一、KNN算法概述 算法的描述: 二、关于K的取值 K的取法: 三、关于距离的选取 Euclidean Distance 定义: 四、总结 SVM, KNN区别...

计算机网络—TCP

这里写目录标题 TCP头格式有哪些为什么需要TCP,TCP工作在哪什么是TCP什么是TCP连接如何确定一个TCP连接TCP和UDP的区别,以及场景TCP和UDP能共用一个端口?TCP的建立TCP三次握手过程为什么是三次握手、不是两次、四次why每次建立连接&#xff0…...

Oracle到DM实时数据同步实施方案

目录 1 项目概述 2 需求分析 3 实施操作 3.1 历史数据全量同步 3.2 增量数据实时同步 4 问题总结 4.1 字符型非空约束 4.2 字符型唯一索引尾部空格 1 项目概述 将Oracle 11g RAC生产环境数据同步到DM8分析环境,Oracle数据库大小1.5T,日增归档10…...

WebRTC | 音视频实时通信的本质

目录 一、音视频实时通信的两种指标 1. 实时通信延迟指标 2. 视频相关的基本概念 3. 音视频服务质量指标 二、解决实时通信的主要矛盾 1. 增加带宽 A. 提供更优质的接入服务 B. 保证云端网络的带宽和质量 C. 更合理的路由调度策略 2. 减少数据量 A. 采用更好的压缩算…...

ApiPost的使用

1. 设计接口 请求参数的介绍 Query:相当于get请求,写的参数在地址栏中可以看到 Body: 相当于 post请求,请求参数不在地址栏中显示。 请求表单类型,用form-data json文件类型,用row 2. 预期响应期望 设置完每一项点一下生成响应…...

6、CCS 配置工程头文件批量添加路径的方法

1、进入到图示的框框里 2、编辑好需要添加的路径,并按ctrl c 3、选中include paths(-I)框框里的最后一条路径 4、然后ctrl v,这样路径就复制到预定义路径里了...

Visual Studio配置PCL库

Visual Studio配置PCL库 Debug和Release配置新建项目配置属性表测试参考 Debug和Release Debug和Release的配置过程一模一样,唯一区别就在于最后一步插入的附加依赖项不同,因此下面以debug为例。 配置新建项目 1、新建一个C空项目,模式设置…...

数据分析 | 为什么Bagging算法的效果优于单个评估器

1. 回归问题如何降低方差 以随机森林为例,假设随机森林中含有n个弱评估器,由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的方差和偏差,因此假设任意弱评估器上输出结果为,方差均为,则随机森林的输出…...

mysql架构介绍

1.整体架构图 我们发现整体的体系是由连接层、服务层、引擎层和物理文件存储层组成。 1.连接层 连接层是处理客户端和服务端之间的通信的,比如一些连接处理、授权验证等等。 2.服务层 服务层主要完成核心的功能,如SQL接口,就是用来接收…...

EIK+Filebeat+Kafka

目录 一、Kafka 概述 1)为什么需要消息队列(MQ) 2)使用消息队列的好处 (1)解耦 (2)可恢复性 (3)缓冲 (4)灵活性 & 峰值处理…...

【进阶指南】Ant Design Select 下拉框数据全解析:从 value、label 到自定义属性的高效获取

1. 理解Ant Design Select的核心数据流 当你第一次接触Ant Design的Select组件时,可能会觉得它就是个简单的下拉选择器。但实际开发中,特别是处理复杂业务表单时,我们往往需要获取的不仅仅是value值。想象一下这样的场景:用户选择…...

告别枯燥实验报告!用Multisim仿真RLC交流电路,手把手教你复现92分实验数据

用Multisim玩转RLC交流电路:从理论到仿真的实战指南 在电子工程领域,RLC电路是理解交流电特性的重要基石。传统实验室里,学生们需要面对一堆实体仪器和复杂的接线过程,稍有不慎就会得到错误数据。而借助NI Multisim这款强大的电路…...

CXL-PNM架构:突破大语言模型KV缓存内存限制

1. 技术背景与挑战解析在当今大语言模型(LLM)快速发展的背景下,上下文窗口的扩展已成为提升模型性能的关键路径。从最初的几千token发展到如今的百万token量级,这种增长带来了前所未有的技术挑战。让我们先解剖这个问题的核心维度:1.1 KV缓存…...

【2026年携程暑期实习- 4月23日-第一题- 炒鸡回文构造】(题目+思路+JavaC++Python解析+在线测试)

题目内容 我们定义一个长度为 nnn 的数组 { a1,a2,…,an}\{a_1,a_2,\dots,a_n\}{ a...

Jetson Orin音频开发避坑指南:手把手教你用amixer配置AHUB音频路由(附常见问题排查)

Jetson Orin音频开发实战:从零构建AHUB音频路由的完整指南 当你在Orin开发板上完成声卡驱动加载后,却发现扬声器依然沉默无声——这种挫败感每个嵌入式音频开发者都深有体会。问题的根源往往在于AHUB(Audio Hub)这个音频集线器的路…...

Vue3 + Element-UI项目里,手把手教你搞定TinyMCE 6本地化部署(告别API-Key和云服务报错)

Vue3 Element-UI项目实战:TinyMCE 6完整本地化集成指南 在后台管理系统开发中,富文本编辑器是不可或缺的核心组件。当Vue3遇上Element-UI,再结合TinyMCE 6的强大编辑能力,本应成就完美的技术组合。但现实往往充满挑战——云服务依…...

量子计算中参数化电路的强化学习优化方法

1. 量子计算中的参数化电路优化挑战量子计算领域近年来取得了显著进展,但在实际应用中仍面临诸多挑战。当前量子设备属于"噪声中等规模量子"(NISQ)时代,这些设备尚未实现完全的纠错能力,其性能受到噪声的严重限制。在众多噪声源中&…...

鸿蒙ArkTS动画开发全解析:从基础入门到实战精通

鸿蒙ArkTS动画开发全解析:从基础入门到实战精通在鸿蒙HarmonyOS应用开发中,流畅、细腻的动画是提升用户体验的核心要素。ArkTS作为鸿蒙生态的主力开发语言,基于TypeScript扩展而来,搭配ArkUI框架提供了一套简洁、高效的动画开发体…...

权限模型演进:从RBAC到ABAC的实战解析与选型指南

1. 权限模型基础:为什么我们需要RBAC和ABAC? 想象一下你管理着一栋写字楼,每天有上千人进出。如果给每个人单独配钥匙(直接分配权限),不仅管理成本高,而且一旦有人离职就要换锁。这就是早期ACL&…...

从‘阅览室’到真实系统:聊聊借阅记录管理中的状态机与数据验证

从算法题到工程实践:状态机模型在借阅管理系统中的高阶应用 当我们在编程竞赛中解决"阅览室"这类题目时,往往只需要处理简化的业务规则——借书、还书、计算时间。但真实世界中的资源管理系统要复杂得多:书籍可能被预约、续借或丢失…...