예약을 사용하여 워크로드 관리
이 페이지에서는 슬롯 예약을 사용하여 BigQuery 워크로드를 관리하는 방법을 설명합니다.
슬롯 예약
BigQuery에서 슬롯은 reservations이라는 풀에 할당됩니다. 예약을 사용하면 조직에 적합한 방식으로 용량을 관리하고 워크로드를 격리할 수 있습니다. 예를 들어 테스트 작업이 리소스를 놓고 프로덕션 작업과 경쟁하지 않도록 프로덕션 워크로드에 대해 prod
라는 예약을 만들고 테스트에 대해 test
라는 별도의 예약을 만들 수 있습니다. 또는 컴퓨팅 비용을 할당하기 위해 조직 내 여러 부서에 대해 예약을 만들 수 있습니다.
이름과 달리 예약의 용량이 반드시 예약되는 것은 아닙니다. 자동 확장 예약을 사용하면 수요에 따라 용량이 자동으로 확장 및 축소됩니다. 또한 유휴 슬롯을 예약 간에 공유할 수 있습니다.
예약 할당
예약에서 할당된 슬롯을 사용하려면 하나 이상의 프로젝트, 폴더 또는 조직에 할당해야 합니다. 프로젝트의 작업이 실행되면 할당된 예약에서 슬롯을 사용합니다. 리소스는 Google Cloud 리소스 계층 구조에서 상위 항목으로부터 할당을 상속받을 수 있습니다. 프로젝트가 예약에 할당되지 않았더라도 상위 폴더 또는 조직이 있으면 이로부터 할당을 상속받습니다.
프로젝트는 리소스 계층 구조에서 자신에게 적용된 가장 구체적인 단일 예약을 사용합니다. 조직 할당보다는 폴더 할당이 우선 적용되고, 폴더 할당보다는 프로젝트 할당이 우선 적용됩니다.
프로젝트에 할당되었거나 상속된 예약이 없으면 해당 작업에 주문형 가격 책정이 사용됩니다. 리소스 계층 구조에 대한 자세한 내용은 BigQuery 리소스 구성을 참조하세요.
할당이 없음을 나타내기 위해 리소스를 None
에 할당할 수 있습니다.
None
에 할당된 프로젝트에는 항상 주문형 가격 책정이 사용됩니다. None
할당의 일반적인 사용 사례는 예약에 조직을 할당한 후 None
을 사용해서 해당 예약으로부터 특정 프로젝트 또는 폴더를 선택하는 것입니다. 자세한 내용은 None
에 프로젝트 할당을 참조하세요.
할당을 만들 때는 해당 할당의 작업 유형을 지정합니다.
QUERY
: SQL, DDL, DML, BigQuery ML(기본 제공 모델) 쿼리를 포함한 비연속 쿼리 작업에 이 예약을 사용합니다.BACKGROUND_CHANGE_DATA_CAPTURE
: 변경 데이터 캡처 BigQuery (CDC) 백그라운드 작업을 실행하기 위해 자체 예약을 사용하도록 선택한 경우 이 예약을 사용합니다. Standard 버전에서는BACKGROUND_CHANGE_DATA_CAPTURE
예약을 사용할 수 없습니다.BACKGROUND_COLUMN_METADATA_INDEX
: 자체 예약을 사용해 BigLake 메타데이터 캐싱 백그라운드 작업을 실행하도록 선택한 경우 이 예약을 사용합니다. 또한 Datastream의 백그라운드 적용 작업으로 소스 데이터베이스를 BigQuery에 복제할 때 이 예약을 사용합니다. Standard 버전에서는BACKGROUND_COLUMN_METADATA_INDEX
예약을 사용할 수 없습니다.BACKGROUND_SEARCH_INDEX_REFRESH
: 자체 예약을 사용해 BigQuery 검색 색인 관리 백그라운드 작업을 실행하도록 선택한 경우 이 예약을 사용합니다. Standard 버전에서는BACKGROUND_SEARCH_INDEX_REFRESH
예약을 사용할 수 없습니다.BACKGROUND
: Datastream의 백그라운드 적용 작업으로 소스 데이터베이스를 BigQuery에 복제할 때 자체 예약을 사용하도록 선택한 경우 이 예약을 사용합니다. 이 예약은 이러한 작업 유형에 대한 더 구체적인 예약이 없는 경우BACKGROUND_CHANGE_DATA_CAPTURE
,BACKGROUND_COLUMN_METADATA_INDEX
,BACKGROUND_SEARCH_INDEX_REFRESH
로 설명된 작업의 대체로도 사용됩니다. Standard 버전에서는BACKGROUND
예약을 사용할 수 없습니다.CONTINUOUS
: 연속 쿼리 작업에 이 예약을 사용합니다.ML_EXTERNAL
: BigQuery 외부 서비스를 사용하는 BigQuery MLCREATE MODEL
쿼리에 이 예약을 사용합니다. 자세한 내용은 BigQuery ML 워크로드에 슬롯 할당을 참조하세요. Standard 버전에서는ML_EXTERNAL
예약을 사용할 수 없습니다.PIPELINE
: 로드 및 추출 작업에 이 예약을 사용합니다.기본적으로 로드 및 추출 작업은 무료이며 공유 슬롯 풀을 사용합니다. BigQuery는 이 공유 풀 또는 표시된 처리량에 대한 용량 가용성을 보장하지 않습니다. 많은 양의 데이터를 로드하는 경우 슬롯을 사용할 수 있을 때까지 작업이 대기할 수 있습니다. 이 경우에는 전용 슬롯을 구매하고
PIPELINE
작업을 여기에 할당해야 할 수 있습니다. 권장사항에 따라 유휴 슬롯 무시가 사용 설정된 상태로 추가적인 전용 예약을 만듭니다. 유휴 슬롯에 대한 자세한 내용은 유휴 슬롯을 참조하세요.로드 및 추출 작업이 예약에 할당되면 무료 풀에 대한 액세스 권한을 상실합니다. 리소스 사용률 및 작업을 모니터링하여 무료 풀을 사용하는 것보다 나은 성능을 위해 해당 예약에 용량이 충분한지 확인해야 합니다.
특정 할당에 개별 슬롯을 할당할 수 없습니다. BigQuery 스케줄러는 예약을 사용하여 작업의 슬롯 할당을 처리합니다. 슬롯 사용 방법에 관한 자세한 내용은 BigQuery의 공정 예약을 참조하세요.
유연하게 예약 할당
BigQuery를 사용하면 런타임에 쿼리를 실행할 예약을 지정할 수 있습니다. 이렇게 하면 리소스 할당을 더 세부적으로 관리하고 불필요한 프로젝트를 만들지 않아도 됩니다. CLI, UI, SQL 또는 API를 사용하여 런타임에 예약을 지정하여 프로젝트, 폴더 또는 조직의 기본 예약 할당을 재정의할 수 있습니다. 할당된 예약은 실행 중인 쿼리와 동일한 리전에 있어야 합니다. 이러한 할당은 모든 버전에서 지원됩니다.
쿼리를 실행할 때 예약을 사용하려면 예약에 대한 액세스 권한이 있어야 합니다.
예약을 유연하게 할당하려면 대화형 쿼리를 실행하고 예약을 지정합니다.
예약과 주문형 결제의 결합
한 리전에서는 용량 기반을 사용하고 다른 리전에서는 주문형을 사용할 수 있습니다. 기본적으로 모든 프로젝트에서 주문형 결제를 사용합니다. 리전 내에서 프로젝트, 폴더 또는 조직을 예약으로 할당하여 용량 기반 결제를 선택할 수 있습니다. 예를 들어 US 멀티 리전에서 슬롯 약정을 구매하고 조직을 기본 예약에 할당한 경우, 조직은 US 멀티 리전에서 용량 기반 결제를 사용하지만 기타 리전에서는 주문형 결제가 유지됩니다.
리전 내에서 프로젝트를 예약에 명시적으로 할당하여 용량 기반과 주문형 결제를 결합할 수 있습니다. 예약에 할당되지 않은 모든 프로젝트는 주문형 결제로 유지됩니다. 예약 ID none
을 할당하여 주문형 결제를 사용하도록 프로젝트를 명시적으로 할당할 수도 있습니다. 이는 폴더나 조직을 예약에 할당했지만 해당 폴더 또는 조직 내의 일부 프로젝트에서 주문형 결제를 사용하는 경우에 유용합니다. 자세한 내용은 프로젝트를 None에 할당을 참조하세요.
주문형 결제가 적용되는 프로젝트는 약정 용량과 별개인 용량을 사용합니다. 이러한 프로젝트는 약정 용량의 가용성에 영향을 미치지 않습니다.
관리 프로젝트 지정
약정과 예약을 만들면 Google Cloud 프로젝트와 연결됩니다. 이 프로젝트는 BigQuery 예약 리소스를 관리하며 이러한 리소스에 대한 결제의 기본 소스입니다. 이 프로젝트는 BigQuery 작업 또는 데이터 세트가 저장된 프로젝트와 동일할 필요는 없습니다.
예약 리소스 전용 프로젝트를 만드는 것이 좋습니다. 이 프로젝트는 약정의 결제 및 관리를 중앙화하므로 관리 프로젝트라고 합니다. 이 프로젝트에 bq-COMPANY_NAME-admin
과 같은 설명이 포함된 이름을 지정합니다. 그런 다음 BigQuery 작업을 저장할 별도의 프로젝트를 하나 이상 만듭니다.
관리 프로젝트와 동일한 조직 리소스 내의 프로젝트만 예약에 할당할 수 있습니다. 관리 프로젝트가 조직의 일부가 아닌 경우 해당 프로젝트만 슬롯을 사용할 수 있습니다.
관리 프로젝트에는 커밋된 슬롯에 대한 요금이 청구됩니다. 슬롯을 사용하는 프로젝트에는 스토리지 요금이 청구되지만 슬롯에 대한 요금은 청구되지 않습니다. 2개 이상의 요금제 유형(예: 연간 및 3년)을 구매하고 슬롯을 동일한 관리 프로젝트에 넣을 수 있습니다.
관리 프로젝트의 수를 제한하는 것이 좋습니다. 이는 결제 관리와 슬롯 할당을 간소화하는 데 도움이 됩니다. 가능한 경우 조직의 모든 예약에 대한 하나의 관리 프로젝트가 권장됩니다. 복잡한 조직에서는 관리 또는 결제 요구사항을 충족하기 위해 관리 프로젝트가 추가로 필요할 수도 있습니다.
여러 관리 프로젝트 사용
경우에 따라 두 개 이상의 관리 프로젝트를 만들어야 할 수 있습니다.
- 여러 예약 및 약정의 비용을 서로 다른 조직 단위로 분리합니다.
- 하나 이상의 슬롯 약정을 서로 다른 예약 집합에 매핑합니다.
유휴 슬롯 용량은 서로 다른 관리 프로젝트의 예약 간에 공유되지 않습니다.
BigQuery Google Cloud 콘솔의 용량 관리 페이지에서 선택한 관리 프로젝트의 예약 및 약정만 볼 수 있습니다.
슬롯 예약 크기 조정
BigQuery는 리소스가 증가할수록 선형 확장되도록 설계되었습니다. 워크로드에 따라, 용량이 점점 늘어나면서 성능도 점점 향상될 수 있습니다. 하지만 용량을 추가하면 비용도 증가합니다. 따라서 구매할 슬롯의 최적 개수는 성능, 처리량, 유틸리티의 요구사항에 따라 달라집니다.
기준 및 자동 확장 슬롯을 실험하여 최적의 슬롯 구성을 파악할 수 있습니다. 예를 들어 기본 슬롯 500개, 1,000개, 1,500개, 2,000개로 워크로드를 테스트하고 성능에 미치는 영향을 확인할 수 있습니다.
슬롯을 할당하고 워크로드를 7일 이상 실행한 후에는 슬롯 에스티메이터를 사용하여 성능을 분석하고 슬롯 확대 또는 축소 효과를 모델링할 수 있습니다.
프로젝트의 현재 슬롯 사용량과 지불하려고 선택한 월별 요금을 확인할 수도 있습니다. 주문형 워크로드는 슬롯 개수를 2,000개 정도로 제한하고 있지만 INFORMATION_SCHEMA.JOBS*
뷰, Cloud Logging, Jobs API 또는 BigQuery 감사 로그를 사용하여 프로젝트에서 실제로 사용 중인 슬롯 수를 확인하는 것이 중요합니다. 자세한 내용은 예약 모니터링을 참조하세요.
예약을 사용하여 워크로드 관리
BigQuery 예약을 사용하면 추가 예약을 만들고 추가 예약에 프로젝트를 할당하여 워크로드, 팀, 부서 간에 용량을 할당할 수 있습니다. 예약은 전체 조직의 유휴 용량을 활용할 수 있도록 하는 추가적인 이점을 갖춘 분리된 리소스 풀입니다.
예를 들어 총 약정 용량은 슬롯 1,000개이고 데이터 과학, ELT, BI와 같은 세 가지 워크로드 유형이 있을 수 있습니다.
- 슬롯 500개를 사용하는
ds
예약을 만들고 모든 관련 Google Cloud 프로젝트를ds
예약에 할당할 수 있습니다. - 슬롯 300개를 사용하는.
elt
예약을 만들고 ELT 워크로드에 사용하는 프로젝트를elt
예약에 할당할 수 있습니다. - 슬롯 200개를 사용하는
bi
예약을 만들고 BI 도구에 연결된 프로젝트를bi
예약에 할당할 수 있습니다.
워크로드 간에 용량을 파티션을 나누는 대신 팀 또는 부서별로 예약을 만들 수도 있습니다.
서로 다른 리전에서 예약 관리
예약은 리전별 리소스입니다. 한 리전에서 구매한 슬롯과 생성한 예약은 다른 리전에서 사용할 수 없습니다. 프로젝트, 폴더, 조직은 한 리전의 예약에 할당할 수 있으며 다른 리전에서는 주문형으로 실행됩니다. 다른 리전의 예약을 관리하려면 BigQuery 용량 관리 페이지에서 리전을 변경해야 합니다.
- BigQuery 콘솔에서 예약을 클릭합니다.
- 위치 선택도구를 클릭하고 예약을 관리할 리전을 선택합니다.
- 리전을 선택한 후에는 슬롯을 구매하고, 예약을 만들고, 프로젝트를 예약에 할당할 수 있습니다.
복잡한 조직에서 예약 관리
예약은 조직 범위 리소스입니다. 예약을 만들 때 동일한 Google Cloud조직 내의 모든 프로젝트에 용량을 할당할 수 있습니다. 대부분의 BigQuery 사용자는 예약 및 약정에 단일 관리 프로젝트를 사용합니다. 관리 프로젝트는 용량 요금이 청구되는 Cloud Billing 계정과 연결됩니다.
하지만 자체 청구서를 관리하는 여러 부서가 있는 복잡한 조직의 경우 여러 관리 프로젝트를 사용하는 것이 나을 수 있습니다. 유휴 슬롯은 동일한 관리 프로젝트에서 생성된 예약 간에만 공유할 수 있습니다. 예약 및 관리 프로젝트의 할당량 및 한도를 고려해야 합니다.
여러 Google Cloud 조직을 사용하는 경우 각 조직에 대해 하나 이상의 관리 프로젝트를 만든 다음, 관련 관리 프로젝트에서 각 조직의 예약 및 약정을 관리해야 합니다. 조직 간에 용량을 공유할 수 없습니다.
예약에 대한 고급 관리
BigQuery의 예약은 예약 사용 방식을 더욱 세밀하게 제어하고 추가 보안 기능을 제공합니다. 특정 예약에 액세스하고 이를 사용할 수 있는 사용자 또는 그룹을 지정하는 정책을 정의할 수 있습니다. 이렇게 하면 민감한 정보와 워크로드가 격리되고 보호됩니다. 예약 관리자는 특정 예약을 사용할 수 있는 사용자 또는 서비스 계정 (주 구성원)을 정확하게 제어할 수 있습니다. 이렇게 하려면 관리 프로젝트 (예약이 관리되는 프로젝트)에 적용된 IAM 조건을 사용합니다.
예를 들어 이름이 특정 접두사로 시작하는 모든 예약에 대해 특정 사용자 그룹에 reservations.use
권한을 부여하는 IAM 조건을 만들 수 있습니다. 이렇게 하면 관련 예약 세트에 대한 액세스를 관리할 수 있습니다.
사용자에게 작업의 기본 예약 설정을 재정의할 수 있는 reservations.use
권한이 있어야 합니다. roles/bigquery.resourceAdmin
및 roles/bigquery.resourceEditor
역할은 이 권한을 제공합니다. 개별 사용자, 그룹 또는 서비스 계정에 액세스 권한을 부여할 수 있습니다. IAM 조건은 속성 기반 액세스 제어를 지원하므로 이름과 같은 예약 속성을 기반으로 정책을 정의할 수도 있습니다.
예약에 대한 IAM 조건을 부여하려면 예약에 대한 액세스 제어를 참고하세요.
슬롯 약정
슬롯 약정에서는 지정된 기간 동안 슬롯을 구매합니다. 슬롯은 최대 리전별 슬롯 할당량까지 50개 단위로 구매할 수 있습니다. 용량 약정은 선택사항이지만 안정적인 상태의 워크로드의 경우 비용을 절약할 수 있습니다. 만들 수 있는 약정 수는 제한이 없습니다. 약정 구매에 성공하는 시점부터 비용이 청구됩니다. 현재 가격 책정 정보는 용량 약정 가격 책정을 참조하세요.
연간 약정. 365일 약정을 구매합니다. 365일 후 약정 요금제를 갱신할지 또는 다른 유형으로 변환할지 선택할 수 있습니다.
3년 약정. 3년 약정을 구매합니다. 3년(1,095일) 후 약정 요금제를 갱신할지 또는 다른 유형으로 전환할지 선택할 수 있습니다.
약정 기간이 끝나면 선택한 갱신 요금제에 따라 약정이 갱신됩니다.
연간 또는 3년 약정 요금제의 월별 요금이 청구됩니다. 하지만 지불 약정은 전체 약정 기간에 대한 것이며 월별로 취소할 수는 없습니다. 사용량은 결제 보고서에서 매일 업데이트되며 언제든지 확인 가능합니다.
슬롯 약정에는 용량 가용성이 적용됩니다. 슬롯 약정 구매를 시도한다고 해서 구매가 보장되는 것은 아닙니다. 하지만 약정 구매에 성공하면 약정이 만료될 때까지 용량을 사용할 수 있습니다.
예약을 만들기 전에 슬롯 약정을 구매하면 편의를 위해 default
라는 예약이 자동으로 생성됩니다. default
예약에는 특별한 동작이 없습니다. 필요에 따라 추가 예약을 만들거나 기본 예약을 사용할 수 있습니다.
가장 예측 가능한 실적과 초기 용량을 위해 예약에 0이 아닌 기준을 할당하는 것이 좋습니다. 기준 슬롯이 0인 예약으로 구성하고 자동 확장 기능을 사용하기 위해 최대 용량을 설정할 수 있지만 이 방법의 효과는 자동 확장이 올바르게 사용 설정되어 있고 슬롯을 적극적으로 획득하는지에 따라 달라집니다. 이러한 제로 기준 예약에 대해 자동 확장 기능이 효과적으로 작동하지 않으면 성능을 보장하지 않고 예측할 수 없거나 저하된 쿼리 속도를 초래할 수 있는 사용 가능한 유휴 슬롯 용량에만 의존하게 됩니다.
약정 갱신
약정 요금제를 구매할 때 갱신 요금제를 선택합니다. 약정이 만료되기 전에 언제든지 약정 갱신 요금제를 변경할 수 있습니다. 다음과 같은 갱신 요금제를 사용할 수 있습니다.
- 없음. 약정 기간이 종료되면 약정이 삭제됩니다. 예약은 영향을 받지 않습니다.
- 연간. 약정 기간이 종료되면 약정이 1년 더 갱신됩니다.
- 3년. 약정 기간이 종료되면 약정이 3년 더 갱신됩니다.
약정 구매 또는 갱신에 대한 자세한 내용은 용량 약정 만들기를 참조하세요.
예를 들어 2019년 10월 5일 오후 6시 1년 약정을 구매했으면 해당 시점부터 비용 청구가 시작됩니다. 2020년 10월 4일 오후 6시 이후에 약정을 삭제하거나 갱신할 수 있습니다. 참고로 2020년은 윤년입니다. 2020년 10월 4일 오후 6시 이전에 다음과 같이 갱신 요금제를 변경할 수 있습니다.
- 연간 약정으로 갱신하도록 선택하면 2020년 10월 4일 오후 6시에 약정이 1년 더 갱신됩니다.
- 3년 약정으로 갱신하도록 선택하면 2020년 10월 4일 오후 6시에 약정이 3년 갱신됩니다.
참고: 약정이 만료된 후 갱신 절차가 완료되기까지 최대 1시간 정도 걸릴 수 있습니다. 예를 들어 약정이 2020년 10월 4일 오후 6시에 만료되는 경우 갱신된 약정 레코드가 2020년 10월 4일 오후 6시~7시 사이에 시스템에 표시됩니다. 생성된 약정의 유효 시작 시간이 오후 6시이므로 이 데이터 업데이트 기간에는 주문형 요금이 청구되지 않습니다.
약정 만료
약정을 만든 후에는 삭제할 수 없습니다.
연간 또는 3년 약정을 삭제하려면 갱신 요금제를 NONE
으로 설정합니다.
약정이 만료되면 자동으로 삭제됩니다. 약정 만료에 대한 자세한 내용은 약정 만료를 참조하세요.
약정을 실수로 구매했거나 약정을 구성할 때 실수한 경우 Cloud Billing 지원팀에 문의하여 도움을 받으세요.
예약 제한사항
- 한 조직의 예약은 다른 조직과 공유할 수 없습니다.
- 각 조직에 대해 별도의 예약과 별도의 관리 프로젝트를 사용해야 합니다.
- 조직마다 활성 예약이 있는 관리 프로젝트가 단일 위치에 최대 10개까지 있을 수 있습니다.
- 유휴 용량은 조직 간에 또는 단일 조직 내 서로 다른 관리 프로젝트 간에 공유될 수 없습니다.
- 약정 및 예약은 리전별 리소스입니다.
한 리전 또는 멀티 리전에서 구매한 약정은 단일 리전 위치가 멀티 리전 위치와 같은 경우에도 다른 리전 또는 멀티 리전에서 예약하는 데 사용할 수 없습니다.
예를 들어
EU
멀티 리전에서 구매한 약정을europe-west4
의 예약에 사용할 수 없습니다. - 약정 및 예약을 한 리전 또는 멀티 리전에서 다른 리전으로 이전할 수 없습니다.
- 한 관리 프로젝트에서 구매한 약정은 다른 관리 프로젝트로 이전할 수 없습니다.
- 하나의 버전으로 구매한 약정은 다른 버전의 예약에 사용할 수 없습니다.
- 유휴 슬롯은 서로 다른 버전의 예약 간에 공유되지 않습니다.
- 자동 확장된 슬롯은 더 이상 필요하지 않을 때 축소되기 때문에 공유할 수 없습니다.
예약 예측 가능성
예약 예측 가능성을 사용하려면 먼저 예약 공정성을 사용 설정해야 합니다.
예약 예측 가능성을 사용하면 예약에서 소비된 슬롯의 절대 최대 수를 설정할 수 있습니다. BigQuery는 기준 슬롯, 유휴 슬롯, 자동 확장 슬롯을 잠재적 용량 리소스로 제공합니다. 최대 크기로 예약을 만들 때 이전 워크로드에 따라 기준 슬롯 수와 자동 확장 및 유휴 슬롯의 적절한 구성을 확인합니다.
예약 예측 가능성을 사용 설정하려면 예약에서 최대 슬롯과 확장 모드의 값을 모두 설정해야 합니다. 최대 슬롯 수는 양수여야 하며 예약에 할당된 기준 슬롯 수보다 커야 합니다. 예약 예측 가능성 작업에 대해 자세히 알아보려면 전용 슬롯이 있는 예약 만들기를 참고하세요.
예약에서 최대 슬롯 값을 설정할 때는 autoscale_max_slots
값을 구성할 수 없습니다.
ignore_idle_slots
값은 스케일링 모드와 일치해야 합니다. 확장 모드가 ALL_SLOTS
또는 IDLE_SLOTS_ONLY
이면 ignore_idle_slots
은 false여야 합니다. 확장 모드가 AUTSOCALE_ONLY
이면 ignore_idle_slots
이 true여야 합니다.
정의된 최대치까지 다음 용량 리소스 조합만 사용하도록 예약을 구성할 수 있습니다.
기준 슬롯 + 유휴 슬롯: 예약 슬롯 용량이 0보다 크고 확장 모드가
IDLE_SLOTS_ONLY
입니다. 예약은 구성된 기준 및 사용 가능한 유휴 슬롯 수를 최대 슬롯 수까지 사용합니다. 사용 가능한 유휴 슬롯이 충분하지 않으면 예약이 최대치에 도달하지 못할 수 있습니다.기준 슬롯 + 유휴 슬롯 + 자동 확장 슬롯: 예약 슬롯 용량이 0보다 크고 확장 모드가
ALL_SLOTS
입니다. 예약은 먼저 구성된 기준 슬롯 수를 소비한 다음 사용 가능한 모든 유휴 슬롯을 소비하고 마지막으로 자동 확장 슬롯을 소비합니다.기준 슬롯 + 자동 확장 슬롯: 예약 슬롯 용량이 0보다 크고 확장 모드가
AUTOSCALE_ONLY
입니다. 예약은 먼저 구성된 기준 슬롯을 사용한 다음 자동 확장 슬롯을 사용합니다.유휴 슬롯 + 자동 확장 슬롯: 예약 슬롯 용량이 0이고 확장 모드가
ALL_SLOTS
입니다. 예약은 먼저 사용 가능한 모든 유휴 슬롯을 사용한 다음 자동 확장 슬롯을 사용합니다.유휴 슬롯: 예약 슬롯 용량이 0이고 확장 모드가
IDLE_SLOTS_ONLY
입니다. 예약은 구성된 최대값까지 사용 가능한 모든 유휴 슬롯을 사용합니다. 사용 가능한 유휴 슬롯이 충분하지 않으면 예약이 최대에 도달하지 못할 수 있습니다.
다음 다이어그램은 사용할 수 있는 다양한 구성 옵션을 보여줍니다.
다이어그램에서 5가지 구성 옵션은 BigQuery가 구성된 최대 슬롯까지 슬롯을 사용하는 방법을 보여줍니다. 처음 세 가지 옵션에는 기준 슬롯이 포함되어 있지만 다른 옵션에는 구성된 기준 슬롯이 없습니다.
제한사항
예약 예측 가능성에는 다음과 같은 제한사항이 적용됩니다.
AUTOSCALE_ONLY
옵션을 선택하지 않는 한 예약 예측 가능성은 Enterprise 및 Enterprise Plus 버전에서만 사용할 수 있습니다.예약 예측 가능성은 최선의 방식으로 제공됩니다. 전체 사용량이 구성된 최댓값을 초과할 수 있습니다.
다음 단계
- 예약 예측 가능성 사용에 대해 자세히 알아보려면 전용 슬롯으로 예약 만들기를 참고하세요.
예약 관련 문제 해결하기
이 섹션은 예약과 상호작용할 때 발생하는 일반적인 문제를 해결하는 데 도움이 됩니다. 예를 들어 BigQuery 작업에 예약이 사용되지 않는 이유를 확인하거나, 알 수 없는 예약을 식별하거나, 슬롯을 추가할 때 발생하는 문제를 해결할 수 있습니다.
예약 크기에 슬롯을 더 추가할 수 없음
예약에 슬롯을 추가하려고 할 때 Failed to allocate slots for reservation in the current system state
또는 Failed to update reservation: Failed to allocate slots for reservation
와 같은 오류가 발생하면 일반적으로 일시적인 문제입니다. 완화하려면 다음을 수행하세요.
- 더 적은 수의 슬롯으로 다시 시도
- 더 적은 수의 슬롯으로 시도했는데 실패하면 15분 동안 기다린 후 작업을 다시 시도하세요.
여러 번 다시 시도하고 30분 동안 기다린 후에도 동일한 오류가 계속 표시되면 BigQuery 지원팀에 문의하세요.
이 요청을 완료할 수 있는 할당량이 부족합니다.
오류 메시지에 There is insufficient quota to complete this request
가 표시되면 요청이 프로젝트에 설정된 할당량 한도를 초과한 것입니다.
이 오류를 해결하려면 다음 옵션 중 하나를 따르세요.
- 할당량 한도를 초과하지 않도록 예약에 더 적은 수의 슬롯을 추가합니다.
- 해당 리전에서 할당량 증가를 요청합니다. 할당량 상향 요청을 참고하세요.
BigQuery에서 작업을 실행하는 데 사용되지 않는 예약
생성된 예약을 사용하는 대신 온디맨드 리소스 또는 무료 공유 슬롯 풀을 사용하여 작업이 실행될 수 있는 시나리오가 여러 개 있습니다.
질문과 예약이 서로 다른 리전에 있음
예약은 리전별 리소스입니다. 쿼리는 쿼리에서 참조하는 테이블과 동일한 위치에서 실행됩니다.
테이블의 위치가 예약의 위치와 일치하지 않으면 쿼리가 공유 슬롯 풀을 사용하여 실행되며 예약이 사용되지 않습니다.
BigQuery Omni 테이블 쿼리
BigQuery Omni 테이블을 쿼리할 때는 예약이 테이블과 동일한 리전에 생성되어 있는지 확인하세요(동일한 위치에 있는 리전이 아님). 동일한 BigQuery 리전에서 예약을 만들면 쿼리가 주문형으로 실행됩니다.
예약이 생성되었지만 프로젝트가 할당되지 않았습니다.
구매한 슬롯을 사용하려면 프로젝트를 특정 예약에 할당하는 할당을 만들어야 합니다. 프로젝트에 해당하는 예약 할당이 있는지 확인합니다.
작업 유형 불일치
할당을 만들 때 올바른 작업 유형을 선택해야 합니다. 그렇지 않으면 공유 슬롯 풀을 사용하여 작업이 실행됩니다.
예를 들어 PIPELINE
를 작업 유형으로 선택하면 모든 쿼리 작업이 주문형으로 실행됩니다. 할당 유형을 QUERY
로 변경하여 예약으로 쿼리 작업을 실행합니다.
멀티 문 쿼리
멀티 문 쿼리를 실행하는 경우 하위 작업이 예약 하에 실행되더라도 상위 작업 객체에는 연결된 예약이 없습니다.
작업에서 실제로 예약을 사용했는지 확인하려면 하위 작업 메타데이터를 확인하세요.
캐시된 결과 가져오기
쿼리 작업이 캐시된 결과를 가져오면 실제 계산이 실행되지 않고 임시 테이블에서 직접 결과를 가져오므로 예약 필드가 비어 있습니다.
변경 데이터 캡처 행 수정 작업
변경 데이터 캡처 (CDC) 테이블이 있는 경우 BigQuery는 max_staleness
간격 내에 보류 중인 행 수정을 백그라운드 작업으로 적용하며, 이 작업은 BACKGROUND
할당 유형을 사용합니다. BACKGROUND
할당이 없으면 주문형 가격이 사용됩니다. 주문형 비용이 많이 발생하지 않도록 프로젝트에 BACKGROUND
할당을 만드는 것이 좋습니다. 작업 식별자 내에 queueworker_cdc_background_merge_coalesce
하위 문자열이 있는 작업을 식별할 수 있습니다.
외부 서비스를 사용하는 BigQuery ML 모델 유형
프로젝트에서 ML_EXTERNAL
작업 유형의 예약 할당을 찾을 수 없는 경우 쿼리 작업은 주문형 가격 책정을 사용하여 실행됩니다. QUERY
작업 유형 할당은 외부 모델이나 행렬 분해 모델이 아닌 BigQuery ML 모델에만 사용할 수 있습니다. 자세한 내용은 예약 할당 문서를 참고하세요.
프로젝트에서 식별된 인식할 수 없는 예약
BigQuery에서 소유하며 BigQuery의 특정 작업에 사용되는 무료 공유 슬롯 풀을 나타내는 예약이 있습니다.
default-pipeline
기본적으로 BigQuery에서 데이터의 일괄 로드 또는 일괄 내보내기를 실행하면 공유 무료 슬롯 풀이 사용됩니다. 이러한 로드 또는 추출 작업을 검사하면 사용된 예약이 default-pipeline
로 표시됩니다.
공유 슬롯 풀을 사용하는 데는 요금이 부과되지 않습니다. 일관되고 예측 가능한 성능을 원한다면 PIPELINE
예약을 구매하는 것이 좋습니다.