租户的变量分为 Global 级别和 Session 级别。Session 级别的变量继承自 Global 级别的变量。同时,Session 建立后可以设定 Session 级别的变量。Session 级别的变量在 Session 中覆盖 Global 级别的变量。
查询变量
下述展示查询 Session/Global 级别变量语句的语法:
SHOW [GLOBAL] VARIABLES [SHOW_VARIABLES_OPTS]
SHOW_VARIABLES_OPTS:
[LIKE 'pattern' | WHERE expr]
示例:
obclient> SHOW VARIABLES LIKE 'ob_query_timeout';
obclient> SHOW GLOBAL VARIABLES WHERE variable_name LIKE 'ob_query_timeout';
sys 租户可以通过内部表 __all_virtual_sys_variable
查询其他所有普通租户的 Global 变量。
如果连接 sys 租户后再切换到普通租户,此时查询的 Session 级别变量仍然是 sys 租户的 Session 级别的变量。查询的 Global 级别的变量是切换后普通租户的 Global 级别变量。
设置变量
设置 Session 级别的变量仅对当前 Session 有效,对其他 Session无效。设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。
下述展示设置 Session/Global 级别变量语句的语法:
SET [GLOBAL] VARIABLE_NAME = 'VALUE'
示例:
obclient> SET ob_query_timeout = 20000000;
obclient> SET GLOBAL ob_query_timeout = 20000000;
变量中类型为 INT
, 并且在 SHOW VARIABLE
命令中显示 ON/OFF
或者 True/False
的变量,可以通过如下任意方法设置值:
SET @@foreign_key_checks = ON
SET @@foreign_key_checks = 1
SET @@foreign_key
以上三种方式的 Session 级别变量的设置是等效的。
更多变量参考信息,请参见 系统变量参考(MySQL 模式) 和 系统变量参考(Oracle 模式)。