안녕하세요,
베스핀글로벌 GCP Support팀입니다.
이번 아티클에서는 주제로 "BigQuery Slot"을 다루고자 합니다.
BigQuery Slot
BigQuery Slot은 BigQuery가 SQL 쿼리를 실행하는 데 사용하는 가상 CPU입니다. [1]
BigQuery는 쿼리 크기와 복잡성에 따라 각 쿼리에 필요한 Slot 수를 자동으로 계산합니다.
서버리스 제품인 BigQuery에서 사용되는 리소스 단위로서, 100개 단위로 예약,할당, 스케일 변경(증감 및 감소)이 일어납니다.
따라서 BigQuery를 사용 시에는 실제 얼마 만큼의 Slot이 사용되는가에 따라 비용을 계산할 수 있습니다.
BigQuery의 가격 정책 모델은 2가지로 나뉘며 아래와 같습니다.
- 주문형 가격 책정 모델 : Slot 가격이 아닌 BigQuery로 처리한 용량(processed bytes) 만큼 비용을 지불
- 용량 기반 가격 책정 모델 : 예약할 Slot 수를 명시적으로 선택하여 해당 범위 안에서 사용되는 Slot 수 만큼 비용을 지불
용량 기반 가격 책정 모델의 경우 최소 할당량(Baseline)과 최대 할당량(Max size)을 설정하여 그 범위 안에서 실제 Slot이 필요한 만큼 자동 확장이 이루어지게 됩니다.
Edition 타입별로 지원하는 기능이 다른 점도 반드시 확인하시기 바랍니다.
비용 및 Edition에 대한 자세한 내용은 가격 책정 문서[2]를 참고하시기 바랍니다.
BigQuery를 비용효율적으로 사용하기 위해서는 적합한 양의 Slot을 예약 하는 것이 중요합니다.
또한 Slot은 리전별 리소스 임으로, 반드시 내가 사용해야할 리전의 Slot을 예약해야 합니다.
※ BigQuery Capacity Management 창에서 Location을 실제 사용하는 리전으로 설정하세요.
유휴(Idle) Slot
BigQuery 유휴 Slot은 해당 조직 내에 예약 중인 Flat-rate pricing Slot 중 다른 프로젝트나 폴더에 할당되어 있지만 현재 할당된 리소스에서 사용하지 않는 Slot이나 할당 자체가 되어있지 않은 Slot을 의미합니다.[3]
기본적으로 BigQuery에서 실행되는 쿼리는 다른 예약의 유휴 Slot을 자동으로 사용하게 됩니다.
※ 프로젝트는 단일 리전에서 최대 1개의 예약에 할당될 수 있기에 조직 내 Slot을 공유하여 사용하기 위해서는 유휴 Slot이 필요합니다.
이해를 위해 간단하게 예시를 들어보겠습니다.
A프로젝트에 500 Slot을 할당하고 B프로젝트에 500 Slot을 할당한 조직을 가지고 있는 경우,
B프로젝트가 BigQuery 작업이 없어 500 Slot을 사용하지 않는 경우, A프로젝트에서 작업중인 Query는 최대 1000 Slot을 사용할 수 있습니다.
유휴 Slot을 사용하지 않고 각 프로젝트 별로 할당된 Slot만 사용하도록 설정하고 싶은 경우에는 예약의 ignore_idle_slots을 true로 설정합니다.
ignore_idle_slots 설정이 된 프로젝트의 예약은 유휴 슬롯을 받지 않기 때문에 할당된 Slot 만큼만을 사용하게 됩니다.
참조 링크
[1] BigQuery Slot
https://cloud.google.com/bigquery/docs/slots
[2] BigQuery 가격 정책
https://cloud.google.com/bigquery/pricing
[3] 유휴 슬롯
https://cloud.google.com/bigquery/docs/slots#idle_slots
관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.
감사합니다.