南大通用GBase 8a的session级参数变量临时修改方法

GBase 8a的一些参数是支持session级设置的,只影响当前连接。但因为连接池的存在,为了避免参数对后续SQL的影响,建议先保存当前值后再修改,用完了再恢复回保存的值。

保存当前的值

用@@参数值来读取参数的当前值,然后用set等保存到备份变量里。

gbase> select @@estimate_func_max_len;
+-------------------------+
| @@estimate_func_max_len |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> set @bak=@@estimate_func_max_len;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

修改值

gbase> set estimate_func_max_len=32700;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> show variables like 'esti%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| estimate_func_max_len | 32700 |
+-----------------------+-------+
1 row in set (Elapsed: 00:00:00.00)

恢复参数值

gbase> set  estimate_func_max_len=@bak;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> show variables like 'esti%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| estimate_func_max_len | 0     |
+-----------------------+-------+
1 row in set (Elapsed: 00:00:00.00)