Athena에서 쿼리 결과 재사용
Athena에서 쿼리를 다시 실행할 때 마지막 저장된 쿼리 결과를 재사용하도록 선택할 수 있습니다. 이 옵션을 선택하면 스캔되는 바이트 수의 측면에서 성능이 향상되고 비용이 절감됩니다. 예를 들어 지정된 기간 내에 결과가 변경되지 않을 것을 알고 있는 경우 쿼리 결과를 재사용하는 것이 좋습니다. 쿼리 결과 재사용을 위한 최대 수명을 지정할 수 있습니다. Athena에서는 지정한 기간보다 오래되지 않는 한 저장된 결과를 사용합니다. 자세한 내용은 AWS 빅 데이터 블로그의 Reduce cost and improve query performance with Amazon Athena
주요 기능
쿼리에 대한 결과 재사용을 활성화하면 Athena에서 동일한 작업 그룹 내에서 이전에 실행된 쿼리를 찾습니다. Athena가 일치 항목을 찾으면 실행을 우회하고 일치하는 이전 실행의 쿼리 결과를 반환합니다. 쿼리별로 쿼리 결과 재사용을 활성화할 수 있습니다.
Athena는 다음 조건이 모두 참이면 마지막 쿼리 결과를 재사용합니다.
-
쿼리 문자열이 Athena에서 확인한 대로 일치합니다.
-
데이터베이스 및 카탈로그 이름이 일치합니다.
-
이전 결과가 만료되지 않았습니다.
-
쿼리 결과 구성이 이전 실행의 쿼리 결과 구성과 일치합니다.
-
쿼리에서 참조되는 모든 테이블에 대한 액세스 권한이 있습니다.
-
이전 결과가 저장된 S3 파일 위치에 액세스할 수 있습니다.
이러한 조건 중 하나라도 충족되지 않는 경우 Athena에서는 캐시된 결과를 사용하지 않고 쿼리를 실행합니다.
고려 사항 및 제한 사항
쿼리 결과 재사용 기능을 사용할 경우 다음 사항에 유의하세요.
-
Athena에서는 동일한 작업 그룹 내에서만 쿼리 결과를 재사용합니다.
-
쿼리 결과 재사용 기능은 작업 그룹 구성을 준수합니다. 쿼리에 대한 결과 구성을 재정의하면 기능이 비활성화됩니다.
-
Amazon S3에서 결과 세트를 생성하는 쿼리만 지원됩니다.
SELECT및EXECUTE이외의 명령문은 지원되지 않습니다. -
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은 결정적이므로 캐시됩니다. -
JDBC로 쿼리 결과 재사용 기능을 사용하기 위해 필요한 최소 드라이버 버전은 2.0.34.1000입니다. ODBC의 경우 필요한 최소 드라이버 버전은 1.1.19.1002입니다. 드라이버 다운로드 정보는 ODBC 및 JDBC 드라이버로 Amazon Athena에 연결 섹션을 참조하세요.
-
데이터 카탈로그를 2개 이상 사용하는 쿼리에서는 쿼리 결과 재사용이 지원되지 않습니다.
-
테이블이 20개를 초과하여 포함된 쿼리에서는 쿼리 결과 재사용이 지원되지 않습니다.
-
크기가 100KB 미만인 쿼리 문자열의 경우 설명과 공백의 차이는 무시되고,
INNER JOIN및JOIN은 결과를 재사용할 목적으로 동등한 것으로 처리됩니다. 결과를 재사용하려면 100KB보다 큰 쿼리 문자열은 정확히 일치해야 합니다. -
쿼리 결과가 지정된 최대 수명 또는 기본값인 60분(최대 기간을 지정하지 않은 경우)보다 오래된 경우 만료된 것으로 간주됩니다. 쿼리 결과 재사용을 위한 최대 수명을 분, 시간 또는 일 단위로 지정할 수 있습니다. 지정 가능한 최대 수명은 사용된 시간 단위에 상관없이 7일입니다.
-
관리형 쿼리 결과는 지원되지 않습니다.
Athena 콘솔에서 쿼리 결과를 재사용하는 방법
이 기능을 사용하려면 Athena 쿼리 편집기에서 Reuse query results(쿼리 결과 재사용) 옵션을 활성화합니다.
쿼리 결과 재사용 기능을 구성하려면
-
Athena 쿼리 편집기의 Reuse query results(쿼리 결과 재사용) 옵션에서 up to 60 minutes ago(최대 60분 전) 옆에 있는 편집 아이콘을 선택합니다.
-
Edit reuse time(재사용 시간 편집) 대화 상자의 오른쪽 상자에서 시간 단위(분, 시간 또는 일)를 선택합니다.
-
왼쪽 상자에서 지정하려는 시간 단위 수를 입력하거나 선택합니다. 입력할 수 있는 최대 시간은 선택한 시간 단위에 상관없이 7일입니다.
-
확인을 선택합니다.
배너에 구성 변경을 확인하는 메시지가 표시되고 Reuse query results(쿼리 결과 재사용) 옵션에 새 설정이 표시됩니다.