使用sysbench对mysql数据库进行基准测试

目录

一、 安装sysbench

二、准备测试表及数据

三、开始测试

1、测试综合TPS

 2、只读性能 oltp_read_only

3、删除性能 oltp_delete 

4、更新索引字段性能 oltp_update_index 

5、更新非索引字段性能 oltp_update_non_index 

6、插入性能 oltp_insert 

7、写入性能 oltp_write_only 

8、测试完成进行清理 CleanUp 

四、测试结果 (不同线程参考)

一、 安装sysbench

yum安装

wget https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh
chmod +x script.rpm.sh
./script.rpm.sh
yum install -y sysbench

下载tar.gz安装

yum install -y automake libtool
wget https://github.com/akopytov/sysbench/archive/refs/tags/1.0.20.tar.gz
tar zvxf 1.0.20.tar.gz
cd sysbench-1.0.20
./autogen.sh
./configure
make -j4
make install

二、准备测试表及数据

新建用户和数据库,也可以直接用root

CREATE USER `test`@`` IDENTIFIED BY 'test';

GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Grant Option, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `test\_db`.* TO `test`@``;

新建用户表 test_db

 创建20张表,每张表插入100万数据

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
sysbench 
//基于mysql的驱动去连接mysql数据库
--db-driver=mysql 
//连续访问300秒
--time=300 
//10个线程模拟并发访问
--threads=10 
//每隔1秒输出一下压测情况
--report-interval=1 
//本机
--mysql-host=127.0.0.1 
//端口号:3306
--mysql-port=3306 
//测试用户
--mysql-user=root 
//测试密码
--mysql-password=******* 
//测试数据库
--mysql-db=test_db 
//模拟新建20个表
--tables=20 
//100万条数据 执行oltp数据库的读写测试
--table_size=1000000 oltp_read_write 
//参照这个命令的设置去构造出来我们需要的数据库里的数据
//自动创建20个测试表,每个表里创建100万条测试数据
--db-ps-mode=disable prepare

 执行后如图:

使用sysbench对mysql数据库进行基准测试_第1张图片

 使用sysbench对mysql数据库进行基准测试_第2张图片

三、开始测试

1、测试综合TPS

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run

 执行后如下:

使用sysbench对mysql数据库进行基准测试_第3张图片

反馈解释:

​ 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:                            1420902 // 这就是说在300s的压测期间执行了1420902次的读请求
        write:                           405972  // 这就是说在300s的压测期间执行了405972次的写请求
        other:                           202986  // 这就是说在300s的压测期间执行了202986次其他请求
        total:                           2029860  // 这就是说在300s的压测期间执行了2029860  次总的请求
    transactions:                        101493 (338.28 per sec.)//共执行了101493 次事务 平均1秒执行338.28次事务
    queries:                             2029860 (6765.64 per sec.)//共执行2029860次请求 平均每秒6765.64 次
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

Throughput:
    events/s (eps):                      338.2821
    time elapsed:                        300.0247s
    total number of events:              101493

Latency (ms):
         min:                                    5.41 //请求中延迟最小的是5.41 ms
         avg:                                   29.56 //请求中延迟平均的是29.56ms
         max:                                  730.50 //请求中延迟最大的是730.50ms
         95th percentile:                       77.19 //95%的请求中延迟在77.19ms以内124
         sum:                              2999724.22

Threads fairness:
    events (avg/stddev):           10149.3000/17.95
    execution time (avg/stddev):   299.9724/0.01

 2、只读性能 oltp_read_only

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run

3、删除性能 oltp_delete 

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_delete --db-ps-mode=disable run

4、更新索引字段性能 oltp_update_index 

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_index --db-ps-mode=disable run

5、更新非索引字段性能 oltp_update_non_index 

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_non_index --db-ps-mode=disable run

6、插入性能 oltp_insert 

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_insert --db-ps-mode=disable run

7、写入性能 oltp_write_only 

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_write_only --db-ps-mode=disable run

8、测试完成进行清理 CleanUp 

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable cleanup

四、测试结果 (不同线程参考)

不同线程结果如下(1,16,32.....线程数)

使用sysbench对mysql数据库进行基准测试_第4张图片

总结:当前mysql测试环境,在并发线程数达到160左右时,TPS约900/s左右,QPS约1.8万/s左右,95%事务平均延迟达到300ms,

再增加并发数据后,QPS变化不大,但延迟时间明显加长。测试过程整体CPU利用率较高,在达到最大TPS及QPS时此时CPU利用率达到93%以上。

你可能感兴趣的:(database,数据库,mysql,服务器)