[Trouble Shooting] Trino join pushdown 으로 속도 개선

Chan hae OH·2024년 4월 5일

1. 문제 발단


현재 운영하고 있는 곳의 경우 기존의 Oracle 을 많이 사용하고 있다.
이 때 데이터플랫폼에서 데이터를 조회 시 각 DB 들 마다 따로 접근하기 어려워 Trino 를 활용하여 접근하고 있다.

이 때 이기종 DB 간의 Join 을 수행이 아닌 한 DB 내에서 Join 을 수행할려고 해도 Trino 에서 join 을 수행해 조회 속도가 느려지는 현상이 발생했습니다.



2. 문제 원인 분석


  1. Join 이 반드시 Trino 에서 발생해야 하는지?

    Trino 문서에 보면 Join push down 에 관련된 글이 보인다.



3. 문제 심층 분석


Trino 에서는 Source 단에서 데이터를 Join 할 수 있도록 하는 옵션이 존재 한다. 그러나 Connector 별로 지원 여부를 확인해야 하며, Phoenix 의 경우 해당 옵션을 지원하지 않는다.

Phoenix 의 경우 view 를 활용하영 이 와 같은 문제를 해결할 수 있을 듯 하다.

참고 : Trino - Oracle connector join pushdown



4. 문제 해결


아래 옵션을 활성화하여 Join 수행을 Trino 가 아닌 Source DB 에서 지원하도록 한다.

  • join-pushdown.enabled=true

보통 Source 쪽 데이터의 경우 방대한 양의 데이터를 가지고 있지는 않으며, 해당 테이블의 Index 를 활용하여 데이터를 Join 하는 것이 Trino 의 Network IO 를 발생시켜 원본을 가져온 후 Join 하는 것보다 빠르기 때문에 해당 옵션을 활성화 시키는 것이 좋을 것으로 판단했다.

물론 상황에 따라 판단을 해야할 것이다.



profile
Data Engineer

0개의 댓글