Snowflake中如何手动复现缓存缺失场景?能否删除特定查询缓存?
Snowflake缓存缺失场景复现与相关问题解答
1. 能否手动删除特定Query ID的缓存?
Snowflake目前不支持管理员手动删除单个Query ID对应的缓存结果。查询持久化结果的生命周期由Snowflake内部机制管控,默认最长保留14天(部分账户可能因配置不同有所差异),到期后会自动清理,无法手动干预单条缓存的删除。
2. 快速复现缓存缺失报错的方法
不用等14天,两种快捷模拟方式:
- 方法一:修改底层表数据
- 执行任意查询(比如
SELECT * FROM your_test_table LIMIT 5;),记录返回的Query ID。 - 对该查询关联的表做数据变更(插入/删除/更新任意一条数据)。
- 调用
RESULT_SCAN查询原Query ID:SELECT * FROM TABLE(RESULT_SCAN('<原Query ID>'));,此时会触发缓存缺失报错。
- 执行任意查询(比如
- 方法二:使用临时表
- 创建临时表并插入数据:
CREATE TEMP TABLE temp_test (id INT); INSERT INTO temp_test VALUES (1); - 执行查询并记录Query ID:
SELECT * FROM temp_test; - 删除临时表:
DROP TABLE temp_test; - 再次调用
RESULT_SCAN查询原Query ID,即可触发缓存缺失报错。
- 创建临时表并插入数据:
3. 缓存缺失的错误提示
当目标Query ID的持久化结果已失效或不存在时,Snowflake返回的错误信息为:
SQL compilation error: Query '
' does not have a result set available for scanning. The result set may have expired, or the query may not have produced a result set.
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

