일반 게시판

슬롯 이해

profile_image 금자씨     1건    303회    23-12-05 16:04
슬롯 이해

BigQuery 슬롯은 SQL 쿼리를 실행하기 위해 BigQuery에 사용되는 가상 CPU입니다. 쿼리 실행 중 BigQuery는 쿼리 크기와 복잡성에 따라 쿼리에 필요한 슬롯 수를 자동으로 계산합니다.

주문형 가격 책정 모델 또는 용량 기반 가격 책정 모델을 사용할 수 있습니다. 두 모델 모두 데이터 처리를 위해 슬롯이 사용됩니다. 용량 기반 모델을 사용하면 전용 또는 자동 확장된 쿼리 처리 용량을 지불할 수 있습니다. 용량 기반 모델은 슬롯 및 분석 용량을 명시적으로 제어할 수 있지만, 주문형 모델은 그렇지 않습니다.

용량 기반 가격 책정 모델의 고객은 예약할 슬롯 수를 명시적으로 선택합니다. 쿼리는 해당 용량 범위 내에서 실행되며, 배포되는 매 초 동안 지속적으로 해당 용량의 비용을 지불합니다. 예를 들어 2,000개의 BigQuery 슬롯을 구매하면 집계 내의 쿼리가 언제든 2,000개 이하의 가상 CPU만 사용하도록 제한됩니다. 삭제할 때까지 이 용량이 제공되며 슬롯 2,000개에 대한 비용이 청구됩니다.

BigQuery 주문형 가격 책정 모델의 프로젝트는 일시적 버스트 기능이 포함된 프로젝트당 슬롯 할당량을 따릅니다. 대부분의 주문형 모델 사용자에게는 기본 슬롯 용량이면 충분합니다. 워크로드에 따라 슬롯을 늘리면 쿼리 성능이 향상됩니다. 계정에서 사용하는 슬롯 수를 확인하려면 BigQuery 모니터링을 참조하세요.

슬롯을 사용한 쿼리 실행

BigQuery는 쿼리 작업 실행 시 선언적 SQL 문을 실행 그래프로 변환하고 일련의 쿼리 스테이지로 세분화합니다. 각 쿼리 스테이지에는 더 세분화된 실행 단계 조합이 있습니다. BigQuery는 크게 분산된 병렬 아키텍처를 사용하여 이러한 쿼리를 실행하며, 스테이지는 많은 잠재적 작업자들이 동시에 실행할 수 있는 작업 단위를 모델링합니다. 스테이지는 빠른 분산 셔플 아키텍처를 통해 서로 통신합니다. 이 아키텍처에 대한 자세한 내용은 Google Cloud 블로그를 참조하세요.

BigQuery 쿼리 실행은 동적입니다. 즉, 쿼리가 실행되는 동안 쿼리 계획이 수정될 수 있습니다. 쿼리가 실행 중인 동안에 스테이지를 도입하는 목적은 쿼리 작업자 전체의 데이터 배포를 향상시키기 위한 경우가 많습니다.

BigQuery는 동시에 여러 스테이지를 실행할 수 있습니다. BigQuery는 쿼리 실행 속도를 높이기 위해 예측 실행을 활용하고, 동시 처리를 최적화하기 위해 스테이지의 파티션을 동적으로 나눌 수 있습니다.

BigQuery 슬롯은 쿼리의 각 스테이지별로 개별 작업 단위를 실행합니다. 예를 들어 BigQuery에서 스테이지의 최적 동시 처리 계수를 10으로 결정하면 해당 스테이지를 처리하기 위해 10개의 슬롯을 요청합니다.

슬롯 리소스 절약 모드로 쿼리 실행

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

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

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

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

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

BigQuery의 공정 예약

슬롯은 여러 프로젝트 간 그리고 프로젝트 내의 여러 작업 내에 균등하게 배포됩니다. 즉, 모든 쿼리는 언제든지 사용 가능한 모든 슬롯에 액세스할 수 있으며, 각 쿼리에 필요한 용량의 증감에 따라 활성 쿼리 간에 용량을 동적으로 자동 재할당됩니다. 쿼리가 완료되면 새 쿼리가 다음 조건에서 실행되도록 제출됩니다.

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

  댓글(1)

  • profile_image 진상님의 댓글 작성일

    ㄱㅅ

To Top