슬롯 이해

BigQuery 슬롯은 BigQuery에서 SQL 쿼리, Python 코드 또는 기타 작업 유형을 실행하는 데 사용되는 가상 컴퓨팅 단위입니다. 쿼리를 실행하는 동안 BigQuery는 쿼리에서 사용되는 슬롯 수를 자동으로 결정합니다. 사용되는 슬롯 수는 처리되는 데이터 양, 쿼리의 복잡성, 사용 가능한 슬롯 수에 따라 다릅니다. 일반적으로 더 많은 슬롯에 액세스하면 더 많은 동시 쿼리를 실행할 수 있으며 복잡한 쿼리를 더 빨리 실행할 수 있습니다.

주문형 및 용량 기반 가격 책정

모든 쿼리는 슬롯을 사용하지만 사용량에 대한 요금 청구 방식에는 주문형 가격 책정 모델용량 기반 가격 책정 모델의 두 가지 옵션이 있습니다.

기본적으로 주문형 모델을 사용하여 요금이 청구됩니다. 이 모델에서는 각 쿼리에서 처리된 데이터 양 (TiB 단위)에 따라 요금이 청구됩니다. 주문형 모델을 사용하는 프로젝트에는 일시적 버스트 기능이 포함된 프로젝트별 및 조직별 슬롯 한도가 적용됩니다. 대부분의 주문형 모델 사용자에게는 슬롯 용량 한도가 충분합니다. 하지만 워크로드에 따라 더 많은 슬롯에 액세스하면 쿼리 성능이 향상될 수 있습니다. 계정의 슬롯 사용량을 확인하려면 상태, 리소스 사용률, 작업 모니터링을 참고하세요.

용량 기반 모델을 사용하면 시간이 지남에 따라 쿼리에 할당된 슬롯 용량에 대해 요금을 지불합니다. 이 모델을 사용하면 총 슬롯 용량을 명시적으로 제어할 수 있습니다. 예약을 통해 사용할 슬롯 수를 명시적으로 선택합니다. 예약의 슬롯 수를 항상 할당되는 기준 금액으로 지정하거나 필요할 때 할당되는 자동 확장 금액으로 지정할 수 있습니다. 자동 확장 슬롯이 있는 예약은 워크로드 요구에 맞게 용량을 확장합니다. 워크로드가 변경되면 BigQuery에서 슬롯을 할당합니다. 이를 통해 예약을 사용하는 워크로드의 성능 또는 중요도에 따라 예약의 슬롯 수를 구성할 수 있습니다.

슬롯을 사용한 쿼리 실행

BigQuery는 쿼리 작업을 실행할 때 SQL 문을 일련의 쿼리 스테이지로 구성된 실행 계획으로 변환합니다. 단계는 실행 단계의 집합으로 구성됩니다. BigQuery는 분산 병렬 아키텍처를 사용하여 쿼리를 실행합니다. 스테이지는 병렬로 실행할 수 있는 작업 단위를 모델링합니다. 데이터는 분산 셔플 아키텍처를 사용하여 스테이지 간에 전달됩니다. 이 아키텍처에 대한 자세한 내용은 이 Google Cloud 블로그 게시물을 참고하세요.

BigQuery 쿼리 실행은 동적입니다. 쿼리가 처리되는 동안 쿼리 계획을 수정할 수 있습니다. 스테이지가 추가되면 데이터 배포에 맞게 작업 배포를 최적화할 수 있습니다. 또한 다른 쿼리가 시작되거나 종료되거나 자동 확장 처리 도구에서 예약에 슬롯을 추가하면 쿼리 실행 용량이 변경될 수 있습니다.

BigQuery는 동시에 여러 스테이지를 실행하고, 예측 실행을 사용하여 쿼리 실행 속도를 높이고, 동적으로 파티션을 다시 지정하여 최적의 병렬 처리를 달성할 수 있습니다.

슬롯 리소스 절약 모드

쿼리가 사용 가능한 슬롯보다 더 많은 슬롯을 요청하면 BigQuery는 개별 작업 단위를 큐에 추가한 후 슬롯이 사용 가능해질 때까지 대기합니다. 쿼리 실행이 진행되고 슬롯이 확보되면 큐에 추가된 작업 단위 중 실행 대상 작업이 자동으로 선택됩니다.

BigQuery는 특정 쿼리 스테이지에 대해 아무리 많은 슬롯이라도 요청할 수 있습니다. 요청된 슬롯 수는 구매한 용량과는 관련 없으며, 해당 스테이지에 대해 BigQuery가 결정한 가장 최적의 동시 처리 계수를 나타냅니다. 작업 단위는 큐에 추가되고 슬롯 사용이 가능해지면 실행됩니다.

