サーバー設定パラメータの値を設定します。SET コマンドを使用して、現在のセッションまたはトランザクションのみの期間の設定をオーバーライドします。
RESET コマンドを使って、パラメータをデフォルト値に戻します。
サーバー構成パラメータは、いくつかの方法で変更できます。詳細については、「サーバー設定の変更」を参照してください。
構文
SET { [ SESSION | LOCAL ] { SEED | parameter_name } { TO | = } { value | 'value' | DEFAULT } | SEED TO value }
次のステートメントは、セッションコンテキスト変数の値を設定します。
SET { [ SESSION | LOCAL ] variable_name { TO | = } { value | 'value' }
パラメータ
- SESSION
-
現在のセッションに対して、設定が有効であることを指定します。デフォルト値
- variable_name
-
セッションに設定されたコンテキスト変数の名前を指定します。
命名規則は、ドットで区切られた 2 つの部分で構成される名前です (例: identifier.identifier)。使用できるドット区切り文字は 1 つだけです。Amazon Redshift の標準識別子ルールに従った識別子を使用します。詳細については、「名前と識別子」を参照してください。区切り文字は許可されていません。
- LOCAL
-
設定が現在の取引で有効なことを指定します。
- SEED TO value
-
乱数生成用に RANDOM 関数が使用する内部シードを設定します。
SET SEED は、0 から 1 までの数値を取り、この数値に (231-1) を掛けて、RANDOM 関数関数で使用します。複数の RANDOM コールの前に SET SEED を使用すると、RANDOM は予想可能な順番で番号を生成します。
- parameter_name
-
設定するパラメータの名前。パラメータの詳細については、「サーバー設定の変更」を参照してください。
- value
-
新しいパラメータ値。一重引用符を使って、指定文字列に値を設定します。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 アイデンティティセンターで ID プロバイダーを使用している場合に最もよく使用されます。Redshift で ID プロバイダーを使用する方法の詳細については、「Redshift を IAM アイデンティティセンターに接続してユーザーにシングルサインオンエクスペリエンスを提供する」を参照してください。
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 アイデンティティセンターでの Redshift 構成に関連する設定の詳細については、「ALTER SYSTEM」および「他の ID プロバイダー」を参照してください。
クエリのグループのラベルの設定
QUERY_GROUP パラメータは、SET コマンド実行後の同じセッションで実行される 1 つまたは複数のクエリのためのラベルを定義します。また、実行されたクエリが 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 値を最初に設定せずに、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
に設定して、さらに 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 が前の 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)
次の例では、カスタマイズされたコンテキスト変数を設定します。
SET app_context.user_id TO 123;
SET app_context.user_id TO 'sample_variable_value';