跳到主要内容

变量

本文档主要介绍当前支持的变量(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.javafe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java 中的描述信息。

<--DOC_PLACEHOLDER-->