서버 구성 파라미터의 값을 설정합니다. SET 명령을 사용하여 현재 세션 또는 트랜잭션에 한해 지속 시간 설정을 재정의합니다.
reset 명령을 사용하여 파라미터를 기본값으로 반환합니다.
여러 가지 방법으로 서버 구성 파라미터를 변경할 수 있습니다. 자세한 내용은 서버 구성 수정 섹션을 참조하세요.
구문
SET { [ SESSION | LOCAL ] { SEED | parameter_name } { TO | = } { value | 'value' | DEFAULT } | SEED TO value }
다음 문은 세션 컨텍스트 변수의 값을 설정합니다.
SET { [ SESSION | LOCAL ] variable_name { TO | = } { value | 'value' }
파라미터
- 세션
-
현재 세션에 대해 설정이 유효함을 지정합니다. 기본값.
- variable_name
-
세션에 설정된 컨텍스트 변수의 이름을 지정합니다.
명명 규칙은 점으로 구분된 두 부분으로 이루어진 이름입니다(예: identifier.identifier). 점 구분 기호는 하나만 사용할 수 있습니다. Amazon Redshift의 표준 식별자 규칙을 따르는 identifier를 사용합니다. 자세한 내용은 이름 및 식별자 섹션을 참조하세요. 구분된 식별자는 허용되지 않습니다.
- LOCAL
-
현재 트랜잭션에 대해 설정이 유효함을 지정합니다.
- SEED TO value
-
난수 생성을 위한 RANDOM 함수에서 사용할 내부 시드를 설정합니다.
SET SEED는 0과 1 사이의 숫자 값을 취하고 RANDOM 함수 함수과 함께 사용하기 위해 이 숫자에 (231-1)을 곱합니다. 여러 개의 RANDOM 호출을 하기 전에 SET SEED를 사용하면 RANDOM이 예측 가능한 순서대로 숫자를 생성합니다.
- parameter_name
-
설정할 파라미터의 이름. 파라미터에 대한 자세한 내용은 서버 구성 수정 섹션을 참조하세요.
- USD 상당
-
새 재료 파라미터 값입니다. 값을 특정 문자열로 설정하려면 작은따옴표를 사용하세요. SET SEED를 사용하는 경우 이 파라미터는 SEED 값을 포함합니다.
- DEFAULT
-
이 파라미터를 기본값으로 설정합니다.
예시
현재 세션을 위한 파라미터 변경
다음 예에서는 날짜 스타일을 설정합니다.
set datestyle to 'SQL,DMY';
워크로드 관리를 위한 쿼리 그룹 설정
쿼리 그룹이 클러스터의 WLM 구성의 일부로서 대기열 정의에 나열되는 경우 QUERY_GROUP 파라미터를 나열된 쿼리 그룹 이름으로 설정할 수 있습니다. 후속 쿼리는 관련 쿼리 대기열에 할당됩니다. QUERY_GROUP 설정은 세션 지속 시간 동안 또는 RESET QUERY_GROUP 명령이 발생할 때까지 계속 적용됩니다.
이 예에서는 쿼리 그룹 'priority'에 속한 쿼리 2개를 실행한 후 쿼리 그룹을 재설정합니다.
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;
자세한 내용은 워크로드 관리 섹션을 참조하세요.
세션의 기본 ID 네임스페이스 변경
데이터베이스 사용자가 default_identity_namespace
를 설정할 수 있습니다. 이 샘플은 SET SESSION
을 사용하여 현재 세션 기간 동안 설정을 재정의하는 방법과 새 ID 제공업체 값을 보여줍니다. 이는 Redshift 및 IAM Identity Center와 함께 ID 제공업체를 사용할 때 가장 일반적으로 사용됩니다. Redshift에서 ID 제공업체를 사용하는 방법에 대한 자세한 내용은 Redshift를 IAM Identity Center와 연결하여 사용자에게 Single Sign-On 경험을 제공합니다를 참조하세요.
SET SESSION default_identity_namespace = 'MYCO';
SHOW default_identity_namespace;
이 명령을 실행한 후 다음과 같이 GRANT 문 또는 CREATE 문을 실행할 수 있습니다.
GRANT SELECT ON TABLE mytable TO alice;
GRANT UPDATE ON TABLE mytable TO salesrole;
CREATE USER bob password 'md50c983d1a624280812631c5389e60d48c';
이 경우 기본 ID 네임스페이스를 설정하는 효과는 각 ID 앞에 네임스페이스를 붙이는 것과 같습니다. 이 예제에서는 alice
가 MYCO:alice
로 대체됩니다. IAM Identity Center를 사용한 Redshift 구성과 관련된 설정에 대한 자세한 내용은 ALTER SYSTEM 및 ALTER IDENTITY PROVIDER 섹션을 참조하세요.
쿼리의 그룹 레이블 설정
QUERY_GROUP 파라미터는 SET 명령 뒤에 나오는 동일한 세션에서 실행되는 하나 이상의 쿼리에 대한 레이블을 정의합니다. 그러면 쿼리가 실행될 때 이 레이블이 로그에 기록되어 STL_QUERY 및 STV_INFLIGHT 시스템 테이블과 SVL_QLOG 뷰에서 반환되는 결과를 제한하는 데 사용될 수 있습니다.
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를 기준으로 쿼리를 식별하고 추적할 필요가 없고, 레이블로 추적할 수 있습니다.
난수 생성을 위한 시드 값 설정
다음 예에서는 SET와 함께 SEED 옵션을 사용하여 RANDOM 함수가 예측 가능한 순서로 숫자를 생성하도록 합니다.
먼저 SEED 값을 설정하지 않고 RANDOM 정수 3개를 반환합니다.
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
로 설정한 후 RANDOM 숫자를 3개 더 반환합니다.
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이 이전 세 번의 호출과 동일한 결과를 반환하는지 확인합니다.
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)
다음 예에서는 사용자 지정 컨텍스트 변수를 설정합니다.
SET app_context.user_id TO 123;
SET app_context.user_id TO 'sample_variable_value';