首批通过分布式安全可靠测评,为关键业务系统打造
配置最佳实践
更新时间:2025-04-21 11:51:31
为了确保用户在各种业务场景下,能够基于 OceanBase 数据库获得比较好的性能,OceanBase 基于过往大量真实场景的调优经验总结了各类业务场景下一些核心配置项和变量的推荐配置。OceanBase 云平台(OceanBase Cloud Platform,简称:OCP)支持用户在创建租户时在参数设置中选择参数模板,基于用户选择的参数模板,通过读取对应版本内核的 RPM 包内容获得对应参数取值。使用 OCP 创建租户的信息,参见 新建主租户。
本文主要介绍在黑屏部署 OceanBase 数据库后,针对不同业务应用场景,核心配置项与系统变量的推荐配置。
参数配置模板
安装 OceanBase 数据库 RPM 包后,可以在 /home/admin/oceanbase/etc 目录下查看不同业务场景下的推荐参数配置的参数配置模板。
default_parameter.json:保存了配置项的推荐配置。default_system_variable.json:保存了变量的推荐配置。
注意
本文中的参数介绍信息基于 OceanBase 数据库 V4.3.4 BP1 版本中的配置模板更新。若需查询其他版本的推荐配置,请通过对应版本安装包中的配置文件获取最新参数组合。
参数配置文件中的模版分类:
express_oltp:本模版适用于交易、支付核心系统、互联网高吞吐量应用等工作负载类型,无外键约束、无存储过程、无长事务、无大事务、无复杂连接及复杂子查询等限制。在本场景下,相关推荐配置的详细介绍信息,可参见下文 express_oltp。complex_oltp:本模版适用于银行、保险系统等工作负载,通常涉及复杂连接、复杂相关子查询、使用 PL 编写的批处理作业,同时存在长事务和大事务。对于短期运行的查询,有时会采用并行执行。在本场景下,相关推荐配置的详细介绍信息,可参见下文 complex_oltp。olap:本模版主要用于实时数据仓库分析应用。在本场景下,相关推荐配置的详细介绍信息,可参见下文 olap。htap:本模版适用于 OLAP 和 OLTP 混合负载场景,包括不限于运营数据实时分析、欺诈行为检测、个性化推荐等。在本场景下,相关推荐配置的详细介绍信息,可参见下文 htap。kv:本模版适用于 HBase 兼容和 Key-Value 表模型访问模式,单分区访问,无 SQL 层。此场景通常伴随着极高的数据吞吐量需求,并且对延迟非常敏感。在本场景下,相关推荐配置的详细介绍信息,可参见下文 kv。
express_oltp
在本场景下,当前暂无变量配置推荐。
express_oltp 场景配置项推荐值的详细介绍如下:
| 配置项 | 推荐值 | 推荐值说明 | 级别 |
|---|---|---|---|
| enable_record_trace_log | False | 禁止记录 SQL 和事务跟踪事件。 | cluster |
| enable_syslog_recycle | True | 启用 syslog 自动回收可以防止日志文件填满磁盘空间。 | cluster |
| max_syslog_file_count | 300 | 启用 enable_syslog_recycle 时,应将该值设置为适当的值。300 是一个经验值。 |
cluster |
| log_transport_compress_all | True | 在带宽有限的场景中,可以通过 RPC 压缩以少量 CPU 开销节省网络带宽。 | tenant |
| default_load_mode | DISABLED | 对于简单的 OLTP 工作负载,默认不使用旁路导入。 | tenant |
| direct_load_allow_fallback | True | 对于简单的 OLTP 工作负载,当旁路导入失败时允许回退成普通导入方式。 | tenant |
express_oltp 场景示例
在 sys 租户中执行以下语句,配置集群级配置项。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;在用户中执行以下语句,配置租户级配置项。
MySQL 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True;Oracle 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True;
complex_oltp
在本场景下,当前暂无变量配置推荐。
complex_oltp 场景配置项推荐值的详细介绍如下:
| 配置项 | 推荐值 | 推荐值说明 | 级别 |
|---|---|---|---|
| enable_record_trace_log | False | 禁止记录 SQL 和事务跟踪事件。 | cluster |
| large_query_threshold | 600s | 对于复杂的 OLTP 场景,一些查询将运行很长时间。 | cluster |
| enable_syslog_recycle | True | 启用 syslog 自动回收可以防止日志文件填满磁盘空间。 | cluster |
| max_syslog_file_count | 300 | 启用 enable_syslog_recycle 时,应将该值设置为适当的值。300 是一个经验值。 |
cluster |
| log_transport_compress_all | True | 在带宽有限的场景中,可以通过 RPC 压缩以少量 CPU 开销节省网络带宽。 | tenant |
| default_load_mode | DISABLED | 对于复杂的 OLTP 工作负载,默认不使用旁路导入。 | tenant |
| direct_load_allow_fallback | True | 对于复杂的 OLTP 工作负载,当旁路导入失败时允许回退成普通导入方式。 | tenant |
complex_oltp 场景示例
在 sys 租户中执行以下语句,配置集群级配置项。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET large_query_threshold = '600s'; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;在用户中执行以下语句,配置租户级配置项。
MySQL 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True;Oracle 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True;
olap
olap 场景配置项推荐值的详细介绍如下:
| 配置项 | 推荐值 | 推荐值说明 | 级别 |
|---|---|---|---|
| enable_record_trace_log | False | 关闭追踪日志可以带来更好的 AP 性能。 | cluster |
| trace_log_slow_query_watermark | 7d | AP 场景下无需定义慢查询。 | cluster |
| large_query_threshold | 0ms | 表示关闭大查询的检测。 | cluster |
| enable_syslog_recycle | True | 启用 syslog 自动回收可以防止日志文件填满磁盘空间。 | cluster |
| max_syslog_file_count | 300 | 启用 enable_syslog_recycle 时,应将该值设置为适当的值。300 是一个经验值。 |
cluster |
| default_table_store_format | column | AP 默认格式指定为纯列存表。 | tenant |
| _io_read_batch_size | 128K | 单次读取 IO 请求的最大批次大小。 | tenant |
| _io_read_redundant_limit_percentage | 50 | 单次读取 IO 请求中冗余数据的最大百分比(冗余数据指批次中间必须读取但已命中缓存或被跳跃索引过滤的数据块)。 | tenant |
| default_load_mode | FULL_DIRECT_WRITE | 对于经典的 OLAP 工作负载,默认使用全量旁路导入。 | tenant |
| direct_load_allow_fallback | False | 对于经典的 OLAP 工作负载,当旁路导入失败时直接报错,不允许回退成普通导入方式。 | tenant |
olap 场景变量推荐值的详细介绍如下:
| 变量 | 推荐值 | 推荐值说明 | 级别 |
|---|---|---|---|
| ob_query_timeout | 604800000000 | 设置为 7 天。 | tenant |
| ob_trx_timeout | 604800000000 | 设置为 7 天。 | tenant |
| parallel_min_scan_time_threshold | 10 | 对于执行时间在 100ms+ 的查询,可以带来最佳的并行执行性能。 | tenant |
| ob_sql_work_area_percentage | 30 | 设置比较大的工作区内存可以节省内存泄漏带来的成本。 | tenant |
| parallel_degree_policy | AUTO | 表示启用 Auto DOP 策略。 关于 Auto DOP 的详细介绍,参见 Auto DOP。 |
tenant |
| collation_server | utf8mb4_bin | 相较其他 collation,使用二进制 collation 可以实现 20% 的性能提升。 | tenant |
| collation_connection | utf8mb4_bin | 相较其他 collation,使用二进制 collation 可以实现 20% 的性能提升。 | tenant |
olap 场景示例
在 sys 租户中执行以下语句,配置集群级配置项。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET trace_log_slow_query_watermark = '7d'; ALTER SYSTEM SET large_query_threshold = '0ms'; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;在用户中执行以下语句,配置租户级配置项。
MySQL 模式租户的配置示例:
ALTER SYSTEM SET default_table_store_format = 'column'; ALTER SYSTEM SET _io_read_batch_size = '128K'; ALTER SYSTEM SET _io_read_redundant_limit_percentage = 50; ALTER SYSTEM SET default_load_mode = 'FULL_DIRECT_WRITE'; ALTER SYSTEM SET direct_load_allow_fallback = False;Oracle 模式租户的配置示例:
ALTER SYSTEM SET default_table_store_format = 'column'; ALTER SYSTEM SET "_io_read_batch_size" = '128K'; ALTER SYSTEM SET "_io_read_redundant_limit_percentage" = 50; ALTER SYSTEM SET default_load_mode = 'FULL_DIRECT_WRITE'; ALTER SYSTEM SET direct_load_allow_fallback = False;
在用户中执行以下语句,配置租户级变量。
MySQL 模式租户的配置示例:
SET GLOBAL ob_query_timeout = 604800000000; SET GLOBAL ob_trx_timeout = 604800000000; SET GLOBAL parallel_min_scan_time_threshold = 10; SET GLOBAL ob_sql_work_area_percentage = 30; SET GLOBAL parallel_degree_policy = AUTO; SET GLOBAL collation_server = utf8mb4_bin; SET GLOBAL collation_connection = utf8mb4_bin;Oracle 模式租户的配置示例:
SET GLOBAL ob_query_timeout = 604800000000; SET GLOBAL ob_trx_timeout = 604800000000; SET GLOBAL parallel_min_scan_time_threshold = 10; SET GLOBAL ob_sql_work_area_percentage = 30; SET GLOBAL parallel_degree_policy = AUTO;
htap
在本场景下,当前暂无变量配置推荐。
htap 场景配置项推荐值的详细介绍如下:
| 配置项 | 推荐值 | 推荐值说明 | 级别 |
|---|---|---|---|
| large_query_threshold | 600s | HTAP 工作负载中存在 AP 查询,我们也需要它快速运行。 | cluster |
| enable_record_trace_log | False | 关闭追踪日志可以带来更好的 AP 性能。 | cluster |
| enable_syslog_recycle | True | 启用 syslog 自动回收可以防止日志文件填满磁盘空间。 | cluster |
| max_syslog_file_count | 300 | 启用 enable_syslog_recycle 时,应将该值设置为适当的值。300 是一个经验值。 |
cluster |
| log_transport_compress_all | True | 在带宽有限的场景中,可以通过 RPC 压缩以少量 CPU 开销节省网络带宽。 | tenant |
| default_load_mode | DISABLED | 对于经典的 HTAP 工作负载,默认不使用旁路导入。 | tenant |
| direct_load_allow_fallback | True | 对于经典的 HTAP 工作负载,当旁路导入失败时允许回退成普通导入方式。 | tenant |
htap 场景示例
在 sys 租户中执行以下语句,配置集群级配置项。
ALTER SYSTEM SET large_query_threshold = '600s'; ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;在用户中执行以下语句,配置租户级配置项。
MySQL 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True;Oracle 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True;
kv
在本场景下,当前暂无变量配置推荐。
kv 场景配置项推荐值的详细介绍如下:
| 配置项 | 推荐值 | 推荐值说明 | 级别 |
|---|---|---|---|
| enable_record_trace_log | False | 关闭追踪日志可以带来更好的 AP 性能。 | cluster |
| large_query_threshold | 0ms | 禁用 KV 模式的大型查询检测。 | cluster |
| enable_syslog_recycle | True | 启用 syslog 自动回收可以防止日志文件填满磁盘空间。 | cluster |
| max_syslog_file_count | 300 | 启用 enable_syslog_recycle 时,应将该值设置为适当的值。300 是一个经验值。 |
cluster |
| log_transport_compress_all | True | 在带宽有限的场景中,可以通过 RPC 压缩以少量 CPU 开销节省网络带宽。 | tenant |
kv 场景示例
在 sys 租户中执行以下语句,配置集群级配置项。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET large_query_threshold = '0ms'; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;在用户中执行以下语句,配置租户级配置项。
MySQL 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True;Oracle 模式租户的配置示例:
ALTER SYSTEM SET log_transport_compress_all = True;
查看配置项和变量
可以使用
SHOW PARAMETERS LIKE 'parameter_name';语句查询配置项信息。示例如下:
SHOW PARAMETERS LIKE 'enable_syslog_recycle';可以使用下面语句查询变量信息。
MySQL 模式:可以使用
SHOW [GLOBAL] VARIABLES LIKE 'variables_name';语句查询。示例如下:
SHOW VARIABLES LIKE 'ob_query_timeout';SHOW GLOBAL VARIABLES LIKE 'ob_query_timeout';Oracle 模式:可以使用视图
SYS.TENANT_VIRTUAL_SESSION_VARIABLE/SYS.TENANT_VIRTUAL_GLOBAL_VARIABLE查询变量信息。示例如下:
SELECT * FROM SYS.TENANT_VIRTUAL_SESSION_VARIABLE WHERE VARIABLE_NAME = 'ob_query_timeout';SELECT * FROM SYS.TENANT_VIRTUAL_GLOBAL_VARIABLE WHERE VARIABLE_NAME = 'ob_query_timeout';
相关文档
- 有关配置项和变量的详细介绍,参见 配置项和系统变量概述。
- 有关配置项的设置方法,参见 设置参数。
- 有关变量的设置方法,参见 设置变量。