
# 查看并修改Doris变量
#### 操作场景
MRS 3.6.0-LTS.1及之后版本，在Doris中变量直接控制了查询性能、资源分配及连接行为等。Doris中变量的修改分为会话级与全局级。
#### 查看及修改Doris变量
在MySQL客户端连接Doris后（具体操作请参见[快速使用Doris](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_249185.html)），即可执行变量相关操作：
- 查看Doris变量
  - 查看所有变量：
    ```
    SHOW VARIABLES;
    ```
    
  
  - 精确/模糊过滤：
    ```
    SHOW VARIABLES LIKE '%variable_name%';
    ```
    例如，查看变量"exec_mem_limit"：
    ```
    SHOW VARIABLES LIKE '%exec_mem_limit%';
    ```
    例如，查看到的变量值为：
    ```
    +----------------+--------------+---------------+---------+
    | Variable_name  | Value        | Default_Value | Changed |
    +----------------+--------------+---------------+---------+
    | exec_mem_limit | 137438953472 | 2147483648    | 1       |
    +----------------+--------------+---------------+---------+
    1 row in set (0.01 sec)
    ```
    
   
- 修改变量 Doris的变量分为Session（会话） 和 Global（全局） 两个作用域。
  - 修改会话级变量（SET）
    - 语法
      ```
      SET variable_name = value;
      ```
      
    
    - 生效范围 修改会话级变量仅对当前连接生效。
      
    
    - 使用场景 针对特定SQL进行性能调优（例如临时加大内存）、开启Profile分析日志。
      
    
    
    例如，将变量"exec_mem_limit"的值设置为128GB：
    1. 查看"exec_mem_limit"变量：
       ```
       SHOW VARIABLES LIKE '%exec_mem_limit%';
       ```
       例如，查看到的变量值为：
       ```
       +----------------+------------+---------------+---------+
       | Variable_name  | Value      | Default_Value | Changed |
       +----------------+------------+---------------+---------+
       | exec_mem_limit | 2147483648 | 2147483648    | 0       |
       +----------------+------------+---------------+---------+
       1 row in set (0.02 sec)
       ```
       
    
    2. 设置会话级变量"exec_mem_limit"值为128GB：
       ```
       SET exec_mem_limit = 137438953472;
       ```
       
    
    3. 查看修改后的"exec_mem_limit"变量值：
       ```
       SHOW VARIABLES LIKE '%exec_mem_limit%';
       ```
       查看到的变量值为：
       ```
       +----------------+--------------+---------------+---------+
       | Variable_name  | Value        | Default_Value | Changed |
       +----------------+--------------+---------------+---------+
       | exec_mem_limit | 137438953472 | 2147483648    | 1       |
       +----------------+--------------+---------------+---------+
       1 row in set (0.00 sec)
       ```
       
     
  
  - 修改全局级变量（SET GLOBAL）
    - 语法
      ```
      SET GLOBAL var_name = value;
      ```
      
    
    - 生效范围 修改全局级变量对当前会话及所有后续新连接生效。
      
    
    - 使用场景 集群初始化、统一修改时区、全局开启新优化器等。
      
    
    - 持久化说明 **SET GLOBAL**修改的值保存在内存中，重启FE后会失效。
      
    
    
    例如，将变量"exec_mem_limit"的设置为128GB：
    1. 查看"exec_mem_limit"变量：
       ```
       SHOW VARIABLES LIKE '%exec_mem_limit%';
       ```
       例如，查看到的变量值为：
       ```
       +----------------+------------+---------------+---------+
       | Variable_name  | Value      | Default_Value | Changed |
       +----------------+------------+---------------+---------+
       | exec_mem_limit | 2147483648 | 2147483648    | 0       |
       +----------------+------------+---------------+---------+
       1 row in set (0.01 sec)
       ```
       
    
    2. 设置全局级变量"exec_mem_limit"值为128GB：
       ```
       SET global exec_mem_limit = 137438953472;
       ```
       
    
    3. 查看修改后的"exec_mem_limit"变量值：
       ```
       SHOW VARIABLES LIKE '%exec_mem_limit%';
       ```
       查看到的变量值为：
       ```
       +----------------+--------------+---------------+---------+
       | Variable_name  | Value        | Default_Value | Changed |
       +----------------+--------------+---------------+---------+
       | exec_mem_limit | 137438953472 | 2147483648    | 1       |
       +----------------+--------------+---------------+---------+
       1 row in set (0.00 sec)
       ```
       
     
   
 
#### Doris常见变量介绍
表1Doris常见变量 
| 变量名称                          | 变量说明                                               | 默认值       |
|:---|:---|:---|
| exec_mem_limit                | 单个查询在单个BE上的内存上限，遇到"Memory limit exceeded"时需调大该值。   | 2G        |
| query_timeout                 | 数据查询最大执行时间，对于导出大批量数据的长任务需调大该值。                     | 900 (s)   |
| enable_spill                  | 当内存不足时允许中间数据落盘，防止大查询导致 OOM。                        | false     |
| wait_timeout                  | 会话空闲超时时间，防止空闲连接占用资源。                               | 28800 (s) |
| enable_insert_strict          | 是否开启严格模式。如果希望忽略少量数据格式错误使得数据导入执行成功，可设置该参数值为"false"。 | true      |
| enable_profile                | 需排查慢SQL详细耗时时，可设置该参数值为"true"，即可在WebUI页面查看。          | false     |
| time_zone                     | 用于设置时区，影响时间函数的计算，建议进行全局（global）设置。                 | xxx       |
| auto_broadcast_join_threshold | 广播连接的内存阈值比例。                                       | 0.8       |
   
