본문 바로가기

[Google]/[BQ] BigQuery

[BQ] 쿼리 비용 Tip

728x90
반응형

BigQuery 쿼리 비용 책정

https://cloud.google.com/bigquery/pricing.html?hl=ko#storage 

 

가격 책정  |  BigQuery: 클라우드 데이터 웨어하우스  |  Google Cloud

BigQuery 가격 책정 검토

cloud.google.com

주문형 쿼리 요금과 관련하여 다음 사항을 참고하세요.

  • BigQuery는 열 형식 데이터 구조를 사용합니다. 따라서 선택한 열의 총 데이터 처리량을 기준으로 요금이 청구되며, 열별 총 데이터는 해당 열의 데이터 유형에 따라 계산됩니다. 데이터 크기 계산 방식에 대한 자세한 내용은 데이터 크기 계산을 참조하세요.
  • 오류가 발생한 쿼리 또는 캐시에서 결과를 검색하는 쿼리에는 요금이 청구되지 않습니다. 스크립트 작업의 경우 이러한 고려 사항은 문 단위로 제공됩니다.
  • 요금은 가장 근접한 MB 단위로 올림되고 쿼리가 참조하는 테이블당 데이터 처리량은 최소 10MB, 쿼리당 데이터 처리량은 최소 10MB로 간주됩니다.
  • 실행 중인 쿼리 작업을 취소해도 쿼리를 완전히 실행할 경우 전체 비용이 부과될 수 있습니다.
  • 쿼리를 실행하면 결과에 명시적 LIMIT을 설정해도 선택한 열에서 처리된 데이터를 기준으로 요금이 청구됩니다.
  • 테이블 파티션 나누기  클러스터링이 쿼리에서 처리되는 데이터 양을 줄이는 데 도움이 될 수 있습니다. 가능한 경우 항상 파티션 나누기 및 클러스터링을 사용하는 것이 좋습니다.
  • Google Cloud SKU 페이지에서는 주문형 쿼리 가격을 분석 가격이라고 지칭합니다.
  • 클러스터링된 열의 필터를 포함한 쿼리를 클러스터링된 테이블에 실행하는 경우, BigQuery는 필터 표현식을 사용해 쿼리로 스캔할 블록을 프루닝합니다. 이렇게 하면 스캔되는 바이트 수를 줄일 수 있습니다.
  • BigQuery에서 외부 데이터 소스를 쿼리하면 쿼리에서 읽은 바이트 수에 대한 요금이 부과됩니다. 외부 데이터가 Cloud Storage와 같은 다른 Google Cloud 제품에 저장된 경우 해당 제품에 대한 모든 스토리지 비용도 적용됩니다. 자세한 내용은 Google Cloud 가격 책정을 참조하세요.

 

BigQuery는 검색(SELECT) 비용으로 쿼리 비용을 측정한다.

저장소에 저장 비용과는 다르게 SELECT는 빈번하게 일어나므로 이를 무분별하게 사용할 경우 많은 비용이 발생할 수 있다.

이러한 비용을 사전에 방지하기 위한 방법을 알아본다.

 

1. 비용 측정기(query console)를 적극 활용한다.

BigQuery GCP 사이트를 통해 미리 비용 측정을 파악한 후 쿼리를 실행하는 습관을 들이자.

 

2. Limit 명령문은 비용과 무관하다.

RDBMS에서 자주 사용하는 LIMIT, TOP 명령어는 BigQuery의 비용 절감 효과와 무관하다.

위에 쿼리 요금 설명에도 강조했듯이, 선택한 열에서 처리된 데이터를 기준으로 비용이 발생되기 때문이다.

이때 LIMIT 명령어는 데이터가 처리된 이후 처리하는 명령어이므로 스캔할 데이터양에 영향을 주지 않는다.

즉 명령문 실행시 동작은 하지만 비용 측면에서는 해당 명령어를 사용할 때와 사용하지 않을 때 동일하다.

 

3. * 사용을 자제한다.

*는 '모든 컬럼'을 선택할 때 주로 사용한다.

그런데 모든 컬럼/데이터를 스캔하게 되면 방대한 양의 데이터를 스캔하는 것과 동일하므로 비용이 크게 부과된다.

성능, 비용 측면에서 모두 좋지 않은 방법이다.

BigQuery 뿐만 아니라 빅데이터 플랫폼을 다룰 때는 특정 조건에 해당하는 필요한 column만 SELECT 해야 한다.

 

4. PARTITION을 사용한다.

partition은 RDBMS의 index와 같은 존재이다.

BigQuery에서는 기본적으로 날짜 파티션을 제공한다. 또한 SELECT 조건에 이를 필수적으로 사용해야 한다.

파티션 테이블을 통해 빠르고, 저렴하게 SELECT할 수 있다.

 

 


Reference

 

반응형

'[Google] > [BQ] BigQuery' 카테고리의 다른 글

[BQ] BigQuery partition  (0) 2023.07.05
[BQ] BigQuery partition limit  (0) 2023.07.05
[BQ] Python에서 BigQuery 실행하기  (0) 2023.04.23
[BigQeury] IFNULL vs. NULLIF  (0) 2023.04.23
[Google] BigQuery에 대하여  (0) 2023.04.15