Amazon Redshift の WLM クエリモニタリングルールで、一定時間以上実行されているクエリを中止してみた。
以下の例では 10 秒以上要したクエリを中止している。
実行結果
[ec2-user@ip-172-31-0-222 ~]$ export LC_ALL=C [ec2-user@ip-172-31-0-222 ~]$ cat lineorder.sql select count(a.*) from lineorder a, lineorder b, lineorder c; [ec2-user@ip-172-31-0-222 ~]$ psql "host=redshift-cluster-4.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" psql (13.4, server 8.0.2) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. dev=# \timing Timing is on. dev=# \i lineorder.sql psql:lineorder.sql:1: ERROR: Query (5591) cancelled by WLM abort action of Query Monitoring Rule "cancel_slow_query". DETAIL: ----------------------------------------------- error: Query (5591) cancelled by WLM abort action of Query Monitoring Rule "cancel_slow_query". code: 1078 context: Query (5591) cancelled by WLM abort action of Query Monitoring Rule "cancel_slow_query". query: 0 location: wlm_query_action.cpp:156 process: wlm [pid=3920] ----------------------------------------------- Time: 12192.098 ms (00:12.192)
設定手順
ワークロード管理でパラメータグループを作成
- マネジメントコンソールから [Amazon Redshift]-[設定]-[ワークロード管理]を選択
- [パラメータグループ]-[作成] をクリックして、パラメータグループを作成
- パラメータ名: qmr-cancel-slow-query
- 説明: Cancel slow query
- [ワークロード管理]-[ワークロードキューを編集]をクリック
- [クエリモニタリングルール]-[カスタムルールを追加]をクリック
- ルール名: cancel_slow_query
- 述語: クエリ実行時間(秒) > 10
- アクション: 中止