

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# WLM 쿼리 모니터링 규칙
<a name="cm-c-wlm-query-monitoring-rules"></a>

Amazon Redshift 워크로드 관리(WLM)에서는 쿼리 모니터링 규칙에 따라 지표를 기준으로 WLM 대기열의 성능 경계를 정의한 후 쿼리가 이 경계를 벗어났을 때 필요한 작업을 지정합니다. 예를 들어 단시간 실행되는 쿼리 전용 대기열일 때는 60초 이상 실행되는 쿼리를 취소하는 규칙을 생성할 수도 있습니다. 그 밖에 잘못 설계된 쿼리를 추적할 목적으로 중첩 루프가 포함된 쿼리를 기록하는 규칙을 따로 만들 수도 있습니다.

쿼리 모니터링 규칙은 워크로드 관리(WLM) 구성 시 정의합니다. 대기열 1개에 최대 25개까지 규칙을 정의할 수 있으며 모든 대기열의 규칙 수도 25개로 제한됩니다. 각 규칙은 세 가지 조건, 즉 조건자와 한 가지 작업이 포함됩니다. *조건자*는 지표와 비교 조건(=, <, >) 그리고 값으로 구성됩니다. 임의 규칙에서 모든 조건자가 충족되면 해당 규칙의 작업이 트리거됩니다. 가능한 규칙 작업으로는 아래에서도 설명하겠지만 log, hop 및 abort가 있습니다.

임의 대기열에 적용되는 규칙은 해당 대기열에서 실행되는 쿼리에만 적용됩니다. 규칙끼리는 서로 독립되어 있습니다.

WLM은 10초마다 지표를 평가합니다. Amazon Redshift는 쿼리가 자동으로 다시 작성될 때 하위 쿼리 수준에서 쿼리 모니터링 규칙을 적용합니다. 같은 기간 동안 2개 이상의 규칙이 트리거된 경우 WLM은 가장 심각한 작업이 연결되어 있는 규칙을 선택합니다. 두 규칙에 대한 작업의 심각도가 동일한 경우 WLM은 규칙 이름을 기준으로 규칙을 알파벳 순서로 실행합니다. 작업이 건너뛰기나 중단인 경우에는 작업을 기록한 후 쿼리가 대기열에서 제거됩니다. 기록 작업인 경우 쿼리가 대기열에서 계속 실행됩니다. WLM은 규칙에 따라 쿼리 1개마다 시작할 수 있는 기록 작업이 1개로 제한됩니다. 대기열에 다른 규칙이 포함되어 있으면 다른 규칙들도 계속해서 적용됩니다. 작업이 건너뛰기이고 쿼리가 다른 대기열로 라우팅된다면 새로운 대기열의 규칙이 적용됩니다. 쿼리 모니터링 및 특정 쿼리에 대해 수행된 작업 추적에 대한 자세한 내용은 [단기 쿼리 가속화](wlm-short-query-acceleration.md)의 샘플 컬렉션을 참조하세요.

규칙의 조건자가 모두 충족되면 WLM이 한 행을 [STL\$1WLM\$1RULE\$1ACTION](r_STL_WLM_RULE_ACTION.md) 시스템 테이블에 작성합니다. 또한 Amazon Redshift가 현재 실행 중인 쿼리의 지표를 [STV\$1QUERY\$1METRICS](r_STV_QUERY_METRICS.md)에 기록합니다. 완료된 쿼리의 지표는 [STL\$1QUERY\$1METRICS](r_STL_QUERY_METRICS.md)에 저장됩니다.

**참고**  
Amazon Redshift Serverless의 경우 `wlm_json_configuration` 파라미터를 사용하여 쿼리 대기열 및 모니터링 규칙을 구성할 수 있습니다. 이를 통해 사용자 역할, 쿼리 그룹 및 모니터링 규칙이 서로 다른 여러 대기열을 생성할 수 있습니다. 서버리스 쿼리 대기열 구성에 대한 자세한 내용은 *Amazon Redshift 관리 안내서*의 [쿼리 대기열 설정](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-query-queues.html)을 참조하세요.

## 쿼리 모니터링 규칙 정의
<a name="cm-c-wlm-defining-query-monitoring-rules"></a>

쿼리 모니터링 규칙은 WLM 구성, 즉 클러스터의 파라미터 그룹을 정의할 때 함께 정의합니다.

AWS Management Console을 사용하거나 프로그래밍 방식으로 JSON을 사용하여 규칙을 생성할 수 있습니다.

