暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note239:OceanBase社区版中,如何理解租户系统变量?

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/


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;
查询方式可以使用 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 创建成功以后才生效。

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论