OceanBase性能关键参数配置最佳实践

OceanBase性能关键参数配置最佳实践

OceanBase V4.2.5

⭐️查看配置参数的方法:

sql 复制代码
show parameters like '%memstore_limit_percentage%';

select * from oceanbase.gv$ob_parameters where name='freeze_trigger_percentage';

⭐️查看系统变量的方法:

sql 复制代码
show variables like '%ob_query_timeout%';

内存调优推荐配置

参数 参数类型 推荐值 参数说明 修改后生效方式
memory_limit 集群参数 实际物理内存的80%大小 用于设置OBServer可用的总内存大小。默认为0,单位为MB。修改memory_limit的值时必须大于OBServer节点实际已使用的内存才会生效。 动态生效
memory_limit_percentage 集群参数 80 用于设置 OBServer 总可用内存大小占总内存大小的百分比。默认为80。如果memory_limit的值不为0时,系统会忽略memory_limit_percentage的设置而优先使用memory_limit配置的值。 动态生效
memstore_limit_percentage 集群参数 0 用于设置租户使用MemStore的内存占其总可用内存的百分比。默认为0,表示自适应调整。 动态生效
freeze_trigger_percentage 租户参数 15 用于设置触发冻结的租户使用MemStore内存的阈值百分比。默认为20。 动态生效
writing_throttling_trigger_percentage 租户参数 80 用于设置写入速度的阈值。默认为60。 动态生效
compaction_high_thread_score 租户参数 12 用于设置高优先级Compaction的工作线程数。高优先级是指对Mini SSTable进行Compaction操作。默认为0,表示使用6个工作线程。 动态生效

登录到SYS租户进行配置:

sql 复制代码
--查看实际已使用的内存
SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE '%observer memory%' AND con_id = 1 AND stat_id=140008 AND name='observer memory used size';

--memory_limit的优先级高于memory_limit_percentage
ALTER SYSTEM SET memory_limit='200G';
ALTER SYSTEM SET memory_limit_percentage='80';

ALTER SYSTEM SET memstore_limit_percentage = 60;

--配置租户级参数时需要指定租户
ALTER SYSTEM SET freeze_trigger_percentage = 15 tenant = tpcc;
ALTER SYSTEM SET compaction_high_thread_score = 12 tenant = tpcc;
ALTER SYSTEM SET writing_throttling_trigger_percentage = 80 tenant = tpcc;

磁盘空间推荐配置

参数 参数类型 推荐值 参数说明 修改后生效方式
data_disk_usage_limit_percentage 集群参数 90 用于设置数据文件最大可以写入的百分比,超过这个阈值后,禁止数据迁入。默认为90。 动态生效
datafile_maxsize 集群参数 视磁盘空间上限而定 无共享(Shared-Nothing)模式下设置磁盘文件自动扩容的空间上限。共享存储(Shared-Storage)模式下无意义,修改不会生效。默认为0,单位为MB。 动态生效
datafile_next 集群参数 不建议配置的太小,避免频繁触发自动增长 无共享(Shared-Nothing)模式下设置磁盘文件自动扩容的增长步长。共享存储(Shared-Storage)模式下无意义,修改不会生效。默认为0,单位为MB。 动态生效
datafile_size 集群参数 视应用数据量而定,后续可配置文件自动增长。数据与日志共用磁盘时,配置为磁盘总空间的60%;数据独占磁盘时,配置为磁盘总空间的90% 无共享(Shared-Nothing)模式下设置数据文件大小。共享存储(Shared-Storage)模式下设置本地缓存空间大小。默认为0M。修改时不支持缩小,只支持扩大。 动态生效
log_disk_size 集群参数 日志与数据共用磁盘时,配置为磁盘总空间的30%;日志独占磁盘时,配置为磁盘总空间的90% 用于设置Redo日志磁盘的大小,即本OBServer可以使用的日志盘总空间大小。默认为0,单位为MB。 动态生效
enable_syslog_wf 集群参数 True 用于设置是否把WARN以上上级别的系统日志打印到一个单独的日志文件中。默认为True。 动态生效
max_syslog_file_count 集群参数 80 用于设置在回收日志文件之前可以容纳的日志文件数量。每个日志文件最多可以占用256 MB磁盘空间。配置为0时,不会删除任何归档日志。默认为0。 动态生效
syslog_disk_size 集群参数 0M 用于设置系统日志的磁盘空间上限。当系统日志的总大小将要达到该上限时,最旧的日志文件将会被删除,包括已压缩的日志文件。默认为0M。 动态生效

登录到SYS租户进行配置:

sql 复制代码
ALTER SYSTEM SET datafile_maxsize = '1024G';
ALTER SYSTEM SET datafile_next = '10G';
ALTER SYSTEM SET datafile_size='80G';

ALTER SYSTEM SET log_disk_size='40G';

ALTER SYSTEM SET max_syslog_file_count=20;
ALTER SYSTEM SET syslog_disk_size='50GB';

