Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

SET

设置服务器配置参数的值。

使用 RESET 命令将参数还原为其默认值。有关参数的更多信息,请参阅 修改服务器配置

语法

Copy
SET { [ SESSION | LOCAL ] { SEED | parameter_name } { TO | = } { value | 'value' | DEFAULT } | SEED TO value }

参数

SESSION

指定设置对当前会话有效。默认值。

LOCAL

指定设置对当前事务有效。

SEED TO value

设置由 RANDOM 函数用于生成随机数的内部种子。

SET SEED 采用介于 0 和 1 之间的数值,并将此数乘以 (231-1) 以用于 RANDOM 函数 函数。如果在多次调用 RANDOM 之前使用 SET SEED,则 RANDOM 会按可预测的顺序生成数字。

parameter_name

要设置的参数的名称。有关参数的信息,请参阅修改服务器配置

value

新的参数值。使用单引号将值设置为特定字符串。如果使用 SET SEED,则此参数包含 SEED 值。

DEFAULT

将参数设置为默认值。

示例

更改当前会话的参数

以下示例设置日期样式:

Copy
set datestyle to 'SQL,DMY';

设置工作负载管理的查询组

如果查询组在队列定义中作为群集的 WLM 配置的一部分列出,则可将 QUERY_GROUP 参数设置为列出的查询组名称。后续查询将分配给关联的查询队列。QUERY_GROUP 设置在会话的持续时间内或遇到 RESET QUERY_GROUP 命令之前保持有效。

此示例将两个查询作为查询组“priority”的一部分运行,然后重置查询组。

Copy
set query_group to 'priority'; select tbl, count(*)from stv_blocklist; select query, elapsed, substring from svl_qlog order by query desc limit 5; reset query_group;

请参阅 实施工作负载管理

设置查询组的标签

QUERY_GROUP 参数为在同一个会话中 SET 命令之后执行的一个或多个查询定义标签。反过来,在执行查询并可将其用于约束从 STL_QUERY 和 STV_INFLIGHT 系统表以及 SVL_QLOG 视图返回的结果时,将记录此标签。

Copy
show query_group; query_group ------------- unset (1 row) set query_group to '6 p.m.'; show query_group; query_group ------------- 6 p.m. (1 row) select * from sales where salesid=500; salesid | listid | sellerid | buyerid | eventid | dateid | ... ---------+--------+----------+---------+---------+--------+----- 500 | 504 | 3858 | 2123 | 5871 | 2052 | ... (1 row) reset query_group; select query, trim(label) querygroup, pid, trim(querytxt) sql from stl_query where label ='6 p.m.'; query | querygroup | pid | sql -------+------------+-------+---------------------------------------- 57 | 6 p.m. | 30711 | select * from sales where salesid=500; (1 row)

查询组标签是一个非常有用的机制,可用于隔离作为脚本一部分运行的单个查询或查询组。您不需要通过查询 ID 来标识和跟踪查询;而可以通过查询的标签来跟踪查询。

设置用于生成随机数的种子值

以下示例将 SEED 选项与 SET 结合使用,使 RANDOM 函数按可预测的顺序生成数字。

首先,返回三个 RANDOM 整数,而不先设置 SEED 值:

Copy
select cast (random() * 100 as int); int4 ------ 6 (1 row) select cast (random() * 100 as int); int4 ------ 68 (1 row) select cast (random() * 100 as int); int4 ------ 56 (1 row)

现在,将 SEED 值设置为 .25,并返回 3 个以上的 RANDOM 数字:

Copy
set seed to .25; select cast (random() * 100 as int); int4 ------ 21 (1 row) select cast (random() * 100 as int); int4 ------ 79 (1 row) select cast (random() * 100 as int); int4 ------ 12 (1 row)

最后,将 SEED 值重置为 .25,并验证 RANDOM 是否返回与前三个调用相同的结果:

Copy
set seed to .25; select cast (random() * 100 as int); int4 ------ 21 (1 row) select cast (random() * 100 as int); int4 ------ 79 (1 row) select cast (random() * 100 as int); int4 ------ 12 (1 row)

本页内容: