

 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/)을 참조하세요.

# 쿼리 대기열 설정
<a name="serverless-workgroup-query-queues"></a>

Amazon Redshift Serverless는 대기열 기반 쿼리 리소스 관리를 지원합니다. 다양한 워크로드에 대한 사용자 지정 모니터링 규칙을 사용하여 전용 쿼리 대기열을 생성할 수 있습니다. 이 기능으로 리소스 사용량에 대한 세부적인 제어가 가능합니다.

쿼리 모니터링 규칙(QMR)은 Redshift Serverless 작업 그룹 수준에서만 적용되며 이 작업 그룹에서 실행되는 모든 쿼리에 균일하게 영향을 미칩니다. 대기열 기반 접근 방식을 통해 고유한 모니터링 규칙을 사용하여 대기열을 생성할 수 있습니다. 이러한 대기열을 특정 사용자 역할 및 쿼리 그룹에 할당할 수 있습니다. 각 대기열은 독립적으로 작동하며, 규칙은 해당 대기열 내의 쿼리에만 영향을 미칩니다.

대기열을 사용하면 지표 기반 조건자 및 자동화된 응답을 설정할 수 있습니다. 예를 들어 시간 제한을 초과하거나 너무 많은 리소스를 소비하는 쿼리를 자동으로 중단하도록 규칙을 구성할 수 있습니다.

## 고려 사항
<a name="serverless-workgroup-query-queues-considerations"></a>

서버리스 쿼리를 사용할 때는 다음을 고려하세요.
+ Amazon Redshift 프로비저닝 클러스터에 사용되는 다음 워크로드 관리(WLM) 구성 키는 Redshift Serverless 대기열에서 지원되지 않습니다. `max_execution_time`, `short_query_queue`, `auto_wlm`, `concurrency_scaling`, `priority`, `queue_type`, `query_concurrency`, `memory_percent_to_use`, `user_group`, `user_group_wild_card`.

  또한 change\$1query\$1priority 작업은 Serverless에서 지원되지 않습니다.
+ 홉 작업(대기열 간 쿼리 이동)은 Amazon Redshift Serverless에서 지원되지 않습니다.
+ 대기열 우선순위는 Amazon Redshift 프로비저닝 클러스터에서만 지원됩니다.
+ Amazon Redshift Serverless는 최적의 성능을 위해 조정 및 리소스 할당을 자동으로 관리하므로 대기열 우선순위를 수동으로 구성할 필요가 없습니다.

## 쿼리 대기열 설정
<a name="serverless-workgroup-query-queues-setup"></a>

AWS Management Console, AWS CLI 또는 Redshift Serverless API를 사용하여 서버리스 작업 그룹의 제한 탭에서 대기열을 생성할 수 있습니다.

------
#### [ Console ]

다음 단계에 따라 서버리스 작업 그룹에 대한 대기열을 생성합니다.

1. Redshift Serverless 작업 그룹으로 이동합니다.

1. 제한 탭을 선택합니다.

1. **쿼리 대기열**에서 **대기열 활성화**를 선택합니다.
**중요**  
쿼리 대기열을 활성화하는 것은 영구적인 변경입니다. 활성화되면 대기열 없는 모니터링으로 되돌릴 수 없습니다.

1. 다음 파라미터를 사용하여 대기열을 구성합니다.

   **대기열 수준 파라미터**
   + `name` - 대기열 식별자(필수, 고유, 비어 있지 않음)
   + `user_role` - 사용자 역할 배열(선택 사항)
   + `query_group` - 쿼리 그룹 배열(선택 사항)
   + `query_group_wild_card` - 와일드카드 일치를 활성화하려면 0 또는 1(선택 사항)
   + `user_group_wild_card` - 와일드카드 일치를 활성화하려면 0 또는 1(선택 사항)
   + `rules` - 모니터링 규칙 배열(선택 사항)

   **규칙 수준 파라미터**
   + `rule_name` - 고유 식별자, 최대 32자(필수)
   + `predicate` - 조건 배열, 1\$13개의 조건자(필수)
   + `action` - "중단" 또는 "로그"(필수)

   **조건자 수준 파라미터**
   + `metric_name` - 모니터링할 지표(필수)
   + `operator` - "=", "<" 또는 ">"(필수)
   + `value` - 숫자 임계값(필수)

   **한도**
   + 최대 8개의 대기열
   + 모든 대기열에서 최대 25개의 규칙
   + 규칙당 최대 3개의 조건자
   + 이름은 전역적으로 고유해야 합니다.

**구성의 예제**

대기열 3개 예: 제한 시간이 짧은 쿼리를 대시보드로 처리하기 위한 대기열 1개, 제한 시간이 긴 ETL 쿼리와 관리자 대기열을 위한 대기열 1개:

```
[
  {
    "name": "dashboard",
    "user_role": ["analyst", "viewer"],
    "query_group": ["reporting"],
    "query_group_wild_card": 1,
    "rules": [
      {
        "rule_name": "short_timeout",
        "predicate": [
          {
            "metric_name": "query_execution_time",
            "operator": ">",
            "value": 60
          }
        ],
        "action": "abort"
      }
    ]
  },
  {
    "name": "ETL",
    "user_role": ["data_scientist"],
    "query_group": ["analytics", "ml"],
    "rules": [
      {
        "rule_name": "long_timeout",
        "predicate": [
          {
            "metric_name": "query_execution_time",
            "operator": ">",
            "value": 3600
          }
        ],
        "action": "log"
      },
      {
        "rule_name": "memory_limit",
        "predicate": [
          {
            "metric_name": "query_temp_blocks_to_disk",
            "operator": ">",
            "value": 100000
          }
        ],
        "action": "abort"
      }
    ]
  },
  {
    "name": "admin_queue",
    "user_role": ["admin"],
    "query_group": ["admin"]
  }
]
```

이 예시는 다음과 같이 설정되어 있습니다.
+ 대시보드 쿼리가 60초 이상 실행되면 중단됩니다.
+ ETL 쿼리는 1시간 이상 실행되는 경우 로깅됩니다.
+ 관리자 대기열에는 리소스 제한이 없습니다.

------
#### [ CLI ]

`wlm_json_configuration` 구성 파라미터와 함께 CreateWorkgroup 또는 UpdateWorkgroup APIs 사용하여 대기열을 관리하여 JSON 형식으로 대기열을 지정할 수 있습니다.

```
aws redshift-serverless create-workgroup \
  --workgroup-name test-workgroup \
  --namespace-name test-namespace \
  --config-parameters '[{"parameterKey": "wlm_json_configuration", "parameterValue": "[{\"name\":\"dashboard\",\"user_role\":[\"analyst\",\"viewer\"],\"query_group\":[\"reporting\"],\"query_group_wild_card\":1,\"rules\":[{\"rule_name\":\"short_timeout\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":60}],\"action\":\"abort\"}]},{\"name\":\"ETL\",\"user_role\":[\"data_scientist\"],\"query_group\":[\"analytics\",\"ml\"],\"rules\":[{\"rule_name\":\"long_timeout\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":3600}],\"action\":\"log\"},{\"rule_name\":\"memory_limit\",\"predicate\":[{\"metric_name\":\"query_temp_blocks_to_disk\",\"operator\":\">\",\"value\":100000}],\"action\":\"abort\"}]},{\"name\":\"admin_queue\",\"user_role\":[\"admin\"],\"query_group\":[\"admin\"]}]"}]'
```

------

## 모범 사례
<a name="serverless-workgroup-query-queues-best-practices"></a>

서버리스 대기열을 사용할 때는 다음 모범 사례를 염두에 두세요.
+ 고유한 제한 요구 사항(예: ETL, 보고 또는 임시 분석)이 있는 워크로드에는 별도의 대기열을 사용합니다.
+ 간단한 임계값으로 시작하고 쿼리 동작 및 사용 패턴에 따라 조정합니다. [쿼리 모니터링 규칙에 대해 시스템 테이블 및 뷰](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html#cm-c-wlm-qmr-tables-and-views)에 문서화된 테이블 및 뷰를 사용하여 쿼리 사용 패턴을 모니터링할 수 있습니다.