OceanBase 源码学习: 5 配置与系统状态管理
OceanBase 源码学习: 5 配置与系统状态管理
本文涵盖 OceanBase 的配置与系统状态管理的基础架构,包括分层参数配置系统、会话状态管理和内部模式(schema)管理。该系统提供运行时配置功能,维护 SQL 会话状态,并通过虚拟表来提供系统信息的访问。
参数配置架构
OceanBase实现了分层配置体系,具有集群级和租户级的参数,可以在运行时动态管理。
配置层次结构
参数定义系统
参数以结构化格式定义,指定其作用范围、类型和验证规则:
OB_CLUSTER_PARAMETER | data_dirmysql_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 连接状态、系统变量和事务上下文。
会话架构
系统变量管理
OceanBase 在保持兼容 MySQL 系统变量的同时,也加入了自己的扩展:
会话状态同步
对于分布式执行,会话状态必须跨节点进行同步:
SESSION_SYNC_SYS_VAR | ||
SESSION_SYNC_USER_VAR | ||
SESSION_SYNC_TXN_STATIC_INFO | ||
SESSION_SYNC_APPLICATION_INFO |
内部表模式(schema)管理
OceanBase 通过虚拟表公开系统配置和运行时状态,这些虚拟表提供对内部信息的 SQL 访问。
系统参数虚拟表
参数 Categories 和 Sections
虚拟表按功能和 Sections 组织参数:
SSTABLE | data_dirdatafile_size | |
OBSERVER | rpc_portmysql_port | |
TENANT | memstore_limit_percentage | |
ROOT_SERVICE | enable_major_freeze | |
DAILY_MERGE | major_freeze_duty_time |
配置访问模式
配置和系统管理基础设施为 OceanBase 的 runtime 行为提供了基础,确保整个分布式系统的一致参数管理,同时保持与 MySQL 的配置兼容性。
更多详细内容请关注我的github: https://github.com/digoal/blog