§ 使用sysbench生成测试数据


sysbench 是一个轻量级且功能强大的基准测试工具,用于评估系统的性能。它支持CPU、内存、线程和I/O等性能测试,并且特别适用于数据库的性能测试,如MySQL、GreatSQL等。通过模拟真实的应用场景和工作负载,sysbench可以帮助用户快速了解系统的性能瓶颈,并据此进行系统优化和硬件选型。

§ 安装sysbench

CentOS系统下安装sysbench

$ yum install sysbench -y
1

unbuntu系统下安装sysbench

$ apt-get install sysbench -y
1

若使用 yum / apt-get 安装不上,可尝试使用源码编译安装,详见:sysbench性能测试

查看sysbench版本

$ sysbench --version
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta3)
1
2

§ 生成测试数据

先创建默认的测试库,例如 sysbench_test。

登录GreateSQL

$ mysql -u root -p
1

创建测试库

greatsql> CREATE DATABASE sysbench_test;
Query OK, 1 row affected (0.03 sec)
1
2

执行以下命令,本章主要为了演示方法,因此把table_size设置的小一点

$ sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=GreatSQL@2024 --mysql-socket=/var/lib/mysql/mysql.sock --mysql-db=sysbench_test prepare

sysbench 1.0.20 (using system LuaJIT 2.0.5)
Creating table 'sbtest1'...
Inserting 100 records into 'sbtest1'
Creating a secondary index on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 100 records into 'sbtest2'
Creating a secondary index on 'sbtest2'...
Creating table 'sbtest3'...
Inserting 100 records into 'sbtest3'
Creating a secondary index on 'sbtest3'...
Creating table 'sbtest4'...
Inserting 100 records into 'sbtest4'
Creating a secondary index on 'sbtest4'...
Creating table 'sbtest5'...
Inserting 100 records into 'sbtest5'
Creating a secondary index on 'sbtest5'...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

参数说明:

  • --tables:指定表数量,默认为1
  • --table_size:指定表大小,默认为1000000
  • --mysql-user:指定连接数据库的用户名,默认为root
  • --mysql-password:指定连接数据库的密码,默认为空
  • --mysql-socket:指定连接数据库的socket文件,默认为空
  • --mysql-db:指定连接数据库的库名,默认为空
  • prepare:指定执行sysbench的prepare阶段,即生成测试数据

执行完成后,会生成5张表,每张表大小为100行数据。

greatsql> USE sysbench_test;

greatsql> SHOW TABLES;
+-------------------------+
| Tables_in_sysbench_test |
+-------------------------+
| sbtest1                 |
| sbtest2                 |
| sbtest3                 |
| sbtest4                 |
| sbtest5                 |
+-------------------------+
5 rows in set (0.01 sec)

greatsql> SELECT COUNT(*) FROM sbtest1;
+----------+
| COUNT(*) |
+----------+
|      100 |
+----------+
1 row in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

greatsql-wx