쿼리 요구가 커밋된 슬롯을 초과해도 추가 슬롯에 대한 비용은 청구되지 않으며, 추가 주문형 요금에 대해서도 비용이 청구되지 않습니다. 개별 작업 단위는 큐에 추가됩니다.

예를 들면 다음과 같습니다.

  1. 쿼리 스테이지에서 2,000개의 슬롯을 요청했지만 1,000개만 사용 가능하다고 가정해 보겠습니다.
  2. BigQuery는 1,000개의 슬롯은 모두 사용하고 나머지 1,000개의 슬롯은 큐에 추가합니다.
  3. 그 후에 100개의 슬롯 작업이 완료되면 큐에 있는 1,000개의 작업 단위에서 100개의 작업 단위가 동적으로 선택됩니다. 작업 단위 900개가 큐에 남게 됩니다.
  4. 그런 다음 500개의 슬롯 작업이 완료되면 큐에 남은 900개의 작업 단위에서 500개의 작업 단위가 동적으로 선택됩니다. 이제 작업 단위 400개가 큐에 남게 됩니다.
요청이 가용 슬롯 수를 초과한 경우 큐에 추가된 BigQuery 슬롯
슬롯 요청이 가용 슬롯 수를 초과한 경우 큐에 추가된 BigQuery 슬롯

워크로드에 예약에서 사용할 수 있는 것보다 많은 슬롯이 필요한 경우 작업이 슬롯을 사용할 수 있을 때까지 기다리므로 작업 런타임이 증가할 수 있습니다. 이를 슬롯 경합이라고 합니다. 워크로드 수요가 예약에 사용할 수 있는 슬롯보다 훨씬 크면 슬롯 경합이 증가할 수 있습니다.

용량 우선순위 지정

BigQuery는 특정 리전에서 슬롯 리소스에 대한 수요가 많은 경우 용량에 우선순위를 지정하여 경합을 관리합니다. 이 우선순위 지정은 상위 등급 용량 모델을 사용하는 고객이 받는 영향을 줄여줍니다. 시스템은 다음 순서로 용량을 우선시합니다.

  1. Enterprise Plus 및 Enterprise 버전 기준선과 약정 용량
  2. Enterprise Plus 자동 확장 처리된 용량입니다.
  3. Enterprise 버전 자동 확장 용량입니다.
  4. Standard Edition 및 주문형 용량

리전에서 경합이 발생하는 경우 시스템에서 상위 등급 버전에 먼저 리소스를 할당하므로 Standard 버전 및 주문형 용량 요청에서 액세스 지연이 발생할 가능성이 더 높습니다.

BigQuery의 공정 예약

BigQuery는 공정 예약이라는 알고리즘을 사용하여 단일 예약 내에서 슬롯 용량을 할당합니다.

BigQuery 스케줄러는 예약 내에서, 그리고 특정 프로젝트의 작업 내에서 쿼리를 실행 중인 프로젝트 간에 슬롯을 균등하게 공유합니다. 스케줄러는 최종 공정성을 제공합니다. 짧은 기간 동안 일부 작업에 슬롯 비율이 일정하지 않을 수 있지만 결과적으로 스케줄러가 이 문제를 해결합니다. 스케줄러의 목표는 실행 중인 태스크를 공격적으로 제거하는 방식(이 경우 슬롯 시간이 낭비됨)과 지나치게 관대한 방식(이 경우 장기 실행 태스크가 포함된 작업의 슬롯 시간 비율이 일정하지 않음) 간에 균형을 찾는 것입니다.

공정 예약은 모든 쿼리가 언제든지 사용 가능한 모든 슬롯에 액세스할 수 있도록 보장하며, 각 쿼리에 필요한 용량의 증감에 따라 활성 쿼리 간에 용량을 동적으로 자동 재할당합니다. 쿼리가 완료되면 새 쿼리가 다음 조건에서 실행되도록 제출됩니다.

  • 새 쿼리가 제출되면 용량은 실행 쿼리 간에 자동으로 재할당됩니다. 각 쿼리에 사용할 수 있는 용량이 추가되면 개별 작업 단위는 상황에 따라 일시 중지, 재개, 큐에 추가될 수 있습니다.
  • 쿼리가 완료될 때마다 해당 쿼리에서 사용된 용량은 자동으로 다른 모든 쿼리에서 즉시 사용할 수 있게 됩니다.
  • 쿼리의 동적 DAG 변경으로 인해 쿼리에 필요한 용량이 변경될 때마다 BigQuery는 이 쿼리와 다른 모든 쿼리용으로 사용 가능한 용량을 자동으로 다시 계산하여 필요에 따라 슬롯을 재할당하거나 일시 중지합니다.
