슬롯 약정 구매 및 관리

BigQuery Reservation API를 사용하면 전용 슬롯(약정)을 구입하고, 슬롯 풀(예약)을 만들고, 이러한 예약에 프로젝트, 폴더, 조직을 할당할 수 있습니다.

용량 약정은 일부 최소 기간 동안 사용할 BigQuery 컴퓨팅 용량을 구매하는 것입니다. 버전을 사용하여 예약을 만들 때 용량 약정을 구매하는 것은 선택사항이지만 비용을 적약할 수 있습니다.

약정은 리전별 리소스입니다. 한 리전 또는 멀티 리전에서 구매한 약정을 다른 리전 또는 멀티 리전에서 사용할 수 없습니다. 약정은 리전 간에 또는 리전과 멀티 리전 간에 이동할 수 없습니다.

Reservations API 사용 설정

BigQuery Reservation API는 기존 BigQuery API와는 완전히 다르며 독립적으로 사용 설정해야 합니다. 자세한 내용은 API 사용 설정 및 중지를 참조하세요.

  • API의 이름은 'BigQuery Reservations API'입니다.
  • BigQuery Reservation API의 엔드포인트는 bigqueryreservation.googleapis.com입니다.

API 사용 설정

슬롯 구매

최소 시간 동안 용량을 예약하려면 용량 약정을 구매하면 됩니다. 이렇게 하면 할인을 받고 비용을 절약할 수 있습니다. 구체적인 비용에 대한 자세한 내용은 BigQuery 가격 책정을 참조하세요.

필수 권한

용량 약정을 만들려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • 약정의 소유권을 유지하는 관리 프로젝트bigquery.capacityCommitments.create

사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin

BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.

용량 약정 만들기

약정은 리전별 리소스입니다. 한 리전 또는 멀티 리전에서 구매한 약정을 다른 리전 또는 멀티 리전에서 사용할 수 없습니다. 약정은 리전 간에 또는 리전과 멀티 리전 간에 이동할 수 없습니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 약정 만들기를 클릭합니다.

  4. 구성에서 다음 안내를 따르세요.

    1. 위치를 선택합니다.
    2. 용량 모델 섹션에서 용량 모델을 선택합니다.
    3. 자동 확장(버전) 옵션을 선택하는 경우 다음 안내를 따르세요.
      1. 버전 목록에서 버전을 선택합니다. 용량 약정은 Enterprise 및 Enterprise Plus 버전에서만 지원됩니다. 자동 확장은 한 버전 내에서만 사용할 수 있습니다. 버전에 대한 자세한 내용은 BigQuery 버전 소개를 참조하세요.
    4. 약정 요금제가 지정되는 약정 기간을 선택합니다.
    5. 연간 약정을 구매하는 경우 약정이 만료될 때 적용할 갱신 요금제를 선택합니다.

      1. 매년 갱신. 연간 약정이 만료되면 연간 약정으로 1년 더 갱신됩니다.

      자세한 내용은 약정을 참조하세요.

    6. 구매하려는 슬롯 수를 입력합니다.

    7. 다음을 클릭합니다.

  5. 구매 예상 비용을 검토합니다.

  6. 확인 및 제출에서 다음을 수행합니다.

    1. CONFIRM을 입력하여 구매를 확인합니다.
    2. 구매를 클릭하여 슬롯을 구입합니다.
  7. 약정을 보려면 슬롯 약정 보기를 클릭합니다. 용량이 프로비저닝되면 요청된 용량 약정이 녹색 상태가 됩니다.

용량을 처음 구입할 때는 default 예약이 생성됩니다.

SQL

