PostgreSQL码农集散地

OceanBase 源码学习: 5 配置与系统状态管理

OceanBase 源码学习: 5 配置与系统状态管理

本文涵盖 OceanBase 的配置与系统状态管理的基础架构,包括分层参数配置系统、会话状态管理和内部模式(schema)管理。该系统提供运行时配置功能,维护 SQL 会话状态,并通过虚拟表来提供系统信息的访问。

参数配置架构

OceanBase实现了分层配置体系,具有集群级和租户级的参数,可以在运行时动态管理。

配置层次结构



Image

参数定义系统

参数以结构化格式定义,指定其作用范围、类型和验证规则:

参数类型
作用范围
例子
OB_CLUSTER_PARAMETER
集群层面
data_dir
,mysql_port
OB_TENANT_PARAMETER
每租户
max_stale_time_for_weak_consistency

关键参数类别包括:

  • 存储参数:data_dir,datafile_size,redundancy_level
  • 网络参数:rpc_port,net_thread_count,mysql_port
  • 内存参数:memory_limit,memstore_limit_percentage
  • 安全参数:ssl_cipher,enable_sql_audit

会话管理系统

会话管理系统在客户端交互过程中维护 SQL 连接状态、系统变量和事务上下文。

会话架构



Image

系统变量管理

OceanBase 在保持兼容 MySQL 系统变量的同时,也加入了自己的扩展:



Image

会话状态同步

对于分布式执行,会话状态必须跨节点进行同步:

同步类型
内容
用途
SESSION_SYNC_SYS_VAR
系统变量
查询执行上下文
SESSION_SYNC_USER_VAR
用户变量
变量状态传播
SESSION_SYNC_TXN_STATIC_INFO
事务基本信息
分布式事务
SESSION_SYNC_APPLICATION_INFO
应用程序上下文
会话标识

内部表模式(schema)管理

OceanBase 通过虚拟表公开系统配置和运行时状态,这些虚拟表提供对内部信息的 SQL 访问。

系统参数虚拟表



Image

参数 Categories 和 Sections

虚拟表按功能和 Sections 组织参数:

Section
说明
示例参数
SSTABLE
存储配置
data_dir
,datafile_size
OBSERVER
服务器行为
rpc_port
,mysql_port
TENANT
特定租户
memstore_limit_percentage
ROOT_SERVICE
集群管理
enable_major_freeze
DAILY_MERGE
后台操作
major_freeze_duty_time

配置访问模式



Image

配置和系统管理基础设施为 OceanBase 的 runtime 行为提供了基础,确保整个分布式系统的一致参数管理,同时保持与 MySQL 的配置兼容性。

更多详细内容请关注我的github: https://github.com/digoal/blog