여러 쿼리 간의 BigQuery 슬롯 공정 예약
BigQuery의 공정 예약

복잡성과 크기에 따라 쿼리는 소유권이 있는 슬롯이 모두 필요하지 않을 수도 있고 더 많은 슬롯이 필요할 수도 있습니다. BigQuery는 공정 예약을 통해 모든 슬롯이 언제든지 완전히 소진되도록 합니다.

스케줄러로부터 수신하는 것보다 많은 슬롯이 중요한 작업에 일관적으로 필요한 경우, 필요한 수의 슬롯이 있는 추가 예약을 만들고 작업을 이 예약에 할당할 수 있습니다.

공정한 스케줄링의 예로 다음과 같은 예약 구성이 있다고 가정해 보겠습니다.

  • 자동 확장이 없는 기준 슬롯 1,000개가 있는 예약 A
  • 예약에 할당된 프로젝트 A 및 프로젝트 B

시나리오 1: A 프로젝트에서 높은 슬롯 사용량이 필요한 A 쿼리 (동시 쿼리 1개)를 실행하고 B 프로젝트에서 동시 쿼리 20개를 실행합니다. 예약 A를 사용하는 쿼리가 총 21개이지만 슬롯 분포는 다음과 같습니다.

  • 프로젝트 A에 슬롯 500개가 할당되고 쿼리 A가 슬롯 500개로 실행됩니다.
  • 프로젝트 B에는 20개의 쿼리 간에 공유되는 500개의 슬롯이 할당됩니다.

시나리오 2: 프로젝트 A에서 실행하는 데 슬롯 100개가 필요한 쿼리 A (동시 쿼리 1개)를 실행하고 프로젝트 B에서 동시 쿼리 20개를 실행합니다. 쿼리 A에는 예약의 50% 가 필요하지 않으므로 슬롯 분포는 다음과 같습니다.

  • 프로젝트 A에 100개의 슬롯이 할당되고 쿼리 A가 100개의 슬롯으로 실행됩니다.
  • 프로젝트 B에는 20개의 쿼리 간에 공유되는 900개의 슬롯이 할당됩니다.

반대로 다음 예약 구성을 고려해 보겠습니다.

  • 자동 확장이 없는 기준 슬롯 1,000개가 있는 예약 B
  • 10개의 프로젝트가 모두 B 예약에 할당됩니다.

10개 프로젝트에서 슬롯 수요가 충분한 쿼리를 실행한다고 가정하면 각 프로젝트에서 실행되는 쿼리 수와 관계없이 각 프로젝트에 총 예약 슬롯의 1/10 (또는 100개 슬롯)이 할당됩니다.

슬롯 할당량 및 한도

슬롯 할당량 및 한도는 BigQuery를 위한 보호 장치를 제공합니다. 가격 모델에 따라 다음과 같이 다른 슬롯 할당량 유형이 사용됩니다.

  • 주문형 가격 책정 모델: 일시적 버스트 기능이 포함된 프로젝트 및 조직별 슬롯 한도가 적용됩니다. 워크로드에 따라 더 많은 슬롯에 액세스하면 쿼리 성능이 향상될 수 있습니다.

  • 용량 기반 가격 책정 모델: 예약 할당량 및 한도는 한 위치에서 모든 예약에 할당할 수 있는 최대 슬롯 수를 정의합니다. 자동 확장을 사용하는 경우 최대 예약 크기의 합계가 이 한도를 초과할 수 없습니다. 할당량이 아닌 예약과 약정에 대해서만 요금이 청구됩니다. 슬롯 할당량 증가에 대한 자세한 내용은 할당량 증가 요청을 참고하세요.

사용 중인 슬롯 수를 확인하려면 BigQuery 모니터링을 참고하세요.

유휴 슬롯

어떤 시점에서든 일부 슬롯은 유휴 상태로 유지될 것입니다. 여기에는 다음이 포함될 수 있습니다.

  • 예약 기준에 할당되지 않은 슬롯 약정
  • 예약 기준에 할당되었지만 사용 중이 아닌 슬롯

주문형 가격 책정 모델을 사용하는 경우 유휴 슬롯은 적용되지 않습니다.

