基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase Sysbench 高性能参数配置
更新时间:2026-04-07 20:57:20
本文以高性能为目标,对 OceanBase 数据库的安装部署、业务租户的创建以及 Sysbench 的使用细节进行说明,旨在帮助 OceanBase 数据库的使用者在 Sysbench 测试中跑出更好的性能。
OceanBase 数据库部署参数配置
概括 OceanBase 数据库在安装部署过程中涉及到性能相关的参数配置,以及配置文件内容。
安装部署流程
开源版安装部署流程
使用 OBD 部署:使用命令行部署 OceanBase 数据库生产环境
企业版安装部署流程
- 企业版部署:部署流程
安装部署参数说明
除了快速安装流程,一般都需要手动修改 .yaml 文件进行配置。OceanBase 数据库可配置的参数很多,本文重点关注性能相关的参数,详细信息请参考前面的部署文档。
- 查询配置项:
show parameters where name = 'xxx'; - 查询 Server 关键参数:
SELECT * FROM GV$OB_SERVERS;
具体涉及到的配置项包含以下几个:
memory_limit
- 参数说明:OBServer 节点内存上限,优先于
memory_limit_percentage配置项。 - 默认值:0
- 推荐配置:系统总内存的 80%~90%
- 动态修改:
alter system set memory_limit='32G'; - 查询:
show parameters where name = 'memory_limit'; - 相关文档:memory_limit
- 参数说明:OBServer 节点内存上限,优先于
memory_limit_percentage
- 参数说明:OBServer 节点内存占系统内存的百分比,仅
memory_limit为 0 时该配置项才生效。 - 默认值:80
- 推荐配置:80~90
- 动态修改:
alter system set memory_limit_percentage=80; - 查询:
show parameters where name = 'memory_limit_percentage'; - 相关文档:memory_limit_percentage
- 参数说明:OBServer 节点内存占系统内存的百分比,仅
system_memory
- 参数说明:系统租户占用的内存,包含在
memory_limit里面,未配置的情况下会自适应设置。 - 默认值:企业版:30G 社区版:0M
- 推荐配置:
memory_limit的 10% - 动态修改:
alter system set system_memory='2G'; - 查询:
show parameters where name = 'system_memory'; - 相关文档:system_memory
- 参数说明:系统租户占用的内存,包含在
cpu_count
- 参数说明:OBServer 节点可用 CPU 总数。
- 默认值:0,表示系统将会自动检测 CPU 数量。
- 推荐配置:系统 CPU 总数,可通过
lscpu查看。 - 动态修改:
alter system set cpu_count=24; - 查询:
show parameters where name = 'cpu_count'; - 相关文档:cpu_count
net_thread_count
- 参数说明:网络线程数量。
- 默认值:0(网络 I/O 线程数量为 max(6, CPU_NUM/8))
- 推荐配置:CPU 总数的 1/8,如果事务耗时较少,相对来说网络开销较大,可以设置为 CPU 总数的 20%
- 该配置项只能在部署 OBServer 节点时静态设置,不能动态修改。
- 查询:
show parameters where name = 'net_thread_count'; - 相关文档:net_thread_count
sql_net_thread_count
- 参数说明:MySQL 模式下集群 IO 线程的个数。
- 默认值:0,表示与配置项
net_thread_count的值相同。 - 相关文档:sql_net_thread_count
datafile_size
- 参数说明:数据文件的总大小,优先于
datafile_disk_percentage配置项。 - 默认值:0
- 推荐配置:与日志共用磁盘时设为磁盘空间的 60%,独占磁盘时设为磁盘空间的 90%。
- 动态修改:
alter system set datafile_size='80G'; - 查询:
show parameters where name = 'datafile_size'; - 相关文档:datafile_size
- 参数说明:数据文件的总大小,优先于
datafile_disk_percentage
- 参数说明:数据文件占用其所在磁盘总空间的百分比。
- 默认值:0
- 推荐配置:与日志共用磁盘时设为 60%,独占磁盘时设为 90%。
- 动态修改:
alter system set datafile_disk_percentage=60; - 查询:
show parameters where name = 'datafile_disk_percentage'; - 相关文档:datafile_disk_percentage
log_disk_size
- 参数说明:Redo 日志文件的总大小,优先于
log_disk_percentage配置项。 - 默认值:0
- 推荐配置:与数据共用磁盘时设为 30,独占磁盘时设为 90。
- 动态修改:
alter system set log_disk_size='40G'; - 查询:
show parameters where name = 'log_disk_size';
相关文档:log_disk_size
- 参数说明:Redo 日志文件的总大小,优先于
log_disk_percentage
参数说明:Redo 日志文件占用其所在磁盘总空间的百分比。
默认值:0
推荐配置:与数据共用磁盘时设为磁盘空间的 30%,独占磁盘时设为磁盘空间的 90%。
动态修改:
alter system set log_disk_percentage=30;查询:
show parameters where name = 'log_disk_percentage';相关文档:log_disk_percentage
配置文件
以 32c128g 的机器规格为例,在磁盘空间充足的条件下,采用“3 个 OBServer 节点 + 1 个 OBProxy”的部署方式进行说明,暂不考虑 obagent 等其他组件。为了更好的性能,每个 OBServer 节点和 OBProxy 部署在不同的机器上,尽可能充分地利用机器的硬件资源。OceanBase 数据库及其 OBProxy 组件的部署配置文件如下:
oceanbase:
servers:
* name: server1
ip: xxx.xxx.1.1
* name: server2
ip: xxx.xxx.1.2
* name: server3
ip: xxx.xxx.1.3
server1:
mysql_port: 2881
rpc_port: 2882
home_path: /data/1/user_name/observer1
zone: zone1
server2:
mysql_port: 2881
rpc_port: 2882
home_path: /data/1/user_name/observer2
zone: zone2
server3:
mysql_port: 2881
rpc_port: 2882
home_path: /data/1/user_name/observer3
zone: zone3
include: obd/observer.include.yaml
global:
devname: eth0
memory_limit: '100G'
system_memory: '2G'
datafile_size: '80G'
cpu_count: '32'
net_thread_count: 6
obproxy:
servers:
* xxx.xxx.1.5
depends:
* oceanbase
include: obd/obproxy.include.yaml
global:
listen_port: 2891
prometheus_listen_port: 2892
home_path: /data/1/user_name/obproxy
业务租户参数配置
如果用 OBD 自动部署,部署之后只有一个 sys 租户。需要创建一个专门进行性能测试的租户,尽可能充分利用 OBServer 节点的可用资源。
创建租户
OceanBase 数据库仅支持创建用户租户,系统租户由集群创建时自动创建。创建用户租户是一系列操作的组合,首先创建资源规格,然后基于该资源规格创建资源池,最后创建租户并指定其资源池。所以创建租户的顺序为:资源规格 -> 资源池 -> 租户。
有关创建租户的详细操作,参见 创建租户。
这里以 32c128g 的机器为例,创建租户的命令如下:
sh create_perf_tenant.sh ip port
mysql -c -h $1 -P $2 -uroot -e "drop resource unit unit_1;"
mysql -c -h $1 -P $2 -uroot -e "create resource unit unit_1 max_cpu 24, min_cpu 16, memory_size 64000000000, log_disk_size 40000000000, max_iops 10000000;"
mysql -c -h $1 -P $2 -uroot -e "create resource pool pool_2 unit = 'unit_1', unit_num = 1, zone_list = ('zone1','zone2','zone3');"
mysql -c -h $1 -P $2 -uroot -e "create tenant perf replica_num = 3,primary_zone='zone1', resource_pool_list=('pool_2') set ob_tcp_invited_nodes='%';"
mysql -c -h $1 -P $2 -uroot@perf -e "set global ob_query_timeout = 50000000000;"
mysql -c -h $1 -P $2 -uroot@perf -e "set global ob_trx_timeout = 50000000000;"
mysql -c -h $1 -P $2 -uroot@perf -e "set global ob_plan_cache_percentage = 20;"
mysql -c -h $1 -P $2 -uroot@perf -e "set global binlog_row_image='MINIMAL';"
mysql -c -h $1 -P $2 -uroot -e "alter system set enable_early_lock_release=true tenant = perf;"
mysql -c -h $1 -P $2 -uroot -e "alter system set cpu_quota_concurrency=2 tenant = perf;"
如果建租户命令没有指定租户类型,默认是 MySQL 租户,指定了 Oracle 模式才是 Oracle 租户。
在 sys 租户下执行命令:
SELECT * FROM DBA_OB_TENANTS;
其中 COMPATIBILITY_MODE 字段表明了租户是什么模式。
租户关键配置
性能相关的租户配置项如下:
min_cpu
- 参数说明:租户最小可用 CPU 数量(
所有租户 min_cpu 之和<=cpu_count)。 - 推荐值:
cpu_count/2 - 相关文档:
min_cpu参数详细信息请参见 创建租户 中 创建资源单元 的 参数解释。
- 参数说明:租户最小可用 CPU 数量(
max_cpu
- 参数说明:租户最大可用 CPU 数量(
所有租户 max_cpu 之和<=cpu_count * resource_hard_limit/ 100)。 - 推荐值:
cpu_count/2 ~cpu_count(或者与min_cpu设成一样也行) - 相关文档:
min_cpu参数详细信息请参见 创建租户 中 创建资源单元 的 参数解释。
- 参数说明:租户最大可用 CPU 数量(
cpu_quota_concurrency
- 参数说明:租户每个 CPU 可以并发的线程数(
max_cpu * cpu_quota_concurrency= 最大业务线程数)。 - 推荐值:4(一般建议默认值不改,CPU 密集的压测可以改为 2。)
- 相关文档:cpu_quota_concurrency
- 参数说明:租户每个 CPU 可以并发的线程数(
memory_size
- 参数说明:资源单元能够提供的 Memory 的大小。
- 推荐值:总内存的 50%~80%(如果要创建多个资源单元,则需要灵活分配)。
log_disk_size
- 参数说明:日志盘大小。
- 推荐值:能够正常使用就可以,比如设置为 40~80GB,如果数据量很大则可以设置更大的数值。
primary_zone
参数说明:主副本分配到 Zone 内的优先级,逗号两侧优先级相同,分号左侧优先级高于右侧。比如
zone1,zone2,zone3。推荐值:
- 三台机器规格相同且网络延迟相近,可以让 Leader 均匀分布,以提高性能 RANDOM。
- 如果其中一台性能更好,或者是为了方便统计和观察数据,也可以指定该 Zone,比如
zone1。
系统租户全局配置
连接系统租户修改集群级别的配置,比如修改日志级别,关闭 sql_audit 等影响性能的功能。常见的配置命令如下:
ALTER SYSTEM SET enable_sql_audit=false;
select sleep(5);
ALTER SYSTEM SET enable_perf_event=false;
ALTER SYSTEM SET syslog_level='ERROR';
alter SYSTEM SET enable_record_trace_log=false;
Sysbench 参数配置
以 MySQL 租户为例,进行 Sysbench 的测试流程的准备和关键参数的配置。
Sysbench 测试流程
准备数据
cleanup: sysbench oltp_read_write.lua --mysql-host=x.x.x.x --mysql-port=xxxx --mysql-db=test --mysql-user=test@xxx --mysql-password=xxx --table_size=1000000 --tables=30 --rand-type=uniform --threads=1000 --report-interval=1 --time=600 cleanup prepare: sysbench oltp_read_write.lua --mysql-host=x.x.x.x --mysql-port=xxxx --mysql-db=test --mysql-user=test@xxx --mysql-password=test --table_size=1000000 --tables=30 --rand-type=uniform --threads=1000 --report-interval=1 --time=600 prepare运行测试
sysbench oltp_read_write.lua --mysql-host=x.x.x.x --mysql-port=xxxx --mysql-db=test --mysql-user=test@xxx --mysql-password=xxx --table_size=1000000 --tables=30 --rand-type=uniform --threads=1000 --report-interval=1 --time=600 --db-ps-mode=disable run
性能关键参数配置
Sysbench 性能相关的关键参数推荐配置如下:
table_size
- 参数说明:每张表初始化的数据行数,默认 10000
- 推荐值:100000, 1000000
tables
- 参数说明:初始化表的数量
- 推荐值:30 ~ 100
threads
- 参数说明:测试线程的数量
- 推荐值:500 ~ 2000(测试机 CPU 越多线程数可以越大)
rand-type
参数说明:表示随机类型的模式,共有 4 种模式:
uniform、gaussian、special、pareto,默认值为special。special:Key 比较集中的分布模式,容易发生锁冲突。uniform:离散均匀分布,范围内所有数值出现概率均等,没有热点。gaussian:高斯分布,也就是正态分布,数据集中在中位数附近。pareto:帕累托分布,数据集中在最小值附近,越大的值出现概率越小。
推荐值:
uniformmysql-ignore-errors
- 参数说明:测试过程中忽略的错误码。Sysbench 一旦收到报错,就会停止发送新请求,直到当前请求全部返回,然后退出测试。因此如果是预期之内的问题,可以选择忽略相关错误码。
- 可选值:
--mysql-ignore-errors=1062,1213,6002,其中1062是主键、唯一索引冲突;1213是 Dead Lock;6002是 Trans Rollback。
db-ps-mode
- 参数说明:SQL 是否需要预编译,模式有
auto/disable,默认为disable。 - 推荐值:
disable(建议设置为disable) - 如果设置了
auto,需要修改租户配置:alter system set open_cursors=65535;
- 参数说明:SQL 是否需要预编译,模式有
skip_trx
- 参数说明:跳过事务,在只读测试中可以选择是否跳过事务,默认为 OFF,即开启事务。
- 推荐值:只读测试可以设置为 ON,其他情况默认。
auto-inc
- 参数说明:ID 列是否自增,默认 ON。
- 推荐值:OFF(写场景下建议关闭)
warmup-time
- 参数说明:热身时间(单位为 s),表示测试开始多少时间之后正式开始统计,默认为 0。
- 推荐值:10~30(数据量大时间可以略长)
有关 Sysbench 的详细参数配置,可通过 Sysbench 参数详解 进行查看。