Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 블로그 게시물을 참조하세요.
쿼리 대기열 설정
Amazon Redshift Serverless는 대기열 기반 쿼리 리소스 관리를 지원합니다. 다양한 워크로드에 대한 사용자 지정 모니터링 규칙을 사용하여 전용 쿼리 대기열을 생성할 수 있습니다. 이 기능으로 리소스 사용량에 대한 세부적인 제어가 가능합니다.
쿼리 모니터링 규칙(QMR)은 Redshift Serverless 작업 그룹 수준에서만 적용되며 이 작업 그룹에서 실행되는 모든 쿼리에 균일하게 영향을 미칩니다. 대기열 기반 접근 방식을 통해 고유한 모니터링 규칙을 사용하여 대기열을 생성할 수 있습니다. 이러한 대기열을 특정 사용자 역할 및 쿼리 그룹에 할당할 수 있습니다. 각 대기열은 독립적으로 작동하며, 규칙은 해당 대기열 내의 쿼리에만 영향을 미칩니다.
대기열을 사용하면 지표 기반 조건자 및 자동화된 응답을 설정할 수 있습니다. 예를 들어 시간 제한을 초과하거나 너무 많은 리소스를 소비하는 쿼리를 자동으로 중단하도록 규칙을 구성할 수 있습니다.
고려 사항
서버리스 쿼리를 사용할 때는 다음을 고려하세요.
-
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_query_priority 작업은 Serverless에서 지원되지 않습니다.
-
홉 작업(대기열 간 쿼리 이동)은 Amazon Redshift Serverless에서 지원되지 않습니다.
-
대기열 우선 순위는 Amazon Redshift 프로비저닝 클러스터에서만 지원됩니다.
-
Amazon Redshift Serverless는 최적의 성능을 위해 조정 및 리소스 할당을 자동으로 관리하므로 대기열 우선 순위를 수동으로 구성할 필요가 없습니다.
쿼리 대기열 설정
AWS Management Console, AWS CLI 또는 Redshift Serverless API를 사용하여 서버리스 작업 그룹의 제한 탭에서 대기열을 생성할 수 있습니다.
- Console
-
다음 단계에 따라 서버리스 작업 그룹에 대한 대기열을 생성합니다.
-
Redshift Serverless 작업 그룹으로 이동합니다.
-
제한 탭을 선택합니다.
-
쿼리 대기열에서 대기열 활성화를 선택합니다.
쿼리 대기열을 활성화하는 것은 영구적인 변경입니다. 활성화되면 대기열 없는 모니터링으로 되돌릴 수 없습니다.
-
다음 파라미터를 사용하여 대기열을 구성합니다.
대기열 수준 파라미터
name - 대기열 식별자(필수, 고유, 비어 있지 않음)
user_role - 사용자 역할 배열(선택 사항)
query_group - 쿼리 그룹 배열(선택 사항)
query_group_wild_card - 와일드카드 일치를 활성화하려면 0 또는 1(선택 사항)
user_group_wild_card - 와일드카드 일치를 활성화하려면 0 또는 1(선택 사항)
rules - 모니터링 규칙 배열(선택 사항)
규칙 수준 파라미터
rule_name - 고유 식별자, 최대 32자(필수)
predicate - 조건 배열, 1~3개의 조건자(필수)
action - "중단" 또는 "로그"(필수)
조건자 수준 파라미터
한도
최대 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"]
}
]
이 예시는 다음과 같이 설정되어 있습니다.
- 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\"]}]"}]'
모범 사례
서버리스 대기열을 사용할 때는 다음 모범 사례를 염두에 두세요.
-
고유한 제한 요구 사항(예: ETL, 보고 또는 임시 분석)이 있는 워크로드에는 별도의 대기열을 사용합니다.
-
간단한 임계값으로 시작하고 쿼리 동작 및 사용 패턴에 따라 조정합니다. 쿼리 모니터링 규칙에 대해 시스템 테이블 및 뷰에 문서화된 테이블 및 뷰를 사용하여 쿼리 사용 패턴을 모니터링할 수 있습니다.