기본적으로 예약에서 실행되는 쿼리에는 동일한 리전 및 관리 프로젝트 내의 다른 예약에 있는 유휴 상태의 슬롯이 사용됩니다. BigQuery는 필요하면 할당된 예약에 유휴 슬롯을 즉시 할당합니다. 다른 예약에서 사용 중인 유휴 슬롯은 원래 예약에 필요한 경우 빠르게 선점됩니다. 총 슬롯 사용량이 모든 예약에서 지정한 최댓값을 초과하는 경우도 잠시 있을 수 있지만 이 추가 슬롯 사용량에 대한 요금은 청구되지 않습니다.

예를 들어 다음과 같은 예약 설정이 있다고 가정해 보겠습니다.

  • project_a는 자동 확장이 적용되지 않는 기준 슬롯 500개가 있는 reservation_a에 할당됩니다.
  • project_b는 자동 확장이 없는 100개의 기준 슬롯이 있는 reservation_b에 할당됩니다.
  • 두 예약 모두 동일한 리전 및 관리 프로젝트에 있으며 이러한 예약에 할당된 다른 프로젝트는 없습니다.

project_b에서 query_b를 실행합니다. project_a에서 실행 중인 쿼리가 없으면 query_breservation_a의 유휴 슬롯 500개에 액세스할 수 있습니다. query_b가 계속 실행되는 동안 최대 600개의 슬롯(기준 슬롯 100개 및 유휴 슬롯 500개)을 사용할 수 있습니다.

query_b가 실행되는 동안 500개의 슬롯을 사용할 수 있는 project_a에서 query_a를 실행한다고 가정해 보겠습니다.

  • project_a에 500개의 기준 슬롯이 예약되어 있으므로 query_a가 즉시 시작되고 500개의 슬롯이 할당됩니다.
  • query_b에 할당된 슬롯 수는 100개의 기준 슬롯으로 빠르게 줄어듭니다.
  • project_b에서 실행되는 추가 쿼리는 이러한 100개의 슬롯을 공유합니다. 후속 쿼리에 시작할 슬롯이 충분하지 않으면 실행 중인 쿼리가 완료되고 슬롯이 사용 가능해질 때까지 큐에 추가됩니다.

이 예시에서 project_b가 기준 슬롯이나 자동 확장이 없이 예약에 할당된 경우 query_a 실행이 시작된 후 query_b에는 슬롯이 없습니다. BigQuery는 유휴 슬롯이 사용 가능해지거나 쿼리 시간이 초과될 때까지 query_b를 일시중지합니다. project_b의 추가 쿼리는 유휴 슬롯이 사용 가능해질 때까지 큐에 추가됩니다.

예약에 프로비저닝된 슬롯만 사용되도록 하려면 ignore_idle_slotstrue로 설정합니다. 하지만 ignore_idle_slotstrue로 설정된 예약은 유휴 슬롯을 다른 예약과 공유합니다.

다른 버전의 예약 간에는 유휴 슬롯을 공유할 수 없습니다. 기준 슬롯 또는 약정 슬롯만 공유할 수 있습니다. 자동 확장 슬롯은 일시적으로 사용할 수 있지만 축소될 수 있으므로 다른 예약의 유휴 슬롯으로 공유할 수 없습니다.

ignore_idle_slots이 false이면 예약은 슬롯 수 0개를 가질 수 있으며, 사용되지 않은 슬롯에 여전히 액세스할 수 있습니다. default 예약만 사용하는 경우 권장사항에 따라 ignore_idle_slots을 사용 중지합니다. 그런 후 해당 예약에 프로젝트 또는 폴더를 할당할 수 있고 여기에는 유휴 슬롯만 사용됩니다.

ML_EXTERNAL 유형의 할당은 BigQuery ML 외부 모델 생성 작업에 사용되는 슬롯이 비선점형이라는 측면에서 예외입니다. ML_EXTERNALQUERY 할당 유형의 예약에 포함된 슬롯은 해당 슬롯이 ML_EXTERNAL 작업으로 점유되지 않은 경우에만 다른 쿼리 작업에 사용할 수 있습니다. 또한 이러한 작업은 다른 예약의 유휴 슬롯을 사용할 수 없습니다.

예약 기반 공정성

예약 기반 공정성을 사용하면 BigQuery는 각 예약에서 작업을 실행하는 프로젝트 수와 관계없이 동일한 관리 프로젝트 내의 모든 예약에 유휴 슬롯을 우선순위 지정하고 균등하게 할당합니다. 각 예약은 유휴 슬롯 풀에서 사용 가능한 용량의 유사한 비율을 할당받은 다음 슬롯이 프로젝트 내에 공정하게 분배됩니다. 이 기능은 Enterprise 또는 Enterprise Plus 버전에서만 지원됩니다.

