Snowflake Streams · 공식 문서 해설

Snowflake SYSTEM$STREAM_HAS_DATA가 TRUE인데 0건일 수 있는 이유

스노우플레이크 스트림에서 스트림 해즈 데이터가 트루인데, 조회 결과가 영 건일 수 있습니다.
Snowflake SYSTEM$STREAM_HAS_DATA가 TRUE인데 0건일 수 있는 이유
TRUE가 CDC 행 개수를 보장하지 않음table version metadata diff 기반원래 상태 복귀 또는 view가 변경행을 제외

스노우플레이크 스트림에서 스트림 해즈 데이터가 트루인데, 조회 결과가 영 건일 수 있습니다.

증상부터 분리

스노우플레이크 스트림에서 스트림 해즈 데이터가 트루인데, 조회 결과가 영 건일 수 있습니다.

공식 문서에서 확인되는 핵심

이 함수는 테이블 버전 메타데이터 차이를 보고 판단하므로, 트루가 실제 씨디씨 행이 있다는 보장은 아닙니다.

같은 행이 들어왔다가 지워져 원래 상태로 돌아가거나, 뷰가 변경된 행을 걸러내면 폴스 포지티브가 생길 수 있습니다.

다섯 장면으로 정리

장면핵심조건
1HAS_DATA = TRUE 그런데 0건?!TRUE가 CDC 행 개수를 보장하지 않음
2TRUE = 메타데이터 차이 행 보장 아님table version metadata diff 기반
3삽입 후 삭제·뷰 필터 false positive 가능원래 상태 복귀 또는 view가 변경행을 제외
4계속 TRUE면 불필요 Task 가능DML로 consume하면 stream offset 변경
5STALE_AFTER는 예측값실제 손실·안전 상태 증거 아님

여기까지는 단정하면 안 됩니다

빈 스트림인데 트루가 계속되면 태스크가 불필요하게 실행될 수 있습니다. 스트림을 디엠엘로 소비하면 오프셋이 바뀌므로, 읽기 전용 확인과 구분해야 합니다.

설정 변경 전 읽기 전용 확인

검증 범위

스테일 애프터는 예상 스테일니스 시점이지 특정 데이터 손실이나 안전 상태의 증거가 아닙니다. 실제 계정에서 디엠엘을 실행한 영상은 아닙니다.

이 글은 제조사 공식 문서를 해설하고 가상 도식을 사용한 교육 자료입니다. 실제 장비·운영 데이터베이스·고객 데이터·장애·복구·성능 시험 결과를 주장하지 않습니다.

짧은 영상으로 보기

YouTube 채널

YouTube 예약 영상의 실제 ID가 생기면 이 링크만 연결할 수 있습니다. 글과 로컬 영상 자체는 독립적으로 확인 가능합니다.