**참고**  
프로그래밍 방식으로 규칙을 생성하려면 콘솔을 사용하여 파라미터 그룹 정의에 추가할 JSON을 생성하는 것이 가장 좋습니다. 자세한 내용은 *Amazon Redshift 관리 설명서*의 [쿼리 모니터링 규칙 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/parameter-group-modify-qmr-console.html) 또는 수정 및 [AWS CLI을 사용하여 파라미터 값 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html#configure-parameters-using-the-cli) 섹션을 참조하세요.

쿼리 모니터링 규칙을 정의하려면 다음 요소를 지정합니다.
+ 규칙 이름 - 규칙 이름은 WLM 구성 내에서 고유해야 합니다. 최대 32자의 영숫자 또는 밑줄로 구성되며, 공백이나 인용 부호는 포함될 수 없습니다. 대기열 1개당 규칙 수는 최대 25개까지 가능하며 모든 대기열의 총 규칙 수도 25개로 제한됩니다.
+ 1개 이상의 조건자 - 규칙 1개당 최대 3개의 조건자를 가질 수 있습니다. 임의 규칙에서 모든 조건자가 충족되면 연결되어 있는 작업이 트리거됩니다. 조건자는 지표 이름과 연산자( =, <, >) 그리고 값으로 정의됩니다. 예를 들면, `query_cpu_time > 100000`입니다. 지표 목록과 지표에 따른 값의 예는 이번 섹션에서 아래 [프로비저닝된 Amazon Redshift에 대한 쿼리 모니터링 지표](#cm-c-wlm-query-monitoring-metrics)를 참조하세요.
+ 작업 - 다수의 규칙이 트리거되면 WLM이 가장 심각한 작업이 연결되어 있는 규칙을 선택합니다. 가능한 작업은 심각도의 오름차순에 따라 다음과 같습니다.
  + 로그 - 쿼리에 대한 정보를 STL\$1WLM\$1RULE\$1ACTION 시스템 테이블에 기록합니다. 기록하기 작업은 로그 레코드만 작성하려고 할 때 사용합니다. WLM은 규칙에 따라 쿼리 1개마다 기록하기 작업이 1개로 제한되어 있습니다. 기록하기 작업을 마치면 다른 규칙이 적용되고 WLM이 계속해서 쿼리를 모니터링합니다.
  + 건너뛰기(수동 WLM에서만 사용할 수 있음) - 작업을 기록하고 쿼리를 건너뛰어 일치하는 그다음 대기열로 이동합니다. 일치하는 대기열이 더 이상 없으면 쿼리가 취소됩니다. QMR은 [CREATE TABLE AS](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_AS.html)(CTAS) 문과 읽기 전용 쿼리(예: SELECT 문)만 건너뜁니다. 자세한 내용은 [WLM 쿼리 대기열 건너뛰기](wlm-queue-hopping.md) 섹션을 참조하세요.
  + 중단 - 작업을 로그하고 쿼리를 취소합니다. QMR은 COPY 문과 유지 관리 작업(예: ALTER, ANALYZE 및 VACUUM)을 중지하지 않습니다.
  + 우선 순위 변경(자동 WLM에서만 사용할 수 있음) - 쿼리의 우선 순위를 변경합니다.

쿼리 실행 시간을 제한하려면 WLM 제한 시간 대신 쿼리 모니터링 규칙을 생성하는 것이 좋습니다. 예를 들어 다음 JSON 코드 조각과 같이 `max_execution_time`을 50,000밀리초로 설정할 수 있습니다.

```
"max_execution_time": 50000
```

하지만 대신 동등한 쿼리 모니터링 규칙을 정의하는 것이 좋습니다. 다음 예제에서는 `query_execution_time`을 50초로 설정하는 쿼리 모니터링 규칙을 보여 줍니다.

```
"rules": 
[
    {
        "rule_name": "rule_query_execution",
        "predicate": [
            {
                "metric_name": "query_execution_time",
                "operator": ">",
                "value": 50
            }
        ],
        "action": "abort"
    }            
]
```

쿼리 모니터링 규칙을 생성하거나 수정하는 단계는 *Amazon Redshift 관리 설명서*의 [쿼리 모니터링 규칙 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/parameter-group-modify-qmr-console.html) 및 [wlm\$1json\$1configuration 파라미터의 속성](https://docs.aws.amazon.com/redshift/latest/mgmt/workload-mgmt-config.html#wlm-json-config-properties) 섹션을 참조하세요.

쿼리 모니터링 규칙에 대한 자세한 내용은 다음 주제에서 찾아볼 수 있습니다.
+  [프로비저닝된 Amazon Redshift에 대한 쿼리 모니터링 지표](#cm-c-wlm-query-monitoring-metrics) 
+  [쿼리 모니터링 규칙 템플릿](#cm-c-wlm-query-monitoring-templates) 
+  [쿼리 모니터링 규칙 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/parameter-group-modify-qmr-console.html) 
+  [워크로드 관리 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/workload-mgmt-config.html) 
+  [쿼리 모니터링 규칙에 대한 시스템 테이블 및 뷰](#cm-c-wlm-qmr-tables-and-views) 

## 프로비저닝된 Amazon Redshift에 대한 쿼리 모니터링 지표
<a name="cm-c-wlm-query-monitoring-metrics"></a>

다음 표는 쿼리 모니터링 규칙에서 사용하는 지표를 설명한 것입니다. 아래 지표는 [STV\$1QUERY\$1METRICS](r_STV_QUERY_METRICS.md) 및 [STL\$1QUERY\$1METRICS](r_STL_QUERY_METRICS.md) 시스템 테이블에 저장되는 지표와 다릅니다.

임의 지표의 성능 임계값은 쿼리 수준에서 또는 세그먼트 수준에서 추적됩니다. 세그먼트 및 단계에 대한 자세한 내용은 [쿼리 계획 및 실행 워크플로우](c-query-planning.md) 섹션을 참조하세요.

**참고**  
[WLM 제한 시간](cm-c-defining-query-queues.md#wlm-timeout) 파라미터는 쿼리 모니터링 규칙과 다릅니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html)

**참고**  
건너뛰기 작업은 `query_queue_time` 조건자에서 지원되지 않습니다. 즉, `query_queue_time` 조건자가 충족될 때 건너뛰도록 정의된 규칙은 무시됩니다.
세그먼트 실행 시간이 짧으면 `io_skew`, `query_cpu_usage_percent` 같은 일부 지표에서 샘플링 오류가 발생할 수 있습니다. 이러한 샘플링 오류를 피하거나 줄이려면 규칙에 세그먼트 실행 시간을 추가하세요. 처음에는 `segment_execution_time > 10`으로 시작하는 것이 좋습니다.

[SVL\$1QUERY\$1METRICS](r_SVL_QUERY_METRICS.md) 뷰에는 완료된 쿼리의 지표가 표시됩니다. 그리고 [SVL\$1QUERY\$1METRICS\$1SUMMARY](r_SVL_QUERY_METRICS_SUMMARY.md) 뷰에는 완료된 쿼리의 최대 지표 값이 표시됩니다. 쿼리 모니터링 규칙을 정의하기 위한 임계값을 결정할 때는 이 두 가지 뷰의 값들을 사용하세요.

## Amazon Redshift Serverless에 대한 쿼리 모니터링 지표
<a name="cm-c-wlm-query-monitoring-metrics-serverless"></a>

다음 테이블은 Amazon Redshift Serverless의 쿼리 모니터링 규칙에서 사용하는 지표를 설명한 것입니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html)

**참고**  
건너뛰기 작업은 `max_query_queue_time` 조건자에서 지원되지 않습니다. 즉, `max_query_queue_time` 조건자가 충족될 때 건너뛰도록 정의된 규칙은 무시됩니다.
세그먼트 실행 시간이 짧으면 `max_io_skew`, `max_query_cpu_usage_percent` 같은 일부 지표에서 샘플링 오류가 발생할 수 있습니다.

Amazon Redshift Serverless의 경우 `wlm_json_configuration` 파라미터를 사용하여 쿼리 대기열 및 모니터링 규칙을 구성할 수 있습니다. 이렇게 하면 위에 나열된 지표를 사용하여 사용자 역할, 쿼리 그룹 및 모니터링 규칙이 서로 다른 여러 대기열을 생성할 수 있습니다. 서버리스 쿼리 대기열 구성에 대한 자세한 내용은 *Amazon Redshift 관리 안내서*의 [WLM JSON 구성 구조](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-query-queues.html#serverless-wlm-json-configuration)를 참조하세요.

## 쿼리 모니터링 규칙 템플릿
<a name="cm-c-wlm-query-monitoring-templates"></a>

Amazon Redshift 콘솔을 사용하여 규칙을 추가할 때 사전 정의된 템플릿에서 규칙을 생성하도록 선택할 수 있습니다. Amazon Redshift는 일련의 조건자로 새 규칙을 생성하고 조건자를 기본값으로 채웁니다. 이때 기본 작업은 기록하기입니다. 조건자와 작업은 사용 사례에 따라 수정할 수 있습니다.

다음 표는 사용할 수 있는 템플릿을 모아놓은 목록입니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html)

## 쿼리 모니터링 규칙에 대한 시스템 테이블 및 뷰
<a name="cm-c-wlm-qmr-tables-and-views"></a>

규칙의 조건자가 모두 충족되면 WLM이 한 행을 [STL\$1WLM\$1RULE\$1ACTION](r_STL_WLM_RULE_ACTION.md) 시스템 테이블에 작성합니다. 이 행에는 규칙을 트리거한 쿼리와 결과 작업에 대한 세부 정보가 포함되어 있습니다.

또한 Amazon Redshift는 쿼리 지표를 다음 시스템 테이블 및 뷰에 기록합니다.
+ [STV\$1QUERY\$1METRICS](r_STV_QUERY_METRICS.md) 테이블에는 현재 실행 중인 쿼리의 지표가 표시됩니다.
+ [STL\$1QUERY\$1METRICS](r_STL_QUERY_METRICS.md) 테이블에는 완료된 쿼리의 지표가 기록됩니다.
+ [SVL\$1QUERY\$1METRICS](r_SVL_QUERY_METRICS.md) 뷰에는 완료된 쿼리의 지표가 표시됩니다.
+ 그리고 [SVL\$1QUERY\$1METRICS\$1SUMMARY](r_SVL_QUERY_METRICS_SUMMARY.md) 뷰에는 완료된 쿼리의 최대 지표 값이 표시됩니다.