sysbench对linux服务器上mysql8.0版本性能压测

一: 安装sysbench工具

sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况,它主要包括以下几种方式的测试:磁盘io性能、数据库性能、内存分配及传输速度等,

  它主要包括以下几种方式的测试:

    1、cpu性能

    2、磁盘io性能

    3、调度程序性能

    4、内存分配及传输速度

    5、POSIX线程性能

    6、数据库性能(OLTP基准测试)

  目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库

本文只介绍针对Mysql进行压测

  1. 安装sysbench

sudo yum -y install sysbench

  1. 查看是否安装成功

二:创建测试数据库

  1. 登录mysql

如果是docker安装的数据库

进入MySQL容器

使用docker exec命令进入正在运行的MySQL容器。假设你的容器名为mysql

2.输入数据库的密码登录

  1. 创建测试库

create database 你的库名,我的是sbtest,创建成功使用show databases;命令查看数据库是否存在

三:使用sysbench创建测试表跟表数据

数据存在之后开始创建数据表跟数据

在创建表跟数据之前因为首次使用susbench工具 对于它的命令还不太熟悉我把踩过的坑意义一 一 讲明

基于sysbench创建数据表跟数据的时候网上有各种诠释

先上我的命令行

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=你的mysql用户名 --mysql-password=你的mysql密码 --mysql-db=创建的数据库 --db-driver=mysql --tables=20 --table-size=1000000 --report-interval=10 --threads=128 --time=300 prepare

先看第一句:sysbench /usr/share/sysbench/oltp_read_write.lua 这句话的意思在你sysbench安装目录中查找读或者写的 .lua,一定要进入目录中查找是否有这个文件(我的是默认安装),如果你指定了安装目录则到你指定的目录中查找,

特别注意的是每个 --xxx-xx=xxx 之间 一定要注意空格

=号后面的值一定不要留空格

如果出现Unrecognized command line argument: prepare 一定是语法有错

网上有很多加了 --test=./tests/db/oltp.lua --oltp_tables_count=10 我到安装目录下一看没有这两果断的去掉

如果出现了以下问题一定是 --mysql-host地址的问题 一开始我用的localhost 后来该成了127.0.0.1

最后解释一下命令行的意思:

命令行中的参数说明:

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

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

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

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

​ --mysql-host=你的数据库链接地址 --mysql-port=数据库端口 --mysql-user=用户名 --mysql-password=数据库密码:数据库的用户和密码等信息

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

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

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

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

执行完之后用navicat 连接一下服务器上的数据库刷新表结构看看或者用命令行看一下也可以

四:数据库性能测试

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

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=数据库地址 --mysql-port=mysql端口 --mysql-user=你的mysql用户名 --mysql-password=你的mysql密码 --mysql-db=你的库 --db-driver=mysql --tables=20 --table-size=1000000 --report-interval=10 --threads=64 --time=30 run

最终输出结果(此图仅供参考)

相关推荐
zylyehuo15 小时前
Linux 彻底且安全地删除文件
linux
这个DBA有点耶21 小时前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵1 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
用户805533698031 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297911 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
SamDeepThinking1 天前
一条UPDATE语句在MySQL 8.0中到底加了几把锁?
后端·mysql·程序员
Web3探索者3 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
李白客3 天前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
zylyehuo3 天前
Linux系统中网线与USB网络共享冲突
linux