SET - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SET

設定伺服器組態參數的值。使用 SET 命令,僅覆寫目前工作階段持續時間的設定。

使用 RESET 命令將參數恢復為其預設值。

您可以採用數種方式來變更伺服器組態參數。如需詳細資訊,請參閱 修改伺服器組態

語法

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

下面的語句設置會話上下文變量的值。

SET { [ SESSION | LOCAL ] variable_name { TO | = } { value | 'value' }

參數

SESSION

指出目前工作階段的設定有效。預設值.

變數名稱

指定為工作階段設定的上下文變數的名稱。

例如,命名慣例是由點分隔的兩部分名稱識別碼. 識別碼。只允許使用一個點分隔符號。使用標識符遵循 Amazon Redshift 的標準識別符規則。如需詳細資訊,請參閱名稱與識別符。不允許分隔識別碼。

LOCAL

指出目前交易的設定有效。

SEED TO value

設定 RANDOM 函數產生亂數時要使用的內部種子。

SET SEED 會採用介於 0 和 1 之間的數,並將此數字乘以 (231-1) 以搭配 RANDOM 函數 函數使用。若您在進行多次 RANDOM 呼叫之前使用 SET SEED,RANDOM 就會依可預測的順序產生數字。

parameter_name

要設定的參數名稱。如需參數的詳細資訊,請參閱 修改伺服器組態

新參數值。使用單引號將值設定為特定字串。若使用 SET SEED,此參數會包含 SEED 值。

DEFAULT

將參數設定為預設值。

範例

變更目前工作階段的參數

下列範例會設定 datestyle:

set datestyle to 'SQL,DMY';

設定查詢群組以進行工作負載管理

若查詢群組在佇列定義中列為叢集 WLM 組態的一部分,您就可以對列出的查詢群組名稱設定 QUERY_GROUP 參數。後續查詢會指派至相關聯的查詢佇列。QUERY_GROUP 設定在工作階段期間仍然有效,或直到遇到 RESET QUERY_GROUP 命令為止。

此範例會在查詢群組 'priority' 中執行兩個查詢,然後重設查詢群組。

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_ACKET 系統資料表以及 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 識別和追蹤查詢;可依其標籤進行追蹤。

設定產生亂數的 Seed 值

以下範例會使用 SEED 選項搭配 SET,讓 RANDOM 函數依可預測的順序產生數字。

首先傳回三個 RANDOM 整數,但不先設定 SEED 值:

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 數字:

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';