Snowflake Stream执行count(*)是否会flush out?带where false查询为何变stale?
Snowflake Stream 相关问题解答
问题1:执行select count(*) from stream语句,是否会导致Snowflake Stream被flush out?
会。select count(*) from stream会扫描并统计流中所有变更记录,属于消费流数据的操作,Snowflake会据此推进流的偏移量,原有的变更记录会被flush out,后续查询该流将无法再获取这些已被消费的记录。
问题2:基于表创建的Snowflake Stream一段时间后变为stale状态,多数查询时使用where false条件,且通过count(*)检查流的记录数,该操作是否会导致流被flush out?
不会。带where false条件的查询(比如select count(*) from MY_STREAM where false;)不会扫描流中的任何实际变更记录,不会触发流的偏移量推进,因此不会导致flush out。
流变为stale状态通常是因为:
- 流的保留期到期(默认14天),源表中更早的变更记录已被清理,流无法再追踪这些历史变更;
- 源表执行了TRUNCATE、DROP、重新克隆等会重置流的操作;
- 流未被消费的时间超过了其配置的保留时长。
补充问题:执行select count(*) from MY_STREAM where false;语句后,流逐渐变为stale状态,请问此操作是否会导致流被flush out?
不会。该语句的where false条件过滤了所有行,查询不会读取任何流中的变更数据,不会触发流的偏移量更新,因此不会导致flush out。流变为stale状态是由其他因素导致(如保留期到期、源表操作等),和这个查询无关。
内容的提问来源于stack exchange,提问作者Sumathi S
相关产品推荐
相关产品推荐

