컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

클러스터링된 테이블 소개

BigQuery의 클러스터링된 테이블은 클러스터링된 열을 사용하여 사용자 정의 열 정렬 순서가 있는 테이블입니다. 클러스터링된 테이블을 사용하면 쿼리 성능을 높이고 쿼리 비용을 줄일 수 있습니다.

BigQuery에서 클러스터링된 열은 클러스터링된 열의 값을 기준으로 스토리지 블록을 정렬하는 사용자 정의 테이블 속성입니다. 스토리지 블록 크기는 테이블 크기에 따라 조정됩니다. 클러스터링된 테이블에서는 해당 테이블을 수정하는 각 작업과 관련하여 정렬 속성이 유지됩니다. 클러스터링된 열을 기준으로 필터링 또는 집계하는 쿼리는 전체 테이블 또는 테이블 파티션 대신 클러스터링된 열을 기준으로 관련 블록만 스캔합니다. 그 결과 BigQuery가 쿼리에 의해 처리되는 바이트나 쿼리 비용을 정확히 예측하지 못할 수도 있지만, 실행 시 총 바이트 수를 줄이려고 시도합니다.

여러 열을 사용하여 테이블을 클러스터링할 경우 열 순서는 BigQuery가 데이터를 정렬하여 스토리지 블록으로 그룹화할 때 우선 적용되는 열을 결정합니다. 다음 예시에서는 클러스터링되지 않은 테이블의 논리 스토리지 블록 레이아웃과 클러스터링된 열이 한 개 이상 있는 클러스터링된 테이블의 레이아웃과 비교합니다.

BigQuery는 쿼리 성능을 개선하기 위해 클러스터링된 테이블의 데이터를 정렬합니다.

클러스터링된 테이블을 쿼리하는 경우 쿼리 실행 전에 스캔할 스토리지 블록 수를 알 수 없으므로 쿼리 실행 전에 정확한 쿼리 비용 예상치가 제공되지 않습니다. 최종 비용은 쿼리 실행이 완료된 후 결정되며 스캔된 특정 스토리지 블록을 기반으로 합니다.

클러스터링을 사용해야 하는 경우

다음과 같은 경우 클러스터링을 고려할 수 있습니다.

  • 쿼리는 일반적으로 특정 열을 필터링합니다. 이 클러스터링은 쿼리가 필터와 일치하는 블록만 스캔하므로 쿼리 속도가 빨라집니다.
  • 쿼리는 고유한 값이 많은(카디널리티가 높은) 열을 기준으로 필터링합니다. 클러스터링은 BigQuery에 입력 데이터를 가져올 위치에 대한 자세한 메타데이터를 제공하여 이러한 쿼리를 가속화합니다.
  • 쿼리를 실행하기 전에 엄격한 비용 추정이 필요하지 않습니다.

다음과 같은 경우 클러스터링의 대안을 고려할 수 있습니다.

  • 쿼리를 실행하려면 먼저 엄격한 쿼리 비용 추정이 필요합니다. 클러스터링된 테이블의 쿼리 비용은 쿼리가 실행된 후에만 확인할 수 있습니다.
  • 쿼리 테이블이 1GB보다 작습니다. 일반적으로 클러스터링은 1GB 미만의 테이블에 대해 상당한 성능 이점을 제공하지 않습니다.

클러스터링은 테이블 저장 방법을 설명하기 때문에 일반적으로 쿼리 성능을 향상시키기 위한 좋은 방법입니다. 다른 메서드나 추가 메서드가 필요하면 테이블 파티션 나누기를 사용하는 것이 좋습니다.

클러스터링과 마찬가지로 파티션 나누기는 사용자 정의 파티션 열을 사용하여 데이터의 파티션 나누기 방법과 각 파티션에 저장되는 데이터를 지정합니다. 클러스터링과 달리 파티션 나누기는 쿼리를 실행하기 전에 세분화된 쿼리 비용 추정치를 제공합니다. 클러스터링과 마찬가지로 파티션 나누기가 반드시 쿼리에서 스캔되는 데이터의 볼륨을 줄이지는 않습니다. 볼륨은 파티션 열로 설정한 항목과 실행 중에 이러한 열이 쿼리 필터로 사용되는 방식에 따라 다릅니다.

또 다른 방법은 클러스터링과 테이블 파티션 나누기를 결합하는 것입니다. 이 접근 방식에서는 먼저 데이터를 파티션으로 분할한 다음 클러스터링 열을 통해 각 파티션 내의 데이터를 클러스터링합니다. 자세한 내용은 이 문서의 클러스터링 및 파티션을 나눈 테이블을 참조하세요.

클러스터 열 유형 및 순서

이 섹션에서는 열 유형과 테이블 클러스터링에서 열 순서가 작동하는 방식을 설명합니다.

클러스터 열 유형

클러스터 열은 반복되지 않는 최상위 열이어야 하며 다음 유형 중 하나여야 합니다.

  • STRING
  • INT64
  • NUMERIC
  • BIGNUMERIC
  • DATE
  • DATETIME
  • TIMESTAMP
  • BOOL
  • GEOGRAPHY

데이터 유형에 대한 자세한 내용은 GoogleSQL 데이터 유형을 참조하세요.

클러스터 열 순서

