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에 저장하세요.

Cloud Storage에서 BigQuery로 데이터를 로드할 때 로드 작업에 대한 요금은 청구되지 않지만 Cloud Storage 내 데이터 저장에 대한 요금은 청구됩니다. 데이터가 BigQuery에 로드되면 BigQuery 스토리지 가격 책정이 적용됩니다. 시간 이동 스토리지 블록을 포함하여 테이블에서 소비하는 물리적 또는 논리적 스토리지에 대한 요금이 부과됩니다.

이전 데이터를 다른 스토리지 옵션(예: Cloud Storage)으로 내보내는 대신 BigQuery의 장기 스토리지 가격을 이용해 보세요.

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

장기 또는 단기 데이터 식별

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

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

시간 이동 기간 줄이기

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

시간 이동 일수를 기본값 7에서 줄이면 객체에 저장된 총 스토리지 블록 수가 줄어듭니다. 시간 이동 기간은 데이터 세트 수준에서 설정됩니다.

Cloud Storage에 데이터 보관처리

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

보관처리에 대한 비즈니스 요구사항을 기준으로 BigQuery에서 Cloud Storage로 데이터를 이동할 수 있습니다. BigQuery에서 데이터를 내보내기 전에 BigQuery 장기 가격 책정을 고려하는 것이 좋습니다.

다음 단계