基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OB Cloud 云数据库性能测试-sysbench 测试
更新时间:2026-06-21 19:01:21
本文介绍如何使用 Sysbench 工具对 OceanBase 云数据库的 OLTP 性能进行测试。
说明
为了提升用户体验和易用性,让每一个开发者在使用数据库时都能获得较好的性能,OceanBase 数据库在 V4.0.0 版本之后,做了大量的优化工作。本性能测试方法仅基于基础参数进行调优,让开发者获得较好的数据库性能体验。
什么是 Sysbench
Sysbench 是一个基于 LuaJIT 的可编写脚本的多线程基准测试工具,可以执行 CPU、内存、线程、IO 和数据库等方面的性能测试,常用于评估测试各种不同系统参数下的数据库负载情况,不需要修改源码,通过自定义 lua 脚本就可以实现不同业务类型的测试。
环境准备
压力机 ECS
请准备一个 ECS,建议规格与 OBServer 规格相同,避免压力机成为瓶颈。请注意压力机 ECS 需要和 OceanBase 租户在同一 VPC 网络,且 OceanBase 集群开放了压力机 ECS 的白名单访问。
创建 OceanBase 实例
安装 sysbench 工具:按照以下步骤安装 Sysbench。
下载 Sysbench。
详细信息参考 Sysbench 下载地址 。
参数说明:
参数名 说明 --prefix 指定 Sysbench 的安装目录。 --with-mysql-includes 指定 mysql 的 includes 目录。 --with-mysql-libs 指定 mysql 的 lib 目录。 --with-mysql Sysbench 默认支持 MySQL 运行以下命令,验证 Sysbench 是否安装成功:
[xxxx@localhost sysbench-1.0.20] $./sysbench --help如果返回以下信息,则 Sysbench 安装成功。
Usage: sysbench [options]... [testname] [command] Commands implemented by most tests: prepare run cleanup help
环境调优
测试场景说明:
为了更好体会 OceanBase 分布式数据库的特点,建议开启数据库代理,参见数据库代理管理。
OceanBase 数据库实例,默认数据库代理和 OBserve 部署在同一台 ECS,开启数据库代理后,对性能有积极影响。
测试执行
初始化数据库
sysbench oltp_read_write.lua --mysql-host=$host --mysql-port=$port --mysql-db=$database_name --mysql-user=$user --mysql-password=****** --table_size=1000000 --tables=30 --threads=150 --report-interval=10 --time=60 cleanup新建表
sysbench oltp_read_write.lua --mysql-host=$host --mysql-port=$port --mysql-db=$database_name --mysql-user=$user --mysql-password=****** --table_size=1000000 --tables=30 --threads=150 --report-interval=10 --time=60 prepare执行测试
sysbench oltp_read_write.lua --mysql-host=$host --mysql-port=$port --mysql-db=$database_name --mysql-user=$user@ --mysql-password=****** --table_size=1000000 --tables=30 --threads=150 --report-interval=10 --time=60 --db-ps-mode=disable run参数说明
以下为 Sysbench 配置文件样例:
--mysql-host OBServer 的 IP(如果有 OBProxy 建议用 OBProxy 的 IP) --mysql-port 端口号 --mysql-db 希望连接的数据库 --mysql-user 用户名 --mysql-password 密码 --table_size 每张表初始化的数据数量 --tables 初始化表的数量 --threads 启动的线程数量 --time 运行时间设为 0 表示不限制时间 --report-interval 运行期间日志,单位为秒 --events 最大请求数量,定义数量后可以不需要--time 选项 --rand-type 访问数据时使用的随机生成函数可以选择 special、uniform、gaussian、pareto,默认 special,早期时 uniform --skip_trx=on 在只读测试中可以选择打开或关闭事务, 默认是打开 --percentile=N 打印百分位 rt,默认 95 oltp_write_only 在 sysbench 的 lua 目录下,自带有针对不同场景的测试 case,比如 insert, point_select 等