클러스터링된 테이블 소개

이 문서에서는 BigQuery의 테이블 클러스터링 지원을 간략하게 설명합니다.

개요

BigQuery에서 클러스터링된 테이블을 만들 때, 테이블 데이터는 테이블 스키마에 있는 1개 이상의 열에 있는 콘텐츠를 기준으로 자동 정렬됩니다. 지정하는 열은 관련 데이터를 배치하는 데 사용됩니다. 여러 열을 사용해 테이블을 클러스터링할 때는 열 순서 지정이 중요합니다. 지정된 열의 순서에 따라 데이터의 정렬 순서가 결정됩니다.

클러스터링은 절을 필터링하는 데 사용하는 쿼리나 데이터를 집계하는 쿼리와 같은 특정 유형의 쿼리의 성능을 개선할 수 있습니다. 데이터가 쿼리 작업이나 로드 작업에 의해 클러스터링된 테이블에 작성될 때 BigQuery는 클러스터링 열의 값을 사용해 데이터를 정렬합니다. 이러한 값은 BigQuery 저장소의 여러 블록에 데이터를 정리하는 데 사용됩니다. 클러스터링 열을 기준으로 데이터를 필터링하는 절이 포함된 쿼리를 제출하면, BigQuery는 불필요한 데이터를 스캔하지 않도록 정렬된 블록을 사용합니다.

이와 유사하게, 클러스터링 열의 값을 기준으로 데이터를 집계하는 쿼리를 제출하면 정렬된 블록이 유사한 값으로 행을 배치하기 때문에 성능이 개선됩니다.

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

현재 BigQuery는 파티션을 나눈 테이블의 클러스터링을 지원합니다. 다음과 같은 경우 파티션을 나눈 테이블을 클러스터링하세요.

  • DATE 또는 TIMESTAMP 열에서 이미 사용자 데이터의 파티션이 나눠졌습니다.
  • 일반적으로 쿼리에서 특정 열에 대해 필터 또는 집계를 사용하고 있습니다.

테이블 클러스터링은 수집 시간으로 파티션을 나눈 테이블과 DATE 또는 TIMESTAMP 열로 파티션을 나눈 테이블 모두에 지원됩니다. 현재 파티션을 나누지 않는 테이블에는 클러스터링이 지원되지 않습니다.

클러스터링과 파티션 나누기를 함께 사용하는 경우 DATE 또는 TIMESTAMP 열로 데이터의 파티션을 나눈 다음 다양한 열 집합으로 클러스터링할 수 있습니다. 이 경우, 각 파티션의 데이터는 클러스터링 열의 값을 기준으로 클러스터링됩니다. 파티션 나누기는 (스캔되는 파티션을 기준으로) 쿼리의 예상 비용을 정확히 알아볼 수 있는 방법입니다.

파티션을 나눈 테이블 클러스터링

DATE 또는 TIMESTAMP 열로 파티션을 나눈 테이블의 경우, 각 파티션에 각 날짜의 데이터가 포함됩니다. 데이터가 저장되면 BigQuery는 블록의 모든 데이터가 단일 파티션에 속하도록 확인합니다. 파티션을 나눈 테이블은 쿼리 작업, DML(데이터 조작 언어) 문, DDL(데이터 정의 언어) 문, 로드 작업, 복사 작업 등 테이블을 수정하는 모든 작업에서 이러한 속성이 유지됩니다. 즉, BigQuery가 파티션을 나누지 않은 테이블보다 더 많은 메타데이터를 유지해야 합니다. 파티션 개수가 증가하면 메타데이터 오버헤드의 양도 증가합니다.

전역에서 데이터의 파티션을 나누면 더 많은 메타데이터를 유지해야 하지만 BigQuery는 쿼리를 실행하기 전에 쿼리에 의해 처리된 바이트를 더욱 정확히 예측할 수 있습니다. 이렇게 비용을 계산하면 최종 쿼리 비용의 상한가를 알 수 있습니다.

클러스터링된 테이블에서 BigQuery는 클러스터링 열 값을 기준으로 데이터를 자동 정렬하며 이를 최적화된 크기의 저장소 블록으로 정리합니다. 클러스터링되고 파티션이 나누어진 테이블을 만들어 더욱 세부적으로 정렬할 수 있습니다. 클러스터링된 테이블에서는 해당 테이블을 수정하는 각 작업과 관련하여 정렬 속성이 유지됩니다. 그 결과 BigQuery가 쿼리에 의해 처리된 바이트나 쿼리 비용을 정확히 예측하지 못할 수도 있습니다. 데이터 블록이 쿼리 실행 중에 제거되면, BigQuery는 쿼리 비용을 줄이기 위해 최선을 다합니다.

장기적으로 테이블을 수정하는 작업이 증가함에 따라 데이터가 정렬되는 수준이 낮아지면서 테이블이 부분적으로만 정렬됩니다. 완전히 정렬된 테이블에 비해 부분적으로 정렬된 테이블에서는 클러스터링 열을 사용하는 쿼리가 더 많은 블록을 스캔해야 할 수 있습니다. 테이블에서 선택하고 테이블(또는 테이블 내의 특정 파티션)을 덮어쓰는 SELECT * 쿼리를 실행하여 전체 테이블의 데이터를 다시 클러스터링할 수 있습니다. 또한 DML MERGE 문을 사용하여 테이블의 임의 부분을 다시 클러스터링할 수 있습니다.

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

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

할당량과 한도는 다음을 포함하여 클러스터링된 테이블에 대해 실행할 수 있는 여러 작업 유형에 적용됩니다.

모든 할당량 및 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

클러스터링된 테이블 가격

BigQuery에서 클러스터링된 테이블을 만들고 사용할 때 부과되는 비용은 데이터를 대상으로 실행하는 쿼리와 테이블에 저장된 데이터의 양에 따라 결정됩니다.

  • 저장소 가격에 대한 자세한 내용은 저장소 가격을 참조하세요.
  • 쿼리 가격에 대한 자세한 내용은 쿼리 가격을 참조하세요.

클러스터링된 테이블에 데이터 로드, 테이블 및 파티션 복사, 데이터 내보내기를 포함하여 클러스터링된 테이블 작업 중 상당 수의 작업이 무료입니다. 이러한 작업은 무료지만 BigQuery의 할당량 및 한도가 적용됩니다. 모든 무료 작업에 대한 자세한 내용은 가격 페이지의 무료 작업을 참조하세요.

클러스터링된 테이블 가격의 자세한 예는 가격 페이지를 참조하세요.

개발 중인 기능

다음 기능은 개발 중이며, 현재 베타 출시 버전에서는 사용할 수 없습니다.

  • 파티션을 나누지 않은 테이블의 클러스터링 지원

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.