캐시

캐시 (Cache)

dbt는 실행 시작 시 리소스를 materialize할 수 있는 모든 스키마의 모든 객체에 대한 메타데이터를 캐시해요. 이 문서에서는 관계형 캐시를 채우는 방법과 캐시 이벤트 로깅에 대해 다뤄요.

출처: 문서

본문

캐시 채우기

실행 시작 시 dbt는 리소스(예: 모델)를 materialize할 수 있는 모든 스키마의 모든 객체에 대한 메타데이터를 캐시해요. 기본적으로 dbt는 프로젝트와 관련된 모든 스키마의 정보로 관계형 캐시를 채워요.

이 동작을 선택적으로 수정하는 방법은 두 가지가 있어요:

  • POPULATE_CACHE (기본값: True): 캐시를 채울지 여부. 캐시 채우기를 완전히 건너뛰려면 --no-populate-cache 플래그를 쓰거나 (dbt v1.11 이상) DBT_ENGINE_POPULATE_CACHE: False를 사용해요. 이는 캐시를 비활성화하지 않는다는 점을 유의해요; 누락된 캐시 조회는 쿼리를 실행하고 이후 캐시를 업데이트해요.
  • CACHE_SELECTED_ONLY (기본값 False): 캐시 채우기를 현재 실행에서 선택된 리소스로만 제한할지 여부. 큰 프로젝트의 작은 부분집합을 실행할 때 상당한 속도 향상을 제공하면서도 캐시를 미리 채우는 이점을 유지할 수 있어요.

예를 들어 데이터베이스 메타데이터나 인스펙션 쿼리가 필요 없는 모델을 빠르게 컴파일하려면:

dbt compile --no-populate-cache --select my_model_name

또는 전용 스키마에 materialize되는 Salesforce 모델 개발에 집중하면서 속도와 성능을 개선하려면 그 모델들을 선택하고 cache-selected-only 플래그를 전달할 수 있어요:

dbt run --cache-selected-only --select salesforce

관계형 캐시 이벤트 로깅

LOG_CACHE_EVENTS 구성은 관계형 캐시에 대한 상세 로깅을 허용하며, 기본적으로 비활성화돼 있어요.

dbt compile --log-cache-events

더 알아보기 (Learn more)