{RedshiftDB}手動ワークロード管理 (WLM) キューの設定

デフォルトは自動WLM


-- 1. パラメータグループ作成
aws redshift create-cluster-parameter-group \
--parameter-group-name pg01 \
--parameter-group-family redshift-1.0 \
--description pg01

aws redshift describe-cluster-parameter-groups

vim a.json
[
{
"ParameterName": "wlm_json_configuration",
"ParameterValue": "[{\"user_group\":,\"query_group\":[\"test\"],\"name\":\"Queue1\",\"memory_percent_to_use\":30,\"query_concurrency\":2},{\"user_group\":[\"admin\"],\"query_group\":,\"name\":\"Queue2\",\"memory_percent_to_use\":30,\"query_concurrency\":2},{\"user_group\":,\"query_group\":,\"name\":\"Defaultqueue\",\"memory_percent_to_use\":30,\"query_concurrency\":2},{\"auto_wlm\":false},{\"short_query_queue\":true}]"
}
]

aws redshift modify-cluster-parameter-group \
--parameter-group-name pg01 \
--parameters file://a.json

 


-- 2. クラスター作成
aws redshift create-cluster \
--db-name test \
--cluster-identifier redshift01 \
--cluster-type single-node \
--node-type dc2.large \
--master-username test \
--master-user-password 'password' \
--no-allow-version-upgrade \
--no-publicly-accessible \
--automated-snapshot-retention-period 1 \
--cluster-parameter-group-name pg01

aws redshift describe-clusters
aws redshift describe-clusters --cluster-identifier redshift01

 

-- 3. クエリグループキューを使ってクエリを実行する

psql -h redshift01.xxxxxxxxxxxx.ap-northeast-1.redshift.amazonaws.com -p 5439 -d test -U test


set query_group to test;

select query, (service_class-5) as queue, slot_count, trim(wlm_start_time) as start_time, trim(state) as state
from stv_wlm_query_state;

select (config.service_class-5) as queue
, trim (class.condition) as description
, config.num_query_tasks as slots
, state.num_executed_queries executed
from
STV_WLM_CLASSIFICATION_CONFIG class,
STV_WLM_SERVICE_CLASS_CONFIG config,
STV_WLM_SERVICE_CLASS_STATE state
where
class.action_service_class = config.service_class
and class.action_service_class = state.service_class
and config.service_class > 4
order by config.service_class;


reset query_group;

-- 4. ユーザーグループキューを使ってクエリを実行する
create user adminuser createuser password 'password';
create group admin;
alter group admin add user adminuser;


set session authorization 'adminuser';

select query, (service_class-5) as queue, slot_count, trim(wlm_start_time) as start_time, trim(state) as state
from stv_wlm_query_state;

select (config.service_class-5) as queue
, trim (class.condition) as description
, config.num_query_tasks as slots
, state.num_executed_queries executed
from
STV_WLM_CLASSIFICATION_CONFIG class,
STV_WLM_SERVICE_CLASS_CONFIG config,
STV_WLM_SERVICE_CLASS_STATE state
where
class.action_service_class = config.service_class
and class.action_service_class = state.service_class
and config.service_class > 4
order by config.service_class;


set session authorization 'test';


-- 5. wlm_query_slot_count を使用して同時実行レベルを一時的に変更

show wlm_query_slot_count;
set wlm_query_slot_count to 2;

select query, (service_class-5) as queue, slot_count, trim(wlm_start_time) as start_time, trim(state) as state
from stv_wlm_query_state;

select (config.service_class-5) as queue
, trim (class.condition) as description
, config.num_query_tasks as slots
, state.num_executed_queries executed
from
STV_WLM_CLASSIFICATION_CONFIG class,
STV_WLM_SERVICE_CLASS_CONFIG config,
STV_WLM_SERVICE_CLASS_STATE state
where
class.action_service_class = config.service_class
and class.action_service_class = state.service_class
and config.service_class > 4
order by config.service_class;

reset wlm_query_slot_count;

 

-- 6. クリーンアップ

-- クラスター削除

aws redshift delete-cluster \
--cluster-identifier redshift01 \
--skip-final-cluster-snapshot


-- パラメータグループ削除
aws redshift delete-cluster-parameter-group \
--parameter-group-name pg01

aws redshift describe-cluster-parameter-groups