동적 테이블 목표 지연 이해하기¶
동적 테이블 새로 고침은 데이터의 목표 지연 에 의해 트리거되며, 이 지연은 얼마나 오래되었는지를 결정합니다. 고정된 목표 지연을 수정하거나 동적 테이블을 DOWNSTREAM 으로 설정하여 해당 테이블에 종속된 다른 동적 테이블에 따라 새로 고침 타이밍이 달라지도록 할 수 있습니다.
동적 테이블의 목표 지연은 그래프의 루트에 있는 동적 테이블을 기준으로 측정되며, 바로 업스트림에 있는 동적 테이블은 측정되지 않습니다. 동적 테이블에 연결된 테이블의 그래프를 보려면 동적 테이블에 연결된 테이블의 그래프 보기 섹션을 참조하십시오.
Snowflake 일정은 동적 테이블의 실제 지연을 목표 지연보다 낮게 유지하도록 새로 고침을 예약합니다. 각 새로 고침의 기간은 쿼리, 데이터 패턴, 웨어하우스 크기에 따라 달라집니다. 목표 지연을 선택할 때는 체인의 각 동적 테이블 을 루트까지 새로 고치는 데 필요한 시간을 고려하십시오. 그렇지 않으면 일부 새로 고침을 건너뛰어 실제 지연이 더 커질 수 있습니다.
참고
목표 지연이 보장되는 것은 아닙니다. 다만, Snowflake가 달성하려는 목표입니다. 동적 테이블의 데이터는 목표 지연 내에서 최대한 가깝게 새로 고쳐집니다. 하지만 웨어하우스 크기, 데이터 크기, 쿼리 복잡성 및 이와 유사한 요인과 같은 요인으로 인해 목표 지연이 초과될 수 있습니다.
목표 지연의 유형¶
목표 지연은 다음 중 한 가지 방법으로 지정합니다. 목표 지연은 동적 테이블의 새로 고침 빈도에 반비례하며, 자주 새로 고칠수록 지연이 줄어듭니다.
최신성 척도: 동적 테이블의 콘텐츠가 기본 테이블에 대한 업데이트보다 지연되어야 하는 최대 시간을 정의합니다.
다음 예제에서는
my_dynamic_table
을 1시간마다 새로 고치고 최신성를 유지하도록 설정합니다.ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = '1 hour';다운스트림: 다른 종속 동적 테이블이 새로 고쳐질 때 동적 테이블을 필요에 따라 새로 고치도록 지정합니다. 이 새로 고침은 생성 시 초기화, 수동 새로 고침 또는 다운스트림 동적 테이블의 예약된 새로 고침 으로 트리거할 수 있습니다.
다음 예제에서
my_dynamic_table
은 다운스트림 동적 테이블의 목표 지연에 따라 새로 고치도록 설정되어 있습니다.my_dynamic_table
에 종속된 동적 테이블이 없는 경우 새로 고쳐지지 않습니다.ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = DOWNSTREAM;
동적 테이블의 최적 목표 지연 결정하기¶
설정한 목표 지연은 동적 테이블의 예약된 새로 고침 빈도에 영향을 줍니다.
새로 고침이 완료될 때까지 시간을 확보하기 위해 Snowflake 예약은 약간 일찍 새로 고쳐집니다. 예를 들어, 목표 지연을 5분으로 설정한다고 해서 테이블이 정확히 5분마다 새로 고쳐지는 것은 아닙니다. 실제 새로 고침 간격은 지정된 지연보다 짧을 수 있습니다. 보다 일관된 5분 간격의 새로 고침을 원한다면 목표 지연을 약간 늘리는 것이 좋습니다.
INFORMATION_SCHEMA 또는 Snowsight 의 DYNAMIC_TABLE_REFRESH_HISTORY 테이블 함수를 사용하여 요구 사항에 따라 최적의 목표 지연 시간을 결정할 수 있습니다. 예를 들어, 새로 고침 기간 및 건너뛴 새로 고침 등 새로 고침 세부 정보를 분석하여 정보에 입각한 결정을 내릴 수 있습니다.
동적 테이블 새로 고침 모니터링 및 문제 해결에 대한 자세한 내용은 동적 테이블 모니터링하기 및 일반적인 동적 테이블 새로 고침 문제 진단하기 섹션을 참조하십시오.
DYNAMIC_TABLE_REFRESH_HISTORY 함수는 새로 고침에 걸린 시간 및 건너뛴 새로 고침을 포함하여 동적 테이블의 각 새로 고침에 대한 정보를 반환합니다.
SELECT
name
FROM
TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (
NAME_PREFIX => 'MYDB.MYSCHEMA.', ERROR_ONLY => TRUE
)
);
출력에는 시간 경과에 따른 새로 고침이 반영됩니다. 각 행은 새로 고침을 나타냅니다. 동적 테이블이 새로 고쳐질 때마다 새 행이 추가됩니다.
Snowsight 에 로그인합니다.
탐색에서 Monitoring » Dynamic Tables 을 선택한 다음 Refresh History 탭을 선택합니다.
Lag Metrics 에서 최대 지연 시간을 확인하십시오. 이 메트릭은 각 새로 고침의 실제 지연 시간을 기반으로 합니다.
목표 지연 변경¶
다음과 같은 이유로 동적 테이블의 목표 지연을 조정할 수 있습니다.
최신 데이터가 필요합니다. 목표 지연을 줄이면 동적 테이블이 더 자주 새로 고쳐져 실시간에 가까운 최신 데이터를 제공할 수 있습니다.
리소스를 최적화하려고 합니다. 목표 지연을 늘리면 새로 고침 빈도를 줄여 컴퓨팅 리소스를 절약할 수 있으므로 지속적인 업데이트가 필요하지 않거나 데이터가 자주 변경되지 않는 워크로드에 유용합니다. 예를 들어, 동적 테이블이 20분마다 새로 고쳐지지만 소스 테이블과 1시간 이내에만 있어야 하는 경우 1시간의 목표 지연을 설정하면 비용을 절감할 수 있습니다.
목표 지연이 데이터 파이프라인과 일치하도록 하려는 것입니다. 동적 테이블이 새로 고침 간격이 더 긴 다른 테이블에 의존하는 경우 목표 지연을 조정하면 종속성에 맞게 조정할 수 있습니다.
목표 지연을 변경하려면 ALTER DYNAMIC TABLE 명령을 사용합니다. 자세한 내용은 동적 테이블의 웨어하우스 또는 목표 지연 변경 섹션을 참조하십시오.
업스트림 및 다운스트림 관계가 목표 지연에 미치는 영향¶
다음 다이어그램에서는 다른 동적 테이블에 대한 업스트림 및 다운스트림 관계의 컨텍스트에서 일시 중단, 재개 및 수동 새로 고침 작업을 보여줍니다.

이 다이어그램은 동적 테이블로 생성한 간단한 선언적 데이터 파이프라인을 보여줍니다.
DT2
는 해당 동적 테이블에 종속되어 있으므로DT1
의 다운스트림 으로,DT3
의 업스트림 으로 설명됩니다.DT3
은DT2
에는 직접적으로,DT1
에는 간접적으로 종속되므로DT2
와DT1
모두의 다운스트림입니다.DT1
은 다른 동적 테이블의 직접적이거나 간접적인 업스트림입니다.
예: 동적 테이블 체인에 대한 목표 지연¶
동적 테이블(DT2
)이 다른 동적 테이블(DT1
)을 읽어들여 그 내용을 구체화하는 다음 예제에 대해 생각해 보겠습니다. 이 시나리오에서 보고서는 쿼리를 통해 DT2
의 데이터를 소비합니다.

각각의 동적 테이블이 지연을 지정하는 방식에 따라 다음 결과가 가능합니다.
|
|
새로 고침 결과 |
---|---|---|
|
|
|
|
|
이런 상황을 방지해야 합니다. 보고서 쿼리는 어떤 데이터도 수신하지 않습니다. DT1 은 자주 새로 고쳐지고 |
|
|
|
|
|
|