租户系统变量
OceanBase 数据库的租户系统变量分为全局变量和 Session 变量。通过系统变量的设置可以使 OceanBase 数据库的行为符合业务的要求。
- 全局变量:表示 Global 级别的修改,数据库同一租户内的不同用户共享全局变量。全局变量的修改不会随会话的退出而失效。此外,全局变量修改后,对当前已打开的 Session 不生效,需要重新建立 Session 才能生效。
- 会话变量:表示 Session 级别的修改。当客户端连接到数据库后,数据库会复制全局变量来自动生成 Session 变量。Session 变量的修改仅对当前 Session 生效。
系统变量与系统配置项的对比:
| 对比项 | 系统配置项 | 系统变量 |
|---|---|---|
| 生效范围 | 分为集群、Zone、机器和租户。 | 分为租户的 Global 或 Session 级别。 |
| 生效方式 | • 动态生效: edit_level 为 dynamic_effective • 重启生效: edit_level 为 static_effective |
• 设置 Session 级别的变量仅对当前 Session 有效, 对其他 Session 无效。 • 设置 Global 级别的变量对当前 Session 无效, 需要重新登录建立新的 Session 才会生效。 |
| 修改方式 | • 支持通过 SQL 语句修改,示例: Alter SYSTEM SET schema_history_expire_time=‘1h’; • 支持通过启动参数修改,示例: cd /home/admin/oceanbase && ./bin/observer -o “schema_history_expire_time=‘1h’”; |
仅支持通过 SQL 语句修改,示例如下: • MySQL 模式 SET ob_query_timeout = 20000000; SET GLOBAL ob_query_timeout = 20000000; • Oracle 模式 ALTER SESSION SET ob_query_timeout = 20000000; ALTER SYSTEM SET ob_query_timeout = 20000000; 或者 SET ob_query_timeout = 20000000; SET GLOBAL ob_query_timeout = 20000000; |
| 查询方式 | 可以使用 SHOW PARAMETERS 语句查询。 示例:SHOW PARAMETERS LIKE ‘schema_history_expire_time’; |
可以使用 SHOW [GLOBAL] VARIABLES 语句查询。 示例如下: • MySQL 模式 SHOW VARIABLES LIKE ‘ob_query_timeout’; SHOW GLOBAL VARIABLES LIKE ‘ob_query_timeout’; • Oracle 模式 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’; |
| 持久化 | 持久化到内部表与配置文件,可以 在 /home/admin/oceanbase/etc/ observer.config.bin 与 /home/admin/oceanbase/etc/observer.config.bin.history 文件中查询该配置项。 |
仅 Global 级别的变量会持久化,Session 级别的变量不会进行持久化。 |
| 生命周期 | 长,从进程启动到退出。 | 短,需要租户的 Schema 创建成功以后才生效。 |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




