Snowflake vs BigQuery 대용량 public dataset 쿼리 성능 비교

Daniel
Snowflake Korea
Published in
5 min readApr 5, 2023

Google BigQuery는 누구나 쿼리할 수 있는 여러 public dataset를 제공하고 있습니다. 이 중에 하나는 Wikipedia Pageviews dataset입니다.

BigQuery 성능 예제를 찾다보면, 해당 public dataset에서 쿼리의 성능을 측정한 데모를 찾아 볼 수 있는 데 Snowflake의 성능과 비교해보고자 테스트를 수행해 보았습니다.

먼저 BigQuery 테스트에서 사용한 Wikipedia 테이블은 대략 1000억개의 행과 7TB의 스토리지를 차지 한 것을 알 수 있습니다.

Google BigQuery: Wikipedia 테이블 스토리지 정보

아래와 같이 Wikipedia 페이지 제목에서 “Google”이라는 단어를 찾기 위해 1000억 행의 데이터를 얼마나 빨리 스캔하고 처리하는 지 쿼리를 실행해 보았습니다.

Google BigQuery 실행 결과

위 SQL 쿼리의 결과는 대략 4TB 용량의 데이터를 스캐닝해서 페이지 제목에 “G.*o.*o.*g” 패턴의 문자열이 포함 된 행을 카운트 합니다. BigQuery의 실행 결과는 24초 정도 소요 되었는데, 이런 대용량 연산을 이렇게 빠르게 처리 할 수 있는 것은 대용량 인프라를 사용하는 클라우드 서비스이기 때문입니다.

Snowflake는 동일한 쿼리를 얼마나 빠르게 처리 할 수 있을까요? 이를 위해, BigQuery의 데이터를 Snowflake 테이블로 로드하였고, 다음과 같이 스토리지 용량을 확인 해 보았습니다.

Snowflake 스토리지 사용 결과

Snowflake 테이블로 로드 된 스토리지 용량은 1 TB도 되지 않았습니다. Snowflake는 데이터가 테이블에 로드 될 때, 각 컬럼 별 최적의 압축 알고리짐을 자동으로 적용하고 고유의 포맷으로 데이터를 최적화하여 스토리지에 저장합니다. 따라서, 이 경우 BigQuery보다 스토리지 용량 및 비용을 절감하고, 높은 데이터 압축 저장 방식으로 인해 쿼리 실행 시 Disk I/O를 최소화하여 뛰어난 쿼리 성능을 발휘할 수 있는 기반을 마련하게 됩니다.

BigQuery on-demand 쿼리는 Snowflake 4XL 웨어하우스에서 실행하는 성능과 유사한것으로 몇 몇 벤치마크 테스트를 통해 알려져 있습니다. 그래서 동일한 쿼리를 Snowflake 4XL에서 3회 실행 해 보았더니, 예상대로 21~24초때로 비슷한 결과가 측정되었습니다. 실제로 Snowflake는 이 보다 더 큰 5XL도 있습니다. 그래서 해당 환경에서 실행하면 2배 정도 빠른 성능을 확인 할 수 있었습니다.

Snowflake 5XL warehouse에서 측정 한 결과

추가 테스트로 쿼리를 조금 수정하여 성능을 개선해 보았습니다. 즉, 다음 화면의 모습과 같이 Where 절에 “G”로 시작하는 제목을 찾는 조건을 추가했습니다.

수정 된 쿼리를 Snowflake가 제공하는 웨어하우스 사이즈 별로 3회 실행 한 결과는 다음과 같습니다.

Measured in seconds

수정 된 쿼리는 이전과 동일한 결과를 리턴하지만, X-Small 사이즈를 제외한 모든 사이즈에서 대폭 향상 된 성능이 측정 되었습니다.

그렇다면 BigQuery에서는 결과가 어떻게 나올까요? 위와 동일한 쿼리를 BigQuery에서 실행하니 16초가 소요되었습니다. 이 결과는 Snowflake Medium 사이즈에서 실행 한 결과 보다도 낮은 성능 수치입니다.

Lesson learned:

  • Snowflake와 BigQuery 둘 다 대용량 데이터를 스캐닝하여 처리하는 성능이 뛰어남; 약간의 쿼리 수정만으로 Snowflake는 대부분의 웨어하우스 사이즈에서 BigQuery보다 훨씬 월등한 성능을 제공할 수 있음
  • BigQuery on-demand 쿼리는 블랙박스 환경에서 실행되므로 쿼리 실행 당시의 noisy neighbour 또는 리소스 제한으로 인한 성능 영향이 발생 할 수 있음; 반면의 Snowflake는 격리 된 실행 환경을 사용할 수 있어 일관적인 쿼리의 성능을 제공할 수 있음.
  • BigQuery는 slot을 구매하여 쿼리의 성능을 고정할 수 있지만, 쿼리를 실행하지 않아도 매월 고정 된 비용이 발생함; 새롭게 발표된 BigQuery 비용 정책과 Slot Autoscaling 기능이 얼마나 비용 및 성능 효과가 있을지 아직 확인 되지 않았으나, On-demand를 사용하는 고객은 25% 증가 된 비용을 지불해야 함. 반면, Snowflake는 리소스를 사용한 만큼만 지불하는 합리적인 가격 정책과, 지속적으로 성능을 개선하여 고객에게 더 나은 비용 대비 성능(performance/price)을 제공하고 있음

--

--