[AWS][Athena] Query Planning 이 느린 현상
문의 사항
안녕하세요
Athena Glue Catalog 에 저장된 테이블을 활용해 Athena Query 를 실행하고 이 결과의 s3 파일을 제공하는 API 를 운영중인데, 많은 Athena Query 가 상당히 느린 결과를 얻고 있어 문의 드립니다
아래 같은 정보를 확인한 상황인데,
* 파티션을 활용하여 Data Scanned 가 많은 것이 아님을 확인
* Query Stats 를 확인해보니 Planning은 21 seconds, Execution 은 581ms 로 Planning 이 병목임을 확인
질문1) Planning 이 오래걸리는 이유가 무엇인지, Planning 시간을 줄이려면 어떤 조치를 취해야하는지 궁금합니다
질문2) Query 중에 x, y 컬럼으로 group by 를 하여 max 값을 취한 값을 매번 활용하고 있는데, 이 데이터를 미리 만들어 둔다면 성능에 도움이 될까요? 미리 만든다면 어떤 방법으로 만들어둘 수 있을까요 ?
감사합니다.
답변
안녕하세요.
■ 문의내용
- Athena Query 를 사용함에 있어 Planning Time 이 길게 잡히는 부분에 대한 문의를 주신 것으로 확인하였습니다.
■ 답변내용
- 일반적으로 Planning Time은 쿼리가 너무 복잡할 때, 테이블이 과도하게 분할 되어 있을 때, 여러개의 파티션에 대해 쿼리하고 조인하려 할 때 증가할 수 있습니다.[1]
이는 PlanningTime 에 데이터 소스로부터 테이블 파티션을 검색하는 데 소요된 시간이 포함되기 때문입니다.[2]
- 문의 주신 Query 의 경우 쿼리가 단순하지 않고 데이터를 계산하고 처리하는 작업 절차가 들어 있는 것으로 확인됩니다.
이러한 과정에서 Planning 시간에 영향을 줄 수 있습니다.
- 이러한 부분을 줄이기 위해 쿼리의 중간 결과를 임시 테이블에 저장하고, 이 임시 테이블을 대상으로 추가 연산을 수행하는 방법을 고려해 보시기 바랍니다..
이는 질문 2번에 대한 답변으로 사용하실 수 있으며 이러한 방식은 계산해야 할 데이터 양을 줄여 쿼리 성능을 향상 시킬 수 있습니다.
또한, 전체적으로 쿼리가 간소화 되므로 성능에도 도움이 됩니다.
쿼리 결과를 테이블로 만드는 방법에 대해서 Docs 를 전달드리니 참고 부탁 드립니다.[3]
■ 참고
- [1] https://repost.aws/ko/knowledge-center/athena-queries-long-processing-time
- [2] https://docs.aws.amazon.com/ko_kr/athena/latest/ug/query-metrics-viewing.html
- [3] https://docs.aws.amazon.com/ko_kr/athena/latest/ug/ctas.html
추가 문의 사항은 회신 부탁 드립니다.
감사합니다.
[AWS][Athena] Query Planning 이 느린 현상
문의 사항
안녕하세요
Athena Glue Catalog 에 저장된 테이블을 활용해 Athena Query 를 실행하고 이 결과의 s3 파일을 제공하는 API 를 운영중인데, 많은 Athena Query 가 상당히 느린 결과를 얻고 있어 문의 드립니다
아래 같은 정보를 확인한 상황인데,
* 파티션을 활용하여 Data Scanned 가 많은 것이 아님을 확인
* Query Stats 를 확인해보니 Planning은 21 seconds, Execution 은 581ms 로 Planning 이 병목임을 확인
질문1) Planning 이 오래걸리는 이유가 무엇인지, Planning 시간을 줄이려면 어떤 조치를 취해야하는지 궁금합니다
질문2) Query 중에 x, y 컬럼으로 group by 를 하여 max 값을 취한 값을 매번 활용하고 있는데, 이 데이터를 미리 만들어 둔다면 성능에 도움이 될까요? 미리 만든다면 어떤 방법으로 만들어둘 수 있을까요 ?
감사합니다.
답변
안녕하세요.
■ 문의내용
- Athena Query 를 사용함에 있어 Planning Time 이 길게 잡히는 부분에 대한 문의를 주신 것으로 확인하였습니다.
■ 답변내용
- 일반적으로 Planning Time은 쿼리가 너무 복잡할 때, 테이블이 과도하게 분할 되어 있을 때, 여러개의 파티션에 대해 쿼리하고 조인하려 할 때 증가할 수 있습니다.[1]
이는 PlanningTime 에 데이터 소스로부터 테이블 파티션을 검색하는 데 소요된 시간이 포함되기 때문입니다.[2]
- 문의 주신 Query 의 경우 쿼리가 단순하지 않고 데이터를 계산하고 처리하는 작업 절차가 들어 있는 것으로 확인됩니다.
이러한 과정에서 Planning 시간에 영향을 줄 수 있습니다.
- 이러한 부분을 줄이기 위해 쿼리의 중간 결과를 임시 테이블에 저장하고, 이 임시 테이블을 대상으로 추가 연산을 수행하는 방법을 고려해 보시기 바랍니다..
이는 질문 2번에 대한 답변으로 사용하실 수 있으며 이러한 방식은 계산해야 할 데이터 양을 줄여 쿼리 성능을 향상 시킬 수 있습니다.
또한, 전체적으로 쿼리가 간소화 되므로 성능에도 도움이 됩니다.
쿼리 결과를 테이블로 만드는 방법에 대해서 Docs 를 전달드리니 참고 부탁 드립니다.[3]
■ 참고
- [1] https://repost.aws/ko/knowledge-center/athena-queries-long-processing-time
- [2] https://docs.aws.amazon.com/ko_kr/athena/latest/ug/query-metrics-viewing.html
- [3] https://docs.aws.amazon.com/ko_kr/athena/latest/ug/ctas.html
추가 문의 사항은 회신 부탁 드립니다.
감사합니다.