SOGM'S Data

2) 구글 빅쿼리 튜닝 (Big Query) 본문

About Data/SQL

2) 구글 빅쿼리 튜닝 (Big Query)

왈왈가부 2021. 7. 3. 20:04

회사에서 구글 GCP의 빅쿼리를 접하게되었습니다.

빠른 속도와 구글의 다양한 서비스와 접목 시킨다는 것이 강점이었습니다.

 

제가 생각하는 빅쿼리의 장점 

1) 빠른속도, 병렬처리 -- ★ 

2) 다양한 서비스, 프로젝트와 연계 

 - CSV, 스프레드시트, 태블로, APachairflow 등 

단점

1) 비싸다. 개인이 사용할 수 없는 수준 (슬롯형, 데이터를 얼마나 쓰냐에 따라 금액 청구)

 

*아래 내용은 (이야기로 배우는 구글 빅쿼리)를 기반으로 공부한 내용과 구글링을 통한 내용을 정리하였습니다 

 

< 빅쿼리 비용절감 프로세스>

1. SELECT * 사용 X 

- 빅쿼리는 열 지향 스토리지이기 때문에 SELECT * 보다는 특정 열을 호출해주는게 좋습니다. 

  *열지향 스토리지란: 기존 관계형데이터베이스(RDB)가  1행 단위로 데이터를 보관하고 있지만 빅쿼리의 열지향 스토리지는 열단위로 망져 데이터를 보관함. ColumnIO에 의해 열마다 데이터를 압축하는데 동일 열에는 동일 데이터형 정보가 등록되어 있어 압축효율이 좋음

 

2. 파티션, 클러스터화 테이블 사용하기

* 파티션 분할 테이블이란: 테이블안에 여러 파티션을 정의할 수 있는 테이블. Ex. sdate

  - 파티션 분할테이블의 장점:   파티션 단위 데이터 로딩, 쿼리, 내보내기 가능

* 클러스터화 테이블이란: 지정하 클러스터화 테이블의 대상 열에 근거하여 데이터 배열장소나 나열 순서가 조정되는 테이블이다. 

 - 클러스터화 테이블의 장점: WHERE 구문에 클러스터링 열을 지정한 경우 불필요한 데이터는 스캔을 생략함. 쿼리비용 줄일 수 있음. 파티션 분할테이블만 클러스터화 할 수 있음. 클러스터화 테이블 자성 후 클러스터링 열 변경시 테이블 새롭게 작성해야해서 주의해야함. 

 

3. 사양상 가능시 캐시 활성화: 높은 캐시 히트율 예상되면 캐시 활성화로 쿼리 결과 고속 반환가능  

 

4. 미리보기 사용하기

 - 미리보기는 비용이 발생하지않는다. 

 

5. 사전에 쿼리 크기 확인하기.

빅쿼리는 실행할 때 유효한쿼리가 입력되면 오른쪽에 쿼리크기가 표시된다. 

 

6.쿼리 비용을 제한하기 위한 청구 가능 최대 크기 설정

 

7. 일시적 테이블 사용하기

- 서브쿼리의 부분을 먼저 일시적인 테이블로 만들어두고 일시적인 테이블에 대한 메인쿼리를 실행하는 방법을 사용함으로써 실행때마다 서브쿼리 요금 발생을 없앨 수 있다.

8. ORDER BY 지양

9. Sturct 형과 array 형 적극 활용하기 

관련 링크: https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays?hl=ko 

 

표준 SQL의 배열 작업  |  BigQuery  |  Google Cloud

BigQuery에서 배열은 데이터 유형이 동일한 0개 이상의 값으로 구성된 순서가 지정된 목록을 의미합니다. INT64와 같은 간단한 데이터 유형과 STRUCT와 같은 복합 데이터 유형의 배열을 생성할 수 있

cloud.google.com

 

10. 빅쿼리 슬롯 

 * 슬롯이란 처리의 병렬도를 뜻하는데 , 빅쿼리는 쿼리 실행시 쿼리를 분할해 병렬로 실행하는 처리를 슬롯단위로 나타낸다. 

쿼리가 느리다면 1) 슬롯 사용 수가 적다. 2) 동시 실행 슬롯 수를 초과해서 쿼리가늦어진다. 때문에 슬롯을 늘려야할 수 있다.

* 내 쿼리의 슬롯 사용 확인 방법은콘솔 shell에서 명령어로 확인가능하다. 

$ bq -location[위치] ls -j -n[표시행수]
/* 위치는 리전이 들어감 서울이라면 asia-northeast3 , 표시행 수는 기본값이 50행이다. 필요 행수 지정 */
$ bq --format=prettyjson show -j [작업ID]
/* 작업ID는 쿼리 고유의 작업 ID  */

'About Data > SQL' 카테고리의 다른 글

SQL _ 실행계획 순서  (0) 2022.01.17
1) SQL 코드정리 사이트  (0) 2021.05.31
Comments