描述

该语句用来修改 SESSION 状态。

ALTER SESSION 下面对应了多种功能的语句,目前支持四种:

  • 切换当前 SESSION 连接的数据库

  • 修改当前 SESSION 的隔离级别

  • 设置 SESSION 变量,支持同一个语句设置多个变量

  • 设置 QUERY 或 DML 的并行执行能力

格式

  1. ALTER SESSION SET CURRENT_SCHEMA = current_schema;
  2. ALTER SESSION SET ISOLATION_LEVEL = [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE];
  3. ALTER SESSION SET var1_name = var1_value var2_name = var2_value ...;
  4. ALTER SESSION { ENABLE | DISABLE | FORCE } PARALLEL { DML | QUERY } [ PARALLEL integer ];

参数解释

参数

描述

CURRENT_SCHEMA

指定 SESSION 连接要切换到的数据库名称。

ISOLATION_LEVEL

指定 SESSION 的隔离级别。

var1_name = var1_value var2_name = var2_value …

指定要设置的 SESSION 变量名称和取值。设置多个变量时,变量之间没有逗号分隔。

{ ENABLE | DISABLE | FORCE } PARALLEL

设置 QUERY 或 DML 的并行执行能力:

  • ENABLE:默认情况下 SESSION 上并行度的值根据Table DOP的值进行决定

  • DISABLE:默认情况下 SESSION 上的并行度的值为 1

  • FORCE:指定 QUERY 或 DML 的并行度的值,此时参数 PARALLEL integer 必须指定。

注意

当指定并行度时,优先级关系如下:通过 hint 指定的并行度 > 通过 ALTER SESSION 指定的并行度 > 表级别的并行度

示例

  • 修改 SESSION 的变量值 recyclebin、sql_warnings 和 tx_isolation。
  1. obclient>alter session set recyclebin = 'on' sql_warnings = 'on' tx_isolation = 'read-committed';
  2. Query OK, 0 rows affected (0.01 sec)
  • 设置 SESSION 上 QUERY 和 DML 的并行执行。
  1. alter session force parallel query parallel 3;
  2. select * from t1; # 以并发度为 3 并行执行
  3. alter session force parallel query parallel 1;
  4. select * from t1; # 串行执行
  5. alter session force parallel dml parallel 3;
  6. insert into t3 select * from t1; # 开启 PDML 路径,以并发度为 3 并行执行
  7. alter session force parallel dml parallel 1;
  8. insert into t3 select * from t1; # 串行执行