클러스터링된 열의 순서는 쿼리 성능에 영향을 미칩니다. 클러스터링의 이점을 얻으려면 쿼리 필터 순서가 클러스터링된 열 순서와 일치해야 하며 최소한 클러스터링된 첫 번째 열이 포함되어야 합니다.

다음 예시에서 순서 테이블은 Order_Date, Country, Status의 열 정렬 순서를 사용하여 클러스터링됩니다. Order_DateCountry를 필터링하는 쿼리는 클러스터링에 최적화되어 있지만 CountryStatus만 필터링하는 쿼리는 최적화되지 않습니다. 클러스터링 결과를 최적화하려면 첫 번째 클러스터링된 열부터 순서대로 클러스터링된 열을 필터링해야 합니다.

첫 번째부터 시작하는 클러스터링된 테이블의 쿼리에는 클러스터링된 열이 포함되어야 합니다.

클러스터링된 테이블과 파티션을 나눈 테이블 결합

테이블 클러스터링과 테이블 파티션 나누기를 결합하면 쿼리를 더욱 세부적으로 정렬할 수 있습니다.

파티션을 나눈 테이블에서 데이터는 데이터의 한 파티션을 포함하는 각 물리적 블록에 저장됩니다. 파티션을 나눈 각 테이블은 테이블을 수정하는 모든 작업에서 정렬 속성에 대한 다양한 메타데이터를 유지합니다. 메타데이터를 통해 BigQuery가 쿼리를 실행하기 전에 쿼리 비용을 더 정확히 예측할 수 있습니다. 그러나 파티션 나누기를 수행하려면 BigQuery가 파티션을 나누지 않은 테이블보다 더 많은 메타데이터를 유지해야 합니다. 파티션의 수가 증가하면 유지할 메타데이터의 양도 증가합니다.

클러스터링되고 파티션을 나눈 테이블을 만들 때 다음 다이어그램과 같이 보다 세부적인 정렬을 달성할 수 있습니다.

클러스터링되지 않았거나 또는 파티션을 나누지 않은 테이블을 클러스터링되고 파티션을 나눈 테이블과 비교

자동 재클러스터링

클러스터링된 테이블에 데이터가 추가되면 새 데이터가 블록으로 구성되고 새 스토리지 블록이 생성되거나 기존 블록이 업데이트될 수 있습니다. 새 데이터가 동일한 클러스터 값이 있는 기존 데이터와 그룹화되지 않을 수 있으므로 최적의 쿼리 및 스토리지 성능을 위해 블록 최적화가 필요합니다.

BigQuery는 클러스터링된 테이블의 성능 특성을 유지하기 위해 백그라운드에서 자동 재클러스터링을 수행합니다. 파티션을 나눈 테이블의 경우에는 각 파티션 범위 내의 데이터에 대해 클러스터링이 유지됩니다.

제한사항

  • 클러스터링된 테이블을 쿼리하고 클러스터링된 테이블에 쿼리 결과를 쓰는 데는 GoogleSQL만 지원됩니다.
  • 클러스터링 열은 최대 4개만 지정할 수 있습니다. 추가 열이 필요한 경우 클러스터링과 파티션 나누기를 결합하는 것이 좋습니다.
  • 클러스터링에 STRING 유형 열을 사용하는 경우 BigQuery는 처음 1,024자(영문 기준)만 사용하여 데이터를 클러스터링합니다. 열의 값 자체는 1,024자(영문 기준)보다 길 수 있습니다.
  • 클러스터링되지 않은 기존 테이블을 클러스터링할 경우 기존 데이터는 클러스터링되지 않습니다. 클러스터링된 열을 사용하는 새 데이터만 저장되며 자동 재클러스터링이 적용됩니다.

클러스터링된 테이블의 할당량 및 한도

BigQuery는 특정 테이블 작업 또는 하루 동안 실행되는 작업 수에 대한 제한을 포함하여 할당량 및 한도로 공유 Google Cloud 리소스의 사용을 제한합니다.

파티션을 나눈 테이블로 클러스터링된 테이블 기능을 사용할 때는 파티션을 나눈 테이블의 한도가 적용될 수 있습니다.

할당량과 한도는 클러스터링된 테이블에 대해 실행할 수 있는 다양한 유형의 작업에도 적용됩니다. 테이블에 적용되는 작업 할당량에 대한 자세한 내용은 '할당량 및 한도'의 작업을 참조하세요.

클러스터링된 테이블 가격 책정

BigQuery에서 클러스터링된 테이블을 만들고 사용할 때 부과되는 요금은 데이터를 대상으로 실행하는 쿼리와 테이블에 저장된 데이터의 양에 따라 결정됩니다. 자세한 내용은 스토리지 가격 책정쿼리 가격 책정을 참조하세요.

클러스터링된 테이블 작업은 다른 BigQuery 테이블 작업과 마찬가지로 일괄 로드, 테이블 복사, 자동 재클러스터링, 데이터 내보내기와 같은 BigQuery 무료 작업을 활용합니다. 이러한 작업에는 BigQuery 할당량 및 한도가 적용됩니다. 무료 작업에 대한 자세한 내용은 무료 작업을 참조하세요.

클러스터링된 테이블 가격의 자세한 예시는 스토리지 및 쿼리 비용 추정을 참조하세요.

테이블 보안

BigQuery에서 테이블에 대한 액세스를 제어하려면 테이블 액세스 제어 소개를 참조하세요.

다음 단계