다음 차트는 예약 기반 공정성이 사용 설정되지 않은 경우 유휴 슬롯이 분배되는 방식을 보여줍니다.

유휴 슬롯은 프로젝트 간에 공유됩니다.

이 차트에서 유휴 슬롯은 프로젝트 간에 균등하게 공유됩니다.

예약 기반 공정성이 사용 설정되지 않은 경우 사용 가능한 유휴 슬롯은 예약 내 프로젝트에 균등하게 분배됩니다.

다음 차트는 예약 기반 공정성이 사용 설정된 경우 유휴 슬롯이 분배되는 방식을 보여줍니다.

유휴 슬롯은 예약 간에 공유됩니다.

이 차트에서 유휴 슬롯은 프로젝트가 아닌 예약 간에 균등하게 공유됩니다.

예약 기반 공정성이 사용 설정되면 사용 가능한 유휴 슬롯이 예약 간에 균등하게 분배됩니다.

예약 기반 공정성을 사용 설정한 경우 리소스 소비를 검토하여 슬롯 가용성과 쿼리 성능을 관리하세요.

엄격한 시간 요구사항이 있는 프로덕션 워크로드에는 유휴 슬롯만 사용하지 마세요. 이러한 작업은 기준 또는 자동 확장 슬롯을 사용해야 합니다. 슬롯은 언제든지 선점될 수 있으므로 우선순위가 낮은 작업에는 유휴 슬롯을 사용하는 것이 좋습니다.

슬롯 자동 확장

다음 섹션에서는 슬롯 자동 확장과 예약과의 작동 방식을 설명합니다.

자동 확장 예약 사용

자동 확장 예약을 만들기 전에 슬롯 약정을 구매할 필요는 없습니다. 슬롯 약정은 일관되게 사용되는 슬롯에 대해 할인된 요금을 제공하지만 자동 확장 예약의 경우에는 선택사항입니다. 자동 확장 예약을 만들려면 예약에 최대 슬롯 수(최대 예약 크기)를 할당합니다. 예약에 할당된 선택적 기준 슬롯에서 최대 예약 크기를 빼서 최대 자동 확장 슬롯 수를 확인할 수 있습니다.

자동 확장 예약을 만들 때 다음 사항을 고려하세요.

  • BigQuery는 작업을 실행하는 데 필요한 슬롯 수에 도달하거나 예약에 사용 가능한 최대 슬롯 수에 도달할 때까지 거의 즉각적으로 예약을 확장합니다. 슬롯은 항상 50의 배수로 자동 확장됩니다.
  • 수직 확장은 실제 사용량을 기준으로 하며 가장 가까운 50개 슬롯 단위로 반올림됩니다.
  • 자동 확장된 슬롯은 수직 확장 중에 연결된 버전의 용량 컴퓨팅 가격에 따라 청구됩니다. 사용된 슬롯 수가 아닌 확장된 슬롯 수에 대한 요금이 청구됩니다. BigQuery 수직 확장의 원인이 된 작업이 실패해도 이 요금이 적용됩니다. 따라서 청구 요금과 일치하도록 작업 정보 스키마를 사용하지 마세요. 대신 정보 스키마로 자동 확장 모니터링을 참조하세요.
  • 슬롯 수는 항상 50의 배수로 확장되지만 한 단계에 슬롯 50개를 초과하여 확장될 수도 있습니다. 예를 들어 워크로드에 추가 슬롯 450개가 필요한 경우 BigQuery는 용량 요구사항을 충족하기 위해 한 번에 슬롯 450개로 확장하려고 시도할 수 있습니다.
  • BigQuery는 예약과 관련된 작업에 더 이상 용량이 필요하지 않으면(최소 1분 기준) 축소됩니다.

자동 확장된 용량은 최소 60초 이상 유지됩니다. 이 60초의 기간을 축소 기간이라고 합니다. 새로운 최대 용량이 발생하면 축소 기간이 재설정됩니다. 그러나 마지막으로 용량을 늘린 후 60초 이상이 지났고 수요가 감소한 경우 시스템은 축소 기간을 재설정하지 않고도 용량을 줄여 지연 없이 연속적으로 용량을 감소시킬 수 있습니다.

