无法在 sysbench 上找到 oltp 测试

Cannot Find oltp test on sysbench

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

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

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 的预定义测试,但我不知道如何解决。

感谢阅读。

从输出来看,您似乎已经安装了最新的 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

在运行执行准备命令之前,打开mysql控制台并创建数据库foo - 创建数据库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 文件夹中有很多工作负载,除了oltp_read_only,您可以绕过它们。 github link - https://github.com/akopytov/sysbench

提供了足够的文档

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
...