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

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

相关推荐
pound12711 分钟前
Linux
linux·运维·服务器
皆过客,揽星河1 小时前
mysql进阶语法(视图)
数据库·sql·mysql·mysql基础语法·mysql进阶语法·视图创建修改删除
learning_tom2 小时前
HTML图片标签及路径详解
linux·服务器·php
dbdr09013 小时前
Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
linux·运维·服务器·网络·python·学习
大白的编程日记.3 小时前
【Linux学习笔记】信号的深入理解之软件条件产生信号
linux·笔记·学习
buyutang_3 小时前
C/C++ Linux系统编程:线程控制详解,从线程创建到线程终止
linux·c语言·c++·学习
云的牧人3 小时前
Ubuntu 22 redis集群搭建
linux·运维·ubuntu
siriuuus3 小时前
Linux 磁盘扩容及分区相关操作实践
linux·运维·服务器
To_再飞行4 小时前
K8s 存储配置资源
linux·云原生·容器·kubernetes
小猪写代码4 小时前
Ubuntu 文件权限管理
linux·ubuntu