예를 들어 초기 워크로드 용량이 슬롯 100개로 확장되면 최대 용량이 60초 이상 유지됩니다. 축소 기간 중에 워크로드가 새로운 최대 용량인 슬롯 200개로 확장되면 60초 동안 새로운 축소 기간이 시작됩니다. 이 축소 기간 동안 새로운 최대 용량이 발생하지 않는 경우 60초가 지나면 워크로드가 축소되기 시작합니다.

다음과 같은 상세 예시를 살펴보겠습니다. 12:00:00에 초기 용량이 슬롯 100개로 확장되고 사용량이 1초 동안 지속됩니다. 이 최대 용량은 12:00:00부터 시작하여 최소 60초 이상 유지됩니다. 60초가 경과한 후(12:01:01) 새 사용량이 슬롯 50개인 경우 BigQuery는 슬롯 50개로 축소합니다. 12:01:02에 새 사용량이 슬롯 0개인 경우 BigQuery는 즉시 슬롯 0개로 다시 축소합니다. 축소 기간이 종료된 후 BigQuery는 새로운 축소 기간 없이도 여러 번 연속적으로 축소할 수 있습니다.

자동 확장을 사용하여 작업하는 방법을 알아보려면 자동 확장 슬롯을 사용한 작업을 참고하세요.

기준 및 자동 확장 슬롯이 있는 예약 사용

최대 예약 크기를 지정하는 것 외에도 원하는 경우 예약당 기준 슬롯 수를 지정할 수 있습니다. 기준은 항상 예약에 할당되는 최소 슬롯 수이며 항상 요금이 청구됩니다. 자동 확장 슬롯은 모든 기준 슬롯(해당하는 경우 유휴 슬롯)이 사용된 후에만 추가됩니다. 한 예약의 유휴 기준 슬롯을 용량이 필요한 다른 예약과 공유할 수 있습니다.

몇 분 단위로 예약의 기준 슬롯 수를 늘릴 수 있습니다. 최근에 기준 슬롯 용량을 변경하였고 기준 슬롯이 약정 슬롯을 초과하는 경우 기준 슬롯을 줄이는 것은 1시간에 한 번으로 제한됩니다. 그렇지 않은 경우 몇 분마다 기준 슬롯을 줄일 수 있습니다.

기준 슬롯 및 자동 확장 슬롯은 최근 워크로드를 기준으로 용량을 제공하기 위한 것입니다. 최근 워크로드와 크게 다른 대규모 워크로드가 예상되는 경우 워크로드 용량을 처리하기 위해 자동 확장 슬롯을 사용하는 대신 이벤트에 앞서 기준 용량을 늘리는 것이 좋습니다. 기준 용량을 늘리는 데 문제가 발생하는 경우 15분 후에 요청을 재시도하세요.

예약에 기준 슬롯이 없거나 다른 예약에서 유휴 슬롯을 대여하도록 구성되지 않은 경우 BigQuery는 확장을 시도합니다. 그렇지 않으면 확장 전에 기준 슬롯을 완전히 활용해야 합니다.

예약은 다음 우선순위로 슬롯을 사용하고 추가합니다.

  1. 기준 슬롯
  2. 유휴 슬롯 공유(사용 설정된 경우). 예약은 동일한 버전 및 동일한 리전에서 생성된 다른 예약의 유휴 기준 또는 약정 슬롯만 공유할 수 있습니다.
  3. 자동 확장 슬롯

다음 예시에서는 지정된 기준 수량에서 슬롯을 확장합니다. etldashboard 예약의 기준 크기는 각각 700개, 300개입니다.

약정이 없는 자동 확장 예시

이 예시에서 etl 예약은 슬롯 1,300개(기준 슬롯 700개 및 자동 확장 슬롯 600개)로 확장할 수 있습니다. dashboard 예약이 사용되지 않는 경우 etl 예약은 dashboard 예약에서 슬롯 300개를 사용할 수 있으며(실행 중인 작업이 없는 경우) 사용 가능한 슬롯은 최대 1,600개입니다.

dashboard 예약은 슬롯 1,100개(기준 슬롯 300개 및 자동 확장 슬롯 800개)까지 확장될 수 있습니다. etl 예약이 완전히 유휴 상태이면 dashboard 예약은 최대 1,800개의 슬롯(기준 슬롯 300개, 자동 확장 슬롯 800개, etl 예약의 유휴 슬롯 700개)까지 확장될 수 있습니다.

etl 예약에서 항상 사용 가능한 700개의 기준 슬롯보다 더 많은 슬롯을 필요로 하는 경우 예약에서는 다음 방법을 순서대로 사용하여 슬롯을 추가하려고 시도합니다.

  1. 기준 슬롯 700개
  2. dashboard 예약의 기준 슬롯 300개와 유휴 슬롯 공유. 예약은 유휴 기준 슬롯만 동일한 버전으로 생성된 다른 예약과 공유합니다.
  3. 600개의 추가 슬롯을 최대 예약 크기로 확장

슬롯 약정 사용

다음 예시에서는 용량 약정을 사용하여 슬롯 자동 확장을 보여줍니다.

용량 약정이 있는 예약 자동 확장

예약 기준과 마찬가지로 슬롯 약정을 사용하면 모든 예약에 사용 가능한 고정된 개수의 슬롯을 할당할 수 있습니다. 기준 슬롯과 달리 약정 슬롯은 약정 기간 동안 줄일 수 없습니다. 슬롯 약정은 선택사항이지만 장기간 기준 슬롯이 필요한 경우 비용을 절약할 수 있습니다. 슬롯 약정은 예약의 기준 슬롯을 포함하는 데 사용됩니다. 사용되지 않은 슬롯 용량은 다른 예약에서 유휴 슬롯으로 공유됩니다. 슬롯 약정은 자동 확장 슬롯에 적용되지 않습니다. 약정 슬롯에 대한 할인 요금을 받으려면 슬롯 약정이 기준 슬롯을 충당할 수 있을 만큼 충분해야 합니다.

이 예시에서는 용량 약정 슬롯에 대해 사전 정의된 요금이 청구됩니다. 자동 확장이 활성화되고 예약이 확장 상태인 경우 자동 확장 슬롯 수에 대한 자동 확장 요금이 청구됩니다. 자동 확장 요금의 경우 사용된 슬롯 수가 아닌 확장된 슬롯 수에 대해 요금이 청구됩니다.

다음 예시에서는 기준 슬롯 수가 약정 슬롯 수를 초과하는 경우의 예약을 보여줍니다.

기준 슬롯이 약정 슬롯 수를 초과합니다.

이 예시에서는 두 예약 간의 기준 슬롯이 etl 예약에서 500개, dashboard 예약에서 500개 등 총 1,000개 있습니다. 하지만 약정에는 슬롯 800개만 포함됩니다. 이 시나리오에서는 초과 슬롯에 사용한 만큼만 지불(PAYG) 요율로 요금이 청구됩니다.

사용 가능한 최대 슬롯

기준 슬롯, 최대 자동 확장 슬롯 수, 동일한 버전으로 생성되었지만 기준 슬롯에 포함되지 않는 약정의 모든 슬롯을 더하여 예약에서 사용할 수 있는 최대 슬롯 수를 계산할 수 있습니다. 이전 이미지의 예시는 다음과 같이 설정됩니다.

  • 연간 슬롯 1,000개의 용량 약정. 이러한 슬롯은 etl 예약 및 dashboard 예약에서 기준 슬롯으로 할당됩니다.
  • etl 예약에 할당된 기준 슬롯 700개
  • dashboard 예약에 할당된 기준 슬롯 300개
  • etl 예약의 자동 확장 슬롯 600개
  • dashboard 예약의 자동 확장 슬롯 800개

etl 예약의 경우 가능한 최대 슬롯 수는 etl 기준 슬롯(700)과 dashboard 기준 슬롯(모든 슬롯이 유휴 상태인 경우 300개)에 자동 확장 슬롯의 최대 개수(600개)를 더한 값입니다. 따라서 이 예시에서 etl 예약이 사용할 수 있는 최대 슬롯 수는 1,600개입니다. 이 숫자는 용량 약정의 수를 초과합니다.

다음 예시에서는 연간 약정이 할당된 기준 슬롯을 초과합니다.

예약에서 사용할 수 있는 최대 슬롯 수를 계산하는 방법

이 예시의 조건은 다음과 같습니다.

  • 연간 슬롯 1,600개의 용량 약정
  • 최대 예약 크기 1,500개(자동 확장 슬롯 500개 포함)
  • etl 예약에 할당된 기준 슬롯 1,000개

예약에 사용할 수 있는 최대 슬롯 수는 기준 슬롯(1,000개)과 기준 슬롯 외 약정 유휴 슬롯(약정 슬롯 1,600개 - 기준 슬롯 1,000개 = 600개)에 자동 확장 슬롯(500개)을 더한 값입니다. 따라서 이 예약에서 최대 잠재적 슬롯은 2,100개입니다. 자동 확장된 슬롯은 용량 약정보다 큰 추가 슬롯입니다.

자동 확장 권장사항

  1. 자동 확장 처리를 처음 사용하는 경우 자동 확장 슬롯 수를 과거 및 예상 성능에 기반하여 의미 있는 숫자로 설정합니다. 예약이 생성되면 실패율, 성능, 청구 요금을 적극적으로 모니터링하고 필요에 따라 자동 확장 슬롯 수를 조정합니다.

  2. 자동 확장 처리는 축소하기 전에 최소 1분이 필요하므로 성능과 비용 간에 균형을 맞추기 위해 자동 확장된 최대 슬롯 수를 설정하는 것이 중요합니다. 자동 확장 슬롯의 최대 개수가 너무 크고 작업에서 모든 슬롯을 사용하여 작업을 몇 초 만에 완료할 수 있더라도 1분 동안 최대 슬롯에 대한 비용이 여전히 발생할 수 있습니다. 최대 슬롯 수를 현재의 절반으로 줄이면 예약이 더 낮은 수로 조정되고 작업이 그 1분 동안 더 많은 slot_seconds를 사용할 수 있으므로 낭비가 줄어듭니다. 슬롯 요구사항을 확인하는 방법은 작업 성능 모니터링을 참조하세요. 슬롯 요구사항을 결정하는 다른 방법은 버전 슬롯 추천 보기를 참조하세요.

  3. 슬롯 사용량이 기준 및 확장된 슬롯의 합계를 초과할 수도 있습니다. 기준 및 확장된 슬롯의 합계보다 많은 슬롯 사용량에 대해서는 요금이 청구되지 않습니다.

  4. 자동 확장 처리는 여러 개의 동시 쿼리를 포함하는 워크로드와 같이 장기 실행되는 많은 워크로드에 가장 효율적입니다. 쿼리를 한 번에 하나씩 보내는 것은 피하세요. 쿼리를 보낼 때마다 예약이 확장되어 최소 1분 동안 유지되기 때문입니다. 지속적으로 쿼리를 보내 워크로드가 일정하게 유지되는 경우 기준선을 설정하고 약정을 구매하면 할인된 가격으로 일정한 용량을 사용할 수 있습니다.

  5. BigQuery 자동 확장에는 용량 가용성이 적용됩니다. BigQuery는 과거 사용량을 기준으로 고객의 용량 수요를 충족하려고 합니다. 용량을 보장하기 위해 예약의 보장된 슬롯 수인 선택적 슬롯 기준을 설정할 수 있습니다. 기준을 사용하면 슬롯을 즉시 사용할 수 있으며 사용 여부에 관계없이 비용을 지불합니다. 트래픽이 많은 공휴일과 같은 대규모의 비자연적 수요에 대해 충분한 용량을 갖추려면 몇 주 전에 BigQuery팀에 문의하세요.

  6. 기준 슬롯에는 항상 요금이 청구됩니다. 용량 약정이 만료되면 원치 않는 요금이 청구되지 않도록 예약에 있는 기준 슬롯 양을 수동으로 조정해야 할 수 있습니다. 예를 들어 슬롯 100개와 기준 슬롯 100개가 포함된 1년 약정이 있다고 가정해보겠습니다. 약정이 만료되며 갱신 요금제가 없습니다. 약정이 만료되면 사용한 만큼만 지불로 기준 슬롯 100개에 대한 비용을 지불합니다.

자동 확장 모니터링

자동 확장을 사용하여 슬롯 사용량과 작업 성능을 모니터링하는 방법에 대한 자세한 내용은 자동 확장 모니터링을 참고하세요.

초과 슬롯 사용량

작업이 슬롯을 너무 오래 보유하면 슬롯을 불공정하게 배분받을 수 있습니다. 지연을 방지하기 위해 BigQuery에서는 다른 작업이 추가 슬롯을 빌려 총 슬롯 사용 기간이 지정된 슬롯 용량을 초과할 수 있습니다. 초과 슬롯 사용량은 공정한 분배보다 더 많은 슬롯을 받는 작업에만 귀속됩니다.

초과 슬롯에 대한 요금은 직접 청구되지 않습니다. 대신 작업은 계속 실행되고 초과 사용량이 모두 할당된 용량으로 충당될 때까지 적정 비율로 슬롯 사용량을 누적합니다. 초과 슬롯은 특정한 세부 실행 통계를 제외하고 보고된 슬롯 사용량에서 제외됩니다.

일부 선점 슬롯 대여는 향후 지연을 줄이고 슬롯 비용 가변성 감소 및 꼬리 지연 시간 감소와 같은 다른 이점을 제공하기 위해 발생할 수 있습니다. 슬롯 대여는 총 슬롯 용량의 일부로 제한됩니다.