용량 약정을 만들려면 CREATE CAPACITY DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    CREATE CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`
    OPTIONS (
      slot_count = NUMBER_OF_SLOTS,
      edition = EDITION,
      plan = 'PLAN_TYPE');

    다음을 바꿉니다.

    • ADMIN_PROJECT_ID: 이 약정의 소유권을 유지할 관리 프로젝트의 프로젝트 ID입니다.
    • LOCATION: 약정 위치입니다.
    • COMMITMENT_ID: 약정 ID입니다.

      프로젝트 및 위치별로 고유해야 합니다. 소문자 또는 숫자로 시작하고 끝나야 하며 소문자, 숫자, 대시만 포함할 수 있습니다.

    • NUMBER_OF_SLOTS: 구입할 슬롯 수
    • EDITION: 용량 약정과 연결된 버전입니다. Enterprise 또는 Enterprise Plus 버전에서만 용량 약정을 만들 수 있습니다. 버전에 대한 자세한 내용은 BigQuery 버전 소개를 참조하세요.
    • PLAN_TYPE: ANNUAL 또는 THREE_YEAR 등의 요금제 유형입니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

--capacity_commitment 플래그와 함께 bq mk 명령어를 사용하여 슬롯을 구입합니다.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    --edition=EDITION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN_TYPE \
    --slots=NUMBER_OF_SLOTS

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 이 약정의 소유권을 유지할 관리 프로젝트의 프로젝트 ID입니다.
  • LOCATION: 약정 위치입니다.
  • EDITION: 용량 약정과 연결된 버전입니다. Enterprise 또는 Enterprise Plus 버전에서만 용량 약정을 만들 수 있습니다. 버전에 대한 자세한 내용은 BigQuery 버전 소개를 참조하세요.
  • PLAN_TYPE: ANNUAL 또는 THREE_YEAR 등의 요금제 유형입니다.
  • RENEWAL_PLAN_TYPE: NONE, ANNUAL, THREE_YEAR 등의 갱신 요금제 유형입니다.
  • NUMBER_OF_SLOTS: 구매할 슬롯 수입니다.

용량 약정 보기

필수 권한

약정을 보려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

BigQuery에서 IAM 역할에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.

프로젝트별 용량 약정 보기

프로젝트별로 용량 약정을 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 슬롯 약정 탭을 클릭합니다. 용량 약정은 약정 아래 표에 나와 있습니다.

SQL

관리 프로젝트의 약정을 보려면 INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT를 쿼리합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    SELECT
      capacity_commitment_id
    FROM
      `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
    WHERE
      project_id = 'ADMIN_PROJECT_ID'
      AND slot_count = 100;

    다음을 바꿉니다.

    • LOCATION: 약정의 위치입니다.
    • ADMIN_PROJECT_ID: 약정을 소유한 관리 프로젝트의 프로젝트 ID입니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

--capacity_commitment 플래그와 함께 bq ls 명령어를 사용하여 관리 프로젝트의 약정을 나열합니다.

bq ls \
    --capacity_commitment=true \
    --location=LOCATION \
    --project_id=ADMIN_PROJECT_ID

다음을 바꿉니다.

  • LOCATION: 약정의 위치입니다.
  • ADMIN_PROJECT_ID: 약정을 소유한 관리 프로젝트의 프로젝트 ID입니다.

용량 약정 업데이트

용량 약정을 다음과 같이 업데이트할 수 있습니다.

  • 약정의 갱신 요금제를 업데이트합니다.
  • 약정을 기간이 더 긴 약정 요금제로 전환합니다.
  • 약정을 2개의 약정으로 분할합니다.
  • 2개 약정을 1개 약정으로 병합합니다.

필수 권한

용량 약정을 업데이트하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • 약정의 소유권을 유지하는 관리 프로젝트bigquery.capacityCommitments.update

사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin

BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.

약정 갱신

연간 약정에는 연간 약정을 만들거나 전환할 때 지정되는 갱신 요금제가 있습니다. 약정 종료일 전에 언제든지 연간 약정 갱신 요금제를 변경할 수 있습니다.

콘솔

다음과 같이 연간 약정에 대해 갱신 요금제를 변경할 수 있습니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 슬롯 약정 탭을 클릭합니다.

  4. 수정하려는 약정을 찾습니다.

  5. 작업을 클릭한 후 갱신 요금제 수정 옵션을 선택합니다.

  6. 새 갱신 요금제를 선택합니다.