📖OceanBase V4.2.5 中,max_syslog_file_countsyslog_disk_size的关系如下:

  • max_syslog_file_count=0syslog_disk_size=0:不回收日志,直到磁盘写满。
  • max_syslog_file_count=0syslog_disk_size>0:当日志总大小接近syslog_disk_size时,开始删除最旧的日志文件。
  • max_syslog_file_count>0syslog_disk_size=0:当某种日志文件的数量超过max_syslog_file_count时,开始删除最旧的日志文件
  • max_syslog_file_count>0syslog_disk_size>0:当某种日志文件的数量超过max_syslog_file_count时,或者当日志总大小接近syslog_disk_size时,开始删除最旧的压缩文件。

超时时间推荐配置

OceanBase数据库超时时间通过系统变量进行控制,主要包含以下参数:

系统变量 参数类型 推荐值 参数说明
ob_query_timeout Global/Session级别 OLTP业务可以设置得小一点,OLAP业务可以设置的大一些 用于设置SQL最大执行时间。默认值为10000000,单位为微秒。
ob_trx_timeout Global/Session级别 86400000000 用于设置事务超时时间。默认值为86400000000,单位为微秒。
ob_trx_idle_timeout Global/Session级别 86400000000 用于设置事务空闲超时时间,即事务中两条语句之间的执行间隔超过该值时超时。默认值为86400000000,单位为微秒。
ob_trx_lock_timeout Global/Session级别 OLTP业务可以设置得小一点,OLAP业务可以设置的大一些 用于设置事务的等锁超时时长。单位为微秒。默认值为-1,表示不生效。
wait_timeout Global/Session级别 28800 用于设置服务器关闭非交互连接之前等待活动的秒数。默认为28800秒。
interactive_timeout Global/Session级别 28800 用于设置服务器关闭交互式连接前等待活动的秒数。默认为28800秒。

登录到用户租户进行配置:

sql 复制代码
SET GLOBAL ob_query_timeout = 20000000;     --OLTP参考值
SET GLOBAL ob_query_timeout = 43200000000;  --OLAP参考值

SET GLOBAL ob_trx_timeout =86400000000;
SET GLOBAL ob_trx_idle_timeout =86400000000;

SET GLOBAL ob_trx_lock_timeout = 3000;       --OLTP参考值
SET GLOBAL ob_trx_lock_timeout = 120000000;  --OLAP参考值

SET GLOBAL wait_timeout = 28800;         --默认连续8小时处于非活跃状态即断开连接
SET GLOBAL interactive_timeout = 28800;

单机部署推荐配置

OceanBase数据库单机版推荐进行如下配置,以达到最佳性能:

参数/系统变量 参数类型 推荐值 参数说明 修改后生效方式
syslog_level 集群级配置项 WARN 仅保留需要DBA关注的或者干预的非预期场景的日志 动态生效
enable_syslog_recycle 集群级配置项 1 开启系统日志回收 动态生效
max_syslog_file_count 集群级配置项 80 保留80个日志文件,总共占用20G日志空间。需要按照服务器空间情况进行配置。 动态生效
enable_record_trace_log 集群级配置项 false 用于设置是否记录追踪日志 动态生效
ignore_replay_checksum_error 集群级配置项 true 关闭回放checksum校验,主在开日志的时候也有开销,需额外校验checksum值。 动态生效
_lcl_op_interval 集群级配置项 '0ms' 关闭死锁检测 动态生效
_enable_defensive_check 集群级配置项 false 禁用4377校验 动态生效

登录到SYS租户进行配置:

sql 复制代码
ALTER SYSTEM SET syslog_level = 'WARN';
ALTER SYSTEM SET enable_syslog_recycle = 1;
ALTER SYSTEM SET max_syslog_file_count = 80;
ALTER SYSTEM SET enable_record_trace_log = false;
ALTER SYSTEM SET ignore_replay_checksum_error = true;
ALTER SYSTEM SET _lcl_op_interval = '0ms';
ALTER SYSTEM SET _enable_defensive_check = false;

以上。

相关推荐
o0o_-_3 分钟前
【瞎折腾/mi50 32G/ubuntu】mi50显卡ubuntu运行大模型开坑(三)安装风扇并且控制转速
linux·运维·ubuntu
Huazzi.24 分钟前
Ubuntu 22虚拟机【网络故障】快速解决指南
linux·网络·学习·ubuntu·bash·编程
熙曦Sakura25 分钟前
【Linux网络】HTTP
linux·网络·http
轻颂呀1 小时前
Linux中常见开发工具简单介绍
linux
promise5241 小时前
JVM之jcmd命令详解
java·linux·运维·服务器·jvm·bash·jcmd
XiaoCCCcCCccCcccC2 小时前
Linux网络基础 -- 局域网,广域网,网络协议,网络传输的基本流程,端口号,网络字节序
linux·c语言·网络·c++·网络协议
果子⌂2 小时前
Linux系统入门第十二章 --Shell编程之正则表达式
linux·运维·服务器
随风奔跑的十八岁2 小时前
java 破解aspose.words 18.6 使用
java·linux·word转pdf·aspose-words
海尔辛2 小时前
学习黑客5 分钟读懂Linux Filesystem Interaction Continued
linux·服务器·学习
是垚不是土3 小时前
Kolla-Ansible搭建与扩容OpenStack私有云平台
linux·运维·服务器·云计算·ansible·openstack