Sybench性能测试MySQL/TIDB

发布时间 2023-10-27 10:30:16作者: S-Gavin

一、安装部署

1.1源码/https://github.com/akopytov/sysbench

1.2安装工具Sysbench1.0.20版本

切换root用户执行

方式一:

- Debian/Ubuntu系统:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash

sudo apt -y install sysbench

- RHEL/CentOS系统:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash

sudo yum -y install sysbench

- Fedora系统:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash    

sudo dnf -y install sysbench

方式二:

### Debian/Ubuntu

``` shell

    apt -y install make automake libtool pkg-config libaio-dev

    # For MySQL support

    apt -y install libmysqlclient-dev libssl-dev

    # For PostgreSQL support

    apt -y install libpq-dev

```

 

### RHEL/CentOS

``` shell

    yum -y install make automake libtool pkgconfig libaio-devel

    # For MySQL support, replace with mysql-devel on RHEL/CentOS 5

    yum -y install mariadb-devel openssl-devel

    # For PostgreSQL support

    yum -y install postgresql-devel

```

 

### Fedora

``` shell

    dnf -y install make automake libtool pkgconfig libaio-devel

    # For MySQL support

    dnf -y install mariadb-devel openssl-devel

    # For PostgreSQL support

    dnf -y install postgresql-devel

```

 

## Build and Install

``` shell

    ./autogen.sh

    # Add --with-pgsql to build with PostgreSQL support

    ./configure

    make -j

    make install

```

二、测试方法

sysbench的基本命令格式为:

sysbench –test=< test-name> [options]… < command>

主要分为三个部分:

1–test=< test-name>

这部分是指定测试类型,基本类型有fileiocpumemorythreadsmutexoltp(或者指定lua脚本)

2[options]…

这部分包括测试需要的各种选项,有全局的也有每个测试模式自由的选项

(每个测试模式的选项可以用./sysbench –test=< test-name> help来获取)

3< command>

控制命令,总共有五个

prepare #准备测试,主要是生成测试数据

run #执行测试,根据选项限制来执行测试

cleanup #清除准备阶段生成的测试数据

help #获取帮助文档

version #获取版本信息

几个重要的全局参数:

–num-threads=N number of threads to use [1] #测试时使用的线程数

–max-requests=N limit for total number of requests [10000] #测试过程最多执行多少次请求

–max-time=N limit for total execution time in seconds [0] #测试过程总共执行多长时间(和–max-requests效果同样,但是两个同时限定的时候谁优先还没有测试)

–report-interval=N periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0] #每隔多少秒输出测试概况(这个过程你可以观察到mysql redolog的切换情况)

–db-driver=STRING specifies database driver to use (‘help’ to get list of available drivers) #指定需求测试的数据库类型,默认是mysql

#mysql链接选项

–mysql-host=[LIST,…] MySQL server host [localhost] #mysql主机地址

–mysql-port=N MySQL server port [3306] #mysql端口

–mysql-socket=[LIST,…] MySQL socket #mysql socket文件位置,指定这个之后 其他的链接选项均可以不指定

–mysql-user=STRING MySQL user [sbtest] #用来测试的mysql用户名

–mysql-password=STRING MySQL password [] #密码

–mysql-db=STRING MySQL database name [sbtest] #测试数据库名 默认sbtest

三、MySQL/TIDB数据库读写吞吐量测试

在测试之前请预先创建数据库,并给予测试用户足够的权限。然后使用工具进行:

举例:(命令最后不是prepare,是run了,意思就是运行压测

(1) 数据准备

sysbench --db-driver=mysql --threads=10 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=1q2w!Q@W --mysql-db=test --tables=15 --table_size=500000 oltp_insert --db-ps-mode=disable prepare

(2) 运行测试数据

sysbench --db-driver=mysql --threads=10 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=1q2w!Q@W --mysql-db=test --tables=15 --table_size=500000 oltp_insert --db-ps-mode=disable run

(3) 记录输出的测试结果

(4) 清理测试数据

sysbench --db-driver=mysql --threads=10 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=1q2w!Q@W --mysql-db=test --tables=15 --table_size=500000 oltp_insert --db-ps-mode=disable cleanup