bq

연간 약정의 갱신 요금제 선택을 변경하려면 --capacity_commitment 플래그--renewal_plan 플래그와 함께 bq update 명령어를 사용합니다.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --renewal_plan=PLAN_TYPE \
    --capacity_commitment=true \
    COMMITMENT_ID

다음을 바꿉니다.

약정을 더 긴 기간으로 변환

언제든지 다음과 같이 장기 약정 유형으로 약정을 전환할 수 있습니다.

약정을 업데이트하는 즉시 새 요금제와 관련된 요금이 청구되고 종료일이 재설정됩니다.

약정을 전환하려면 --plan 플래그와 함께 bq update 명령어를 사용합니다.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN \
    --capacity_commitment=true \
    COMMITMENT_ID

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 약정 위치입니다.
  • PLAN_TYPE: ANNUAL 또는 THREE_YEAR 등의 요금제 유형입니다.
  • RENEWAL_PLAN: 갱신 요금제입니다.

    PLAN_TYPEANNUAL인 경우에만 적용됩니다.

  • COMMITMENT_ID: 약정 ID입니다.

    ID를 얻으려면 구매한 약정 보기를 참조하세요.

약정 분할

약정을 2개의 약정으로 분할할 수 있습니다. 이는 약정의 일부를 갱신하려고 할 때 유용합니다. 예를 들어 1,000개 슬롯의 연간 약정이 있으면 이 중에서 300개 슬롯을 새로운 약정으로 분할하고, 700개 슬롯은 원래 약정으로 남겨둘 수 있습니다. 그런 후 700개 슬롯을 연간 요금제로 갱신하고, 300개 슬롯을 3년 약정으로 변환할 수 있습니다.

약정을 분할할 때 새 약정에는 원래 약정과 동일한 요금제 및 동일한 약정 종료일이 적용됩니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 슬롯 약정 탭을 클릭합니다.

  4. 분할할 약정을 선택합니다.

  5. 분할을 클릭합니다.

  6. 약정 분할 페이지에서 분할 구성 슬라이더를 사용하여 각 분할에 넣을 슬롯 수를 100개 단위로 선택합니다.

  7. 분할을 클릭하여 약정을 분할합니다. 새 약정이 슬롯 약정 탭에 나열됩니다.

bq

약정을 분할하려면 bq update 명령어를 사용합니다.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --split \
    --slots=SLOTS_TO_SPLIT \
    --capacity_commitment=true \
    COMMITMENT_ID

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 약정 위치입니다.
  • SLOTS_TO_SPLIT은 원래 약정을 새 약정으로 분할할 슬롯 수입니다.
  • COMMITMENT_ID: 약정 ID입니다.

    ID를 얻으려면 구매한 약정 보기를 참조하세요.

2개 약정 병합

여러 개의 약정을 하나의 약정으로 병합할 수 있습니다. 병합할 약정은 모두 동일한 유형(ANNUAL 또는 THREE_YEAR)이어야 합니다. 결합된 약정의 종료일은 원래 약정의 최대 종료일입니다. 약정 종료 날짜가 과거인 경우 이후 날짜로 연장되고 해당 슬롯에 대해 일할 계산된 금액이 청구됩니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 슬롯 약정 탭을 클릭합니다.

  4. 병합할 약정을 선택합니다.

  5. 병합을 클릭합니다.

  6. 병합 약정 페이지에서 병합의 세부정보를 검토하고 병합을 클릭합니다. 새로 병합된 약정은 슬롯 약정 탭에 나열됩니다.

bq

두 개의 약정을 하나의 약정으로 병합하려면 bq update 명령어를 사용합니다.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --merge=true \
    --capacity_commitment=true \
    COMMITMENT1,COMMITMENT2

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 약정의 위치입니다.
  • COMMITMENT1: 병합할 첫 번째 약정입니다.
  • COMMITMENT2: 병합할 두 번째 약정입니다.

약정 만료

