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

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

相关推荐
我爱学习好爱好爱2 小时前
Ansible 常用模块详解:yum、service/systemd、copy实战
linux·服务器·ansible
沪漂阿龙2 小时前
别再让数据库“吃”脏数据了!一文讲透MySQL约束,从入门到精通
数据库·mysql
papaofdoudou2 小时前
LINUX VFIO被IOMMUFD取代
linux·运维·服务器
skiy3 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
平生不喜凡桃李3 小时前
浅谈 Linux 中 namespace 相关系统调用
java·linux·服务器
YMWM_4 小时前
【问题】thor上的cubLas
linux·python·thor
杨云龙UP5 小时前
mysqldump逻辑备份文件恢复总结:全库恢复、单库恢复,一篇讲明白
linux·运维·服务器·数据库·mysql·adb
舰长1155 小时前
linux系统服务器加固1、中风险 未设置登录失败处理功能和登录连接超时处理功能。2、中风险 未限制默认账户的访问权限。3、中风险 未实现管理用户的权限分离。
linux·运维·服务器
ybwycx5 小时前
mysql重置root密码(适用于5.7和8.0)
数据库·mysql·adb
mounter6255 小时前
Linux 7.0 重磅更新:详解 nullfs 如何重塑根文件系统挂载与内核线程隔离
linux·运维·服务器·kernel