BigQuery에서 스토리지 최적화

이 페이지에는 BigQuery 스토리지 최적화를 위한 권장사항이 나와 있습니다. BigQuery는 데이터를 열 형식으로 저장합니다. 열 기반 데이터베이스는 수많은 레코드에 데이터를 집계하는 분석 워크로드에 최적화되어 있습니다. 열은 일반적으로 행보다 중복성이 더 높으므로 이러한 특성 때문에 런 렝스 인코딩 같은 기법을 사용하면 데이터 압축률이 올라갑니다. BigQuery가 데이터를 저장하는 방법에 대한 자세한 내용은 BigQuery 스토리지 개요를 참조하세요. BigQuery 스토리지를 최적화하면 쿼리 성능이 개선되고 비용이 제어됩니다.

BigQuery는 리소스의 스토리지 소비에 대한 세부정보를 제공합니다. 테이블 스토리지 메타데이터를 보려면 다음 INFORMATION_SCHEMA 뷰를 쿼리합니다.

테이블 데이터 클러스터링

권장사항: 클러스터링된 테이블을 만드세요.

쿼리용 스토리지를 최적화하려면 먼저 테이블 데이터를 클러스터링하세요. 자주 사용하는 열을 클러스터링하여 쿼리에서 스캔하는 데이터의 총량을 줄일 수 있습니다. 클러스터를 만드는 방법에 대한 자세한 내용은 클러스터링된 테이블 만들기 및 사용을 참조하세요.

테이블 데이터 파티션 나누기

권장사항: 큰 테이블을 파티션으로 나눕니다.

파티션을 사용하면 정수 열, 시간 단위 열 또는 수집 시간 같은 정의된 일련의 열 특성에 따라 데이터를 그룹화하고 정렬할 수 있습니다. 파티션을 나누면 쿼리 성능을 높일 수 있으며 쿼리에서 읽는 바이트 수를 줄여 비용을 제어할 수 있습니다.

파티션에 대한 자세한 내용은 파티션을 나눈 테이블 소개를 참조하세요.

테이블 및 파티션 만료 시간 설정 사용

권장사항: 스토리지를 최적화하려면 데이터 세트, 테이블, 파티션을 나눈 테이블에 대한 기본 만료 설정을 구성하세요.

데이터 세트에서 새로 생성된 테이블의 기본 테이블 만료를 설정하여 스토리지 비용을 제어하고 스토리지 사용을 최적화할 수 있습니다. 테이블이 만료되면 테이블에 포함된 모든 데이터와 함께 테이블이 삭제됩니다. 데이터 세트가 생성될 때 이 속성을 설정하면 만료 기간이 지난 후에 데이터 세트에서 생성된 테이블이 삭제됩니다. 데이터 세트가 생성된 후에 이 속성을 설정하면 만료 기간이 지난 후에 새로운 테이블만 삭제됩니다.

예를 들어 기본 테이블 만료를 7일로 설정하면 1주일 후에 이전 데이터가 자동으로 삭제됩니다.

이 옵션은 최신 데이터에만 액세스가 필요한 경우에 유용합니다. 또한 데이터를 보존할 필요 없이 사용하기만 하는 경우에도 유용합니다.

날짜로 파티션을 나눈 테이블에서는 데이터 세트의 기본 테이블 만료 시간이 개별 파티션에 적용됩니다. bq 명령줄 도구에서 time_partitioning_expiration 플래그를 사용하거나 API에서 expirationMs 구성 설정을 사용하여 파티션 만료 시간을 제어할 수도 있습니다. 파티션이 만료되면 해당 파티션의 데이터가 삭제되지만 파티션을 나눈 테이블은 테이블이 비어 있더라도 삭제되지 않습니다. 예를 들어 다음 명령어는 3일 후에 파티션을 만료합니다.

bq mk \
--time_partitioning_type=DAY \
--time_partitioning_expiration=259200 \
project_id:dataset.table

BigQuery 장기 스토리지 사용

권장사항: 이전 데이터에 대한 비용을 줄이려면 BigQuery 장기 스토리지를 사용하세요.

데이터를 BigQuery 스토리지로 로드하면 데이터에 BigQuery 스토리지 가격 책정이 적용됩니다. 이전 데이터를 다른 스토리지 옵션(예: Cloud Storage)으로 내보내는 대신 BigQuery의 장기 스토리지 가격 책정을 활용할 수 있습니다.

연속으로 90일 동안 테이블을 수정하지 않으면 테이블의 스토리지 가격이 자동으로 50% 인하됩니다. 파티션을 나눈 테이블이 있는 경우 각 파티션은 파티션을 나누지 않은 테이블에 적용되는 규칙과 동일한 규칙에 따라 장기 가격 적용 대상으로 별도 간주됩니다.

스토리지 청구 모델 구성

권장사항: 사용량 패턴에 따라 스토리지 청구 모델을 최적화하세요.

BigQuery는 논리적(비압축) 바이트나 물리적(압축) 바이트 또는 이 둘의 조합을 사용하여 스토리지 청구를 지원합니다. 각 데이터 세트에 구성된 스토리지 청구 모델에 따라 스토리지 가격이 결정되지만 쿼리 성능은 영향을 받지 않습니다.

INFORMATION_SCHEMA 뷰를 사용하여 사용 패턴에 따라 가장 적합한 스토리지 청구 모델을 결정할 수 있습니다.

장기 또는 단기 데이터 식별

권장사항: 행 수준 데이터를 장기간 저장해야 하는지 확인하고 합산 데이터만 장기 저장하세요.

일반적으로 트랜잭션 또는 행 수준 데이터에 포함된 세부정보는 단기적으로 유용하지만 장기간 참조되는 경우는 별로 없습니다. 이러한 상황일 때는 집계 쿼리를 빌드하여 이 데이터와 연결된 측정항목을 계산하고 저장한 후 테이블/파티션 만료 시간을 사용하여 행 수준 데이터를 체계적으로 삭제하면 됩니다. 그러면 측정항목을 계속해서 장기간 사용할 수 있으며 스토리지 비용이 줄어듭니다.

시간 이동 기간 줄이기

권장사항: 요구사항에 따라 시간 이동 기간을 줄일 수 있습니다.

시간 이동 기간을 기본값인 7일에서 줄이면 테이블에서 삭제되거나 변경된 데이터의 보관 기간이 줄어듭니다. 물리적(압축) 스토리지 청구 모델을 사용하는 경우에만 시간 이동 스토리지에 대한 요금이 청구됩니다.

시간 이동 기간은 데이터 세트 수준에서 설정됩니다.

Cloud Storage로 데이터 보관처리

권장사항: Cloud Storage에 데이터를 보관처리하는 것이 좋습니다.

보관처리에 대한 비즈니스 요구사항에 따라 BigQuery에서 Cloud Storage로 데이터를 이동할 수 있습니다. 가장 좋은 방법은 BigQuery에서 데이터를 내보내기 전에 BigQuery 장기 요금을 고려하는 것입니다.

다음 단계