Athena에서 쿼리 결과 재사용
Athena에서 쿼리를 다시 실행할 때 마지막 저장된 쿼리 결과를 재사용하도록 선택할 수 있습니다. 이 옵션을 선택하면 스캔되는 바이트 수의 측면에서 성능이 향상되고 비용이 절감됩니다. 예를 들어 지정된 기간 내에 결과가 변경되지 않을 것을 알고 있는 경우 쿼리 결과를 재사용하는 것이 좋습니다. 쿼리 결과 재사용을 위한 최대 수명을 지정할 수 있습니다. Athena에서는 지정한 기간보다 오래되지 않는 한 저장된 결과를 사용합니다. 자세한 내용은 AWS 빅 데이터 블로그의 Reduce cost and improve query performance with Amazon Athena
참고
쿼리 결과 재사용 기능에는 Athena 엔진 버전 3이 필요합니다. 엔진 버전 변경에 대한 자세한 내용은 Athena 엔진 버전 변경 섹션을 참조하세요.
주요 기능
-
쿼리 결과 재사용은 쿼리별 옵트인 기능입니다. 쿼리별로 쿼리 결과 재사용을 활성화할 수 있습니다.
-
쿼리 결과 재사용을 위한 최대 수명을 분, 시간 또는 일 단위로 지정할 수 있습니다. 지정 가능한 최대 수명은 사용된 시간 단위에 상관없이 7일입니다. 기본값은 60분입니다.
-
쿼리에 대한 결과 재사용을 활성화하면 Athena에서 동일한 작업 그룹 내에서 이전에 실행된 쿼리를 찾습니다. 해당하는 저장된 쿼리 결과를 찾으면 쿼리를 다시 실행하지 않고 이전 결과 위치를 가리키거나 해당 위치에서 데이터를 가져옵니다.
-
결과 재사용 옵션을 활성화하는 쿼리에 대해 Athena에서는 다음 조건에 모두 해당하는 경우에만 작업 그룹 폴더에 저장된 마지막 쿼리 결과를 재사용합니다.
-
쿼리 문자열이 정확히 일치합니다.
-
데이터베이스 및 카탈로그 이름이 일치합니다.
-
이전 결과가 지정된 최대 수명보다 오래되지 않았거나 최대 수명이 지정되지 않은 경우 60분 미만입니다.
-
Athena에서는 현재 실행과 정확히 동일한 결과 구성을 가진 실행만 재사용합니다.
-
쿼리에서 참조되는 모든 테이블에 액세스할 수 있습니다.
-
이전 결과가 저장된 S3 파일 위치에 액세스할 수 있습니다.
-
이러한 조건 중 하나라도 충족되지 않는 경우 Athena에서는 캐시된 결과를 사용하지 않고 쿼리를 실행합니다.
고려 사항 및 제한
쿼리 결과 재사용 기능을 사용할 경우 다음 사항에 유의하세요.
-
Athena에서는 동일한 작업 그룹 내에서만 쿼리 결과를 재사용합니다.
-
쿼리 결과 재사용 기능은 작업 그룹 구성을 준수합니다. 쿼리에 대한 결과 구성을 재정의하면 기능이 비활성화됩니다.
-
Amazon S3에서 쿼리 결과 세트를 생성하는 쿼리만 쿼리 결과를 재사용할 수 있습니다. 즉, 예를 들어 CTAS,
INSERT INTO
,MERGE
,UNLOAD
및 DDL 쿼리는 지원되지 않습니다. -
AWS Glue에 등록된 Apache Hive, Apache Hudi, Apache Iceberg, Linux Foundation Delta Lake 테이블이 지원됩니다. 외부 Hive 메타스토어는 지원되지 않습니다.
-
페더레이션 카탈로그 또는 외부 Hive 메타스토어를 참조하는 쿼리는 지원되지 않습니다.
-
Lake Formation 제어 테이블에서는 쿼리 결과 재사용이 지원되지 않습니다.
-
테이블 소스의 Amazon S3 위치가 Lake Formation의 데이터 위치로 등록된 경우 쿼리 결과 재사용은 지원되지 않습니다.
-
행 및 열 권한이 있는 테이블은 지원되지 않습니다.
-
세분화된 액세스 제어(예: 열 또는 행 필터링)가 있는 테이블은 지원되지 않습니다.
-
지원되지 않는 테이블을 참조하는 쿼리는 쿼리 결과를 재사용할 수 없습니다.
-
Athena에서 이전에 생성한 출력 파일을 재사용하려면 Amazon S3 읽기 권한이 있어야 합니다.
-
쿼리 결과 재사용 기능에서는 이전 결과의 내용이 수정되지 않은 것으로 가정합니다. Athena에서는 이전 결과를 사용하기 전에 무결성을 검사하지 않습니다.
-
이전 실행의 쿼리 결과가 삭제되거나 Amazon S3의 다른 위치로 이동된 경우 동일한 쿼리의 후속 실행에서는 쿼리 결과를 재사용하지 않습니다.
-
잠재적으로 기한이 경과한 결과가 반환될 수 있습니다. Athena에서는 지정한 최대 재사용 수명에 도달할 때까지 소스 데이터의 변경 사항을 확인하지 않습니다.
-
재사용할 수 있는 결과가 여러 개 있는 경우 최신 결과를 사용합니다.
-
비결정적 연산자 또는 함수(예:
rand()
또는shuffle()
)를 사용하는 쿼리는 캐시된 결과를 사용하지 않습니다. 예를 들어ORDER BY
를 포함하지 않는LIMIT
은 비결정적이므로 캐시되지 않지만ORDER BY
를 포함하는LIMIT
은 결정적이므로 캐시됩니다. -
쿼리 결과 재사용은 Athena 콘솔, Athena API 및 JDBC 드라이버에서 지원됩니다. 현재 쿼리 결과 재사용에 대한 ODBC 드라이버 지원은 Windows에서만 사용할 수 있습니다.
-
JDBC로 쿼리 결과 재사용 기능을 사용하기 위해 필요한 최소 드라이버 버전은 2.0.34.1000입니다. ODBC의 경우 필요한 최소 드라이버 버전은 1.1.19.1002입니다. 드라이버 다운로드 정보는 ODBC 및 JDBC 드라이버로 Amazon Athena에 연결 섹션을 참조하세요.
-
데이터 카탈로그를 2개 이상 사용하는 쿼리에서는 쿼리 결과 재사용이 지원되지 않습니다.
-
테이블이 20개를 초과하여 포함된 쿼리에서는 쿼리 결과 재사용이 지원되지 않습니다.
Athena 콘솔에서 쿼리 결과를 재사용하는 방법
이 기능을 사용하려면 Athena 쿼리 편집기에서 Reuse query results(쿼리 결과 재사용) 옵션을 활성화합니다.
쿼리 결과 재사용 기능을 구성하려면
-
Athena 쿼리 편집기의 Reuse query results(쿼리 결과 재사용) 옵션에서 up to 60 minutes ago(최대 60분 전) 옆에 있는 편집 아이콘을 선택합니다.
-
Edit reuse time(재사용 시간 편집) 대화 상자의 오른쪽 상자에서 시간 단위(분, 시간 또는 일)를 선택합니다.
-
왼쪽 상자에서 지정하려는 시간 단위 수를 입력하거나 선택합니다. 입력할 수 있는 최대 시간은 선택한 시간 단위에 상관없이 7일입니다.
다음 예에서는 최대 재사용 시간을 2일로 지정합니다.
-
확인을 선택합니다.
배너에 구성 변경을 확인하는 메시지가 표시되고 Reuse query results(쿼리 결과 재사용) 옵션에 새 설정이 표시됩니다.