728x90
반응형
partition? cluster?
파티셔닝(partitioning)과 클러스터링(clustering)은 성능을 높여 쿼리 비용을 최소화하는 기술이다.
더 적은 리소스를 사용하여 속도를 향상시키는 방법이다.
기본적으로 이 두 가지 방법은 쿼리를 실행할 때 스캔(scan)하는 데이터의 양을 제한하는 방법을 이용한다.
partition
테이블 파티셔닝은 큰 테이블을 작은 테이블로 분할하는 것이다.
BigQuery의 경우, 서로 다른 파티션을 물리적으로 다른 곳에 저장한다.
테이블을 분할하여 쿼리를 실행할 때 액세스할 파티션을 결정하고, 스캔할 데이터를 최소화한다.
- Time-unit column(시간 단위 열)
- timestamp 또는 날짜와 같은 시간 값을 기준으로 테이블 분할
- Ingestion time(수집 시간)
- BigQuery가 데이터를 수집할 때 timestamp를 기준으로 분할
- Integer range(정수 범위)
- 숫자를 기준으로 테이블 분할
참고) BigQuery는 테이블 당 4,000개의 파티션으로 제한된다.
- partition_expiration_days : BigQuery는 파티션이 만료되면 파티션의 데이터를 삭제한다. 이때 지정된 일 수보다 오래된 파티션의 데이터가 삭제됨을 의미한다.
- require_partition_filter : 사용자가 파티션 키에 대한 필터링(WHERE 절) 없이 쿼리할 수 없음을 의미한다.
cluster
클러스터를 사용하면 BigQuery가 유사한 데이터를 더 가까운 곳에 유지하여 쿼리가 더 적은 수의 데이터를 스캔할 수 있도록 할 수 있다.
클러스터링에 포함한 열의 값에 따라 BigQuery는 자동으로 정렬하고, 최적의 저장 블록에 저장도록 한다.
클러스터는 카디널리티(cardinarlity)가 높을 수록 잘 동작한다. 즉 다양한 데이터 종류에 적합하다.
참고) BigQuery는 테이블 당 4개의 클러스터 열로 제한된다.
파티셔닝과 클러스터링을 잘 활용하기 위해서는 테이블에 들어올 데이터의 특성을 잘 파악해두는 것이 매우 중요하다.
Reference
- https://towardsdatascience.com/how-to-use-partitions-and-clusters-in-bigquery-using-sql-ccf84c89dd65
반응형
'[Google] > [BQ] BigQuery' 카테고리의 다른 글
[BQ] schema 생성 (0) | 2023.07.05 |
---|---|
[BQ] BigQuery partition limit (0) | 2023.07.05 |
[BQ] 쿼리 비용 Tip (0) | 2023.06.21 |
[BQ] Python에서 BigQuery 실행하기 (0) | 2023.04.23 |
[BigQeury] IFNULL vs. NULLIF (0) | 2023.04.23 |