쿼리 성능을 위해 스토리지 최적화

이 페이지에서는 쿼리 성능을 위해 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

장기 데이터 집계

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

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

다음 단계