콘텐츠로 건너뛰기

Google BigQuery 쿼리 처리 방식 및 요금

  • 테크

Google BigQuery를 사용하면서 MYSQL과 같은 관계형 데이터베이스 시스템(RDBMS)을 사용했을때와 다르게 쿼리 작성등을 편하게 하다보니 무분별하게 사용하다 요금 폭탄을 맞거나 하는 경우가 있어 어떠한 방식으로 동작하는지 사용시에 발생하는 요금이 얼마나 되는지를 알아보는 시간을 갖도록 하겠습니다.

Google BigQuery의 동작 방식은 Google Cloud에서 제공하는 서버리스(Serverless) 데이터 웨어하우스 구조를 기반으로 하며, 대용량 데이터를 빠르게 분석할 수 있도록 설계되어 있습니다. 아래는 Google BigQuery의 쿼리 처리 방식 입니다.

1. 서버리스 아키텍처

  • 사용자는 인프라(서버, 클러스터)를 직접 관리하지 않아도 됨
  • Google이 자동으로 리소스를 확장 및 최적화

2. 쿼리 처리 전체 흐름

(1) SQL 입력

(2) Query Planner (실행 계획 수립)

(3) Stage → Step → Task 분할

(4) 노드(Node) + 슬롯(Slot) 병렬 처리

(5) 중간 결과 재조합

(6) 결과 반환

3. 쿼리 처리 구조

(1) SQL 쿼리 실행

(2) Query Planner (실행 계획 수립)

SQL을 실행 가능한 형태로 바꾸고, 성능을 최적화하는 실행 계획을 세우는 시스템

  • SQL → 내부적으로 여러 단계(Scan, Join, Aggregate 등)로 나눔
  • 각 단계에 작업 우선순위, 순서, 리소스 배분 등을 결정
  • 내부적으로 DAG(Directed Acyclic Graph, 비순환 방향 그래프)로 실행 흐름 구성
쿼리 실행 단계 예시
SELECT user_id, COUNT(*)
FROM project.dataset.events
WHERE event_date = '2025-07-06'
GROUP BY user_id
단계설명
1. Scanevents 테이블에서 event_date = '2025-07-06' 파티션만 스캔
2. Filter날짜 조건에 맞는 데이터 필터링
3. Aggregateuser_id 기준으로 COUNT(*) 집계
4. Output결과 반환

각 단계는 Query Planner가 결정합니다. 이때 user_id가 클러스터링되어 있으면 → 더 빠르고 저렴한 실행 계획 생성

(3) STAGE, STEP, TASK 분할

단위설명
Stage쿼리의 상위 연산 단위 (Scan, Join, Aggregate 등)
StepStage 안의 하위 실행 단계 (연산 유형별 세분화)
TaskStep을 처리하는 가장 작은 작업 단위 (병렬 실행 가능)

예: 하나의 쿼리는 3~10개의 Stage로 나뉘고, 각 Stage는 수천 개의 Task로 나뉠 수 있음.

(4) 내부 컴퓨팅 구조: 슬롯(Slot)과 노드(Node)

🧱 Slot

  • BigQuery의 연산 리소스 단위 (CPU + RAM)
  • Task 단위로 할당되어 병렬로 실행
  • On-Demand에서는 Google이 자동으로 슬롯을 할당
  • Flat-rate에서는 고정된 슬롯 수를 예약하여 사용

🖥️ Node

  • 슬롯을 호스팅하는 컴퓨팅 서버 (GCP 내부의 물리/가상 머신)
  • 각 노드는 여러 개의 슬롯을 가짐
  • 노드는 지역/리전 단위로 분산되어 운영됨

(5) 분산 처리: 쿼리를 여러 서버에서 병렬로 분산 실행

(6) 실행 결과는 임시 저장 후 사용자에게 반환

4. 요금

Google BigQuery에서 쿼리를 사용하거나 실행할 때 발생하는 요금은 주로 “읽은 데이터 양(Scanned Data)” 기준으로 부과됩니다.

항목설명
과금 기준쿼리 실행 시 읽은 바이트 수 (스캔된 데이터)
과금 단위$5 / TB (테라바이트 단위), 최소 10MB
재사용 쿼리쿼리 캐시가 작동하면 무료
–dry_run예상 비용 확인 전용 실행 → 요금 없음

big_table이 3TB 규모이고, 파티션 설정이 안 되어 있다면
전체 3TB 읽음 → $15 과금

반면에 event_timeDATE 파티셔닝되어 있고,
해당 조건만 조회한다면
300GB만 읽으면 → $1.5 과금

작업 유형과금 기준대략 요금 (USD)설명 및 특징
CreateBatch Load: 무료무료파일 업로드 (CSV, JSON 등)는 비용 없음
Streaming Insert: 행 단위$0.01 / 200 행실시간 데이터 삽입 시 발생
Read쿼리 스캔 바이트 기준$5 / 1TB 스캔 데이터읽은 데이터 양만큼 과금
쿼리 캐시 재사용무료24시간 내 동일 쿼리 시 캐시 결과 사용
Update업데이트 대상 데이터 스캔$5 / 1TB 스캔 데이터 (읽기 비용) + 저장 비용 발생업데이트는 대상 데이터 전체 스캔 후 변경 부분 저장
Delete삭제 대상 데이터 스캔$5 / 1TB 스캔 데이터 (읽기 비용) + 저장 비용 발생파티션 단위 삭제 권장, 전체 삭제 시 비용 증가

예시로 이해하기

작업 유형상황 설명예상 비용 (USD)
Create (Batch Load)100GB 데이터 CSV 업로드$0 (무료)
Create (Streaming)10,000 행 스트리밍 삽입(10,000 / 200) × $0.01 = $0.50
Read (쿼리)500GB 데이터 스캔(500 / 1024) × $5 ≈ $2.44
Update200GB 대상 데이터 업데이트(200 / 1024) × $5 ≈ $0.98 + 저장 비용
Delete100GB 파티션 삭제(100 / 1024) × $5 ≈ $0.49 + 저장 비용

Google BigQuery를 사용하는데 있어 제한이 없는만큼 데이터양과 CURD 작업 단계에서 부과 되는 요금은 체크하면서 작업하면 좋을 것 같습니다. 프로시저와 스케줄링을 사용하여 자동화하게 되면 주기적으로 실행되기 때문에 생각지도 못한 요금에 대해서 모두 대비하면서 사용하세요.


최신 마케팅/고객 데이터 활용 사례를 받아보실 수 있습니다.
비즈스프링 뉴스레터 구독하기 →

"~에 맞는 제품 추천해줘" 잠재고객은 이제 검색창이 아닌 AI에게 묻습니다. 당신의 브랜드는 AI 대화창에서 추천되고 있습니까?

X