{Denodo}Resource Manager

 

https://community.denodo.com/docs/html/browse/8.0/jp/vdp/administration/resource_manager/resource_manager


Resource Manager はデフォルトで有効です。
実際に有効かどうかを確認するには、[Administration] メニューで [Resource Manager] をクリックして、
[Configuration] タブで [On] オプションが選択されていることを確認します。


1. プランの定義


1.1 プランを有効にするタイミング

Always: 常に有効。
CPU usage is equal to or greater than: CPU 使用率が特定のパーセント値を超えたとき。この制限は、クエリ開始時およびその後 20 秒おきに評価されます。


1.2 Resource Manager が実行するアクション


①Stop query always
②Switch query to plan
③Stop query when the maximum execution time has been reached
④Stop query when the maximum number of returned rows has been reached
⑤Set the priority of the threads that execute the query
⑥Set the maximum number of concurrent queries
⑦Set the maximum number of queued queries
⑧Set automatic simplification of the query to
⑨Set the maximum number of queries per time unit
⑩Add variables values to query context

 

2. ルールの定義

条件で使用できるすべてのフィールド

access_interface
admin_user
client_ip
connection_start_time
database_name
intermediate_client_IP
JMS_queue_name
last_executed_query
query_running
query_running_queued
(roles).value
user_agent
user_authentication_type
user_name
web_service_name


ルールの例

user_agent='reports application'
user_agent='reports application' AND gethour(CURRENT_TIMESTAMP) >= 8 AND gethour(CURRENT_TIMESTAMP) < 23
access_interface in ('Data-Catalog', 'JDBC')
(roles).value = 'developer' or (roles).value = 'tester'
(getdayofweek(current_date) = 7 OR getdayofweek(current_date) = 1)
(gethour(CURRENT_TIMESTAMP) >= 18 OR gethour(CURRENT_TIMESTAMP) < 7)
(gethour(connection_start_time) >= 18 OR gethour(connection_start_time) < 7)

 

3. 動作確認

9時台の時間帯だけ返される行数を1件に制限

# RESOURCE MANAGER PLANS
# #######################################
CREATE OR REPLACE RESOURCE_MANAGER PLAN plan01 
DESCRIPTION = 'plan01' 
CONDITION true ACTION 'STOP_QUERY_WHEN_MAX_NUMBER_OF_RETURNED_ROWS_REACHED' PARAMETERS ('MaxReturnedRows' = 1);


# #######################################
# RESOURCE MANAGER RULES
# #######################################
CREATE OR REPLACE RESOURCE_MANAGER RULE rule01 
DESCRIPTION = 'rule01' 
CONDITION (gethour(now()) >= 9 AND gethour(now()) < 10) 
RESOURCE_MANAGER PLAN plan01;

 

→ 特にエラーとならず、返される行数が1件になる