8

我正在尝试使用 sysbench 在 mySQL 数据库上运行基准测试。但是,它说它找不到内置的 test oltp

详细信息:我已经在本地机器上安装了 mySQL 和 sysbench。另外,我在dbtestmySQL 中创建了数据库。然后我执行了以下指令。

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=dbtest --mysql-user=root --mysql-password=<password> prepare

但是随后出现了此错误消息。

WARNING: the --test option is deprecated. You can pass a script 
name or path on the command line without any options.
sysbench 1.0.8 (using bundled LuaJIT 2.1.0-beta2)

FATAL: Cannot find benchmark 'oltp': no such built-in test, file or module

sysbench 与其他测试(例如

sysbench --test=cpu --cpu-max-prime=20000 run

我认为问题在于 sysbench 找不到调用的预定义测试,oltp但我不知道如何弄清楚。

感谢您的阅读。

4

2 回答 2

17

从输出看,您似乎安装了最新的 sysbench 1.0。因此,您可以尝试如下准备命令 -

sysbench --db-driver=mysql --mysql-user=root --mysql-password=<pwd> \
  --mysql-socket=<mysql.sock path> --mysql-db=foo --range_size=100 \
  --table_size=10000 --tables=2 --threads=1 --events=0 --time=60 \
  --rand-type=uniform /usr/share/sysbench/oltp_read_only.lua prepare

在运行prepare命令之前,打开mysql控制台,创建一个数据库foo——create database foo。如果您的 mysql 安装在标准位置,则不需要 mysql.sock 的路径。

使用上述命令在数据库 foo 中创建了 8 个表,您可以使用以下命令在 mysql 控制台上检查它们 - 使用数据库 foo、显示表等。

然后您可以按如下方式运行基准测试 -

sysbench --db-driver=mysql --mysql-user=root --mysql-password=<pwd> \
  --mysql-socket=<mysql.sock path> --mysql-db=foo --range_size=100 \
  --table_size=10000 --tables=2 --threads=1 --events=0 --time=60 \
  --rand-type=uniform /usr/share/sysbench/oltp_read_only.lua run

注意:sysbench的share文件夹里面有很多workload,除了oltp_read_only,你可以玩玩。github链接上提供了足够的文档 - https://github.com/akopytov/sysbench

于 2017-08-23T06:46:53.053 回答
2

dpkg工具可以方便地显示已安装软件包的文件在系统上的存储位置。我在查找 sysbench 1.0.14 的测试脚本时使用了它。有关更多选项,请参见手册页

# dpkg --listfiles sysbench
...
/usr/share/sysbench/bulk_insert.lua
/usr/share/sysbench/select_random_ranges.lua
/usr/share/sysbench/oltp_update_non_index.lua
/usr/share/sysbench/oltp_delete.lua
/usr/share/sysbench/oltp_update_index.lua
/usr/share/sysbench/oltp_read_write.lua
/usr/share/sysbench/oltp_point_select.lua
...
于 2018-05-14T16:49:06.020 回答