약정 기간이 종료되면 약정이 만료됩니다. 여전히 활성 상태인 약정을 삭제할 수 없습니다. 갱신 요금제가 NONE으로 설정되면 약정이 자동으로 삭제됩니다. 그렇지 않으면 갱신 요금제에 따라 연간 또는 3년 약정으로 갱신됩니다. 갱신 요금제를 NONE으로 변경하려면 약정 갱신의 단계를 수행합니다.

약정을 갱신한 후에는 시작 시간 값이 변경되지 않습니다. 원래 약정의 시작 시간을 나타냅니다. 종료 시간의 값은 갱신된 약정이 만료되는 시간입니다. 예를 들어 2022년 12월 13일에 생성된 연간 약정이 하나 있는데 2023년 12월 13일에 갱신된다고 가정하겠습니다. 2023년 12월 14일에 약정 세부정보를 조회하면 시작 시간 값은 2022년 12월 13일이고 종료 시간 값은 2024년 12월 12일입니다.

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

용량 약정 생성 제어

IAM 거부 정책을 사용하여 용량 약정을 만들 수 있는 사용자를 추가로 제어할 수 있습니다.

거부 정책은 일부 사용자 또는 사용자 전체를 대상으로 생성할 수 있으며, 이러한 정책은 예외 및 조건을 사용하여 구성할 수 있습니다.

예를 들어 다음 정책은 주 구성원 'lucian@example.com'을 제외한 모든 사용자가 용량 약정을 생성할 수 있는 권한을 거부합니다.

{
  "deniedPrincipals": [
    "principalSet://goog/public:all"
  ],
  "deniedPermissions": [
    "bigquery.googleapis.com/capacityCommitments.create"
  ],
  "exceptionPrincipals": [
    "principal://goog/subject/lucian@example.com"
  ]
}

그런 다음 이 정책을 조직에 연결하여 약정을 만들 수 있는 사용자를 제어할 수 있습니다.

이러한 정책은 IAM 역할보다 우선 적용되므로 bigquery.admin 역할을 가진 사용자라도 정책을 삭제하거나 수정하지 않는 한 약정을 생성할 수 없습니다.

자세한 내용은 리소스 액세스 거부를 참조하세요.

용량 약정 문제 해결

이 섹션에서는 BigQuery 예약을 사용하는 데 문제가 발생할 경우 도움이 될 수 있는 문제 해결 단계를 설명합니다.

구매한 슬롯 대기 중

슬롯은 사용 가능한 용량에 따라 달라집니다. 슬롯 약정을 구매하고 BigQuery가 이를 할당하면 상태 열에 체크표시가 나타납니다. BigQuery가 요청된 슬롯을 즉시 할당할 수 없으면 상태 열이 대기 상태로 유지됩니다. 슬롯을 사용할 수 있으려면 몇 시간 정도 기다려야 할 수 있습니다. 슬롯에 더 빠르게 액세스해야 하면 다음을 시도해보세요.

  1. 대기 중인 약정을 삭제합니다.
  2. 더 적은 수의 슬롯에 대한 새 약정을 구매합니다. 용량에 따라 소규모 약정은 즉시 활성화될 수 있습니다.
  3. 나머지 슬롯을 별도의 약정으로 구매합니다. 이러한 슬롯은 상태 열에서 대기 중으로 표시될 수 있지만 일반적으로 몇 시간 내에 활성화됩니다.
  4. 선택사항: 두 약정을 모두 사용할 수 있는 경우 두 약정 모두 동일한 요금제로 구매했다면 단일 약정으로 병합할 수 있습니다.

슬롯 약정이 실패하거나 완료하는 데 시간이 오래 걸릴 경우 일시적으로 주문형 가격 책정을 사용하는 것이 좋습니다. 이 솔루션을 사용하면 예약에 할당되지 않은 다른 프로젝트에서 중요한 쿼리를 실행해야 할 수 있습니다. 또는 프로젝트 할당을 완전히 삭제해야 할 수도 있습니다.