变量
本文档主要介绍当前支持的变量(variables)。
Doris 中的变量参考 MySQL 中的变量设置。但部分变量仅用于兼容一些 MySQL 客户端协议,并不产生其在 MySQL 数据库中的实际意义。
变量设置与查看
查看
可以通过 SHOW VARIABLES [LIKE 'xxx'];
查看所有或指定的变量。如:
SHOW VARIABLES;
SHOW VARIABLES LIKE '%time_zone%';
设置
部分变量可以设置全局生效或仅当前会话生效。
注意,在 1.1 版本之前,设置全局生效后,后续新的会话连接中会沿用设置值,但当前会话中的值不变。 而在 1.1 版本(含)之后,设置全局生效后,后续新的会话连接中会沿用设置值,当前会话中的值也会改变。
仅当前会话生效,通过 SET var_name=xxx;
语句来设置。如:
SET exec_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";
全局生效,通过 SET GLOBAL var_name=xxx;
设置。如:
SET GLOBAL exec_mem_limit = 137438953472
注1:只有 ADMIN 用户可以设置变量的全局生效。
既支持当前会话生效又支持全局生效的变量包括:
time_zone
wait_timeout
sql_mode
enable_profile
query_timeout
insert_timeout
exec_mem_limit
batch_size
allow_partition_column_nullable
insert_visible_timeout_ms
enable_fold_constant_by_be
只支持全局生效的变量包括:
default_rowset_type
default_password_lifetime
password_history
validate_password_policy
同时,变量设置也支持常量表达式。如:
SET exec_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');
在查询语句中设置变量
在一些场景中,我们可能需要对某些查询有针对性的设置变量。 通过使用SET_VAR提示可以在查询中设置会话变量(在单个语句内生效)。例子:
SELECT /*+ SET_VAR(exec_mem_limit = 8589934592) */ name FROM people ORDER BY name;
SELECT /*+ SET_VAR(query_timeout = 1, enable_partition_cache=true) */ sleep(3);
注意注释必须以/*+ 开头,并且只能跟随在SELECT之后。
支持的变量
注:
以下内容由
docs/generate-config-and-variable-doc.sh
自动生成。如需修改,请修改
fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
和fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java
中的描述信息。
<--DOC_PLACEHOLDER-->