系统变量和系统配置项,别再混为一谈

用 OceanBase 的过程中,会碰到两套参数:系统配置项和系统变量。名字相近,作用范围和作用方式差别不小,容易混淆。这篇简单梳理一下。

先说生效范围。

系统配置项的作用范围更大,可以分到集群、Zone、机器和租户这几个级别。也就是说,它可以影响整个集群或者某一台机器,属于更底层的设置。

系统变量的作用范围就小一些,只在租户内,分为 Global 和 Session 两个级别。Global 影响整个租户,Session 只影响当前会话。

再看生效方式。

系统配置项有两种生效方式:一种是动态生效,修改后立即起作用;另一种是重启生效,修改后要重启相关进程才生效。所以在改配置项之前,最好先确认它属于哪一种,避免出现 “改了但没生效” 的困惑。

系统变量的生效方式跟它没关系:Session 级别的变量,修改后只对当前会话有效,对其他会话无效;Global 级别的变量,修改后对当前会话无效,需要重新登录建立新的会话才会生效。

什么时候用哪个,可以这样判断:

如果调整的是集群层面、机器层面的参数,比如资源相关的配置,用系统配置项。如果只是调整租户内的行为,比如某个会话的查询设置,用系统变量。

一个常见误解: 以为系统配置项和系统变量是同一套东西,改了其中一个另一个也会跟着变。实际上它们是两套独立的体系,作用范围、生效机制都不同,需要分别理解和使用。

一句话总结:配置项管的是 “大范围、底层”,变量管的是 “租户内、会话级”,搞清楚各自的作用范围和生效方式,调参就不会走弯路。

3 个赞

格物致知

1 个赞

不忘初心

1 个赞

克己复礼

1 个赞