§ 使用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
2
§ 生成测试数据
先创建默认的测试库,例如 sysbench_test。
登录GreateSQL
mysql -u root -p
1
创建测试库
greatsql> CREATE DATABASE sysbench_test;
Query OK, 1 row affected (0.03 sec)
1
2
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
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
参数说明:
--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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
扫码关注微信公众号