You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake异步查询执行的结果集TTL及相关技术问题咨询

问题1:Snowflake如何、在何处存储Result set?是否存在account级别或session级别的相关配置项?

Snowflake的查询结果集默认存储在服务端内部云存储层,和你部署Snowflake的云厂商区域对应(比如AWS区域就存在对应S3存储区),归查询触发用户所属的虚拟仓库管理,不会占用你账户的用户数据存储配额。
配置方面仅有账户级别的结果集保留时长全局参数,没有会话级别的独立配置项,规则对全账户所有查询统一生效。

问题2:Async Operation的查询结果TTL是多少?读取ResultSet后是否有方法可以删除对应查询的结果?

异步查询的结果集TTL和同步查询完全一致:标准版账户默认保留24小时,企业版及以上账户默认保留45天,最长可调整到90天。
目前没有公开接口支持主动删除单条查询的结果集,结果只能到期后自动被系统回收。

问题3:是否可以将Snowflake中Async Query Execution生成的ResultSet直接上传到S3?

可以,无需把结果集读取到应用端再上传,全程可在Snowflake服务端完成。你拿到异步查询的query ID后,调用COPY INTO结合RESULT_SCAN函数即可导出,参考语法:

COPY INTO 's3://<你的目标S3路径>/<导出文件前缀>'
FROM (SELECT * FROM TABLE(RESULT_SCAN('<异步查询的QUERY_ID>')))
STORAGE_INTEGRATION = <你提前配置的S3存储集成名称>
FILE_FORMAT = (TYPE = CSV); -- 可按需调整为PARQUET等其他格式

问题4:是否有方法可以预估查询的大致运行时长,以帮助判断应该采用Synchronously还是Asynchronously方式执行查询?

有两种常用的估算方式:

  • 若查询是历史重复执行过的,可通过QUERY_HISTORY视图查询同逻辑查询的历史平均耗时,参考语法:
SELECT AVG(TOTAL_ELAPSED_TIME)/1000 AS avg_run_seconds
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())
WHERE QUERY_TEXT ILIKE '%<你的查询特征标识>%'
AND EXECUTION_STATUS = 'SUCCESS';
  • 若为首次执行的新查询,可先运行EXPLAIN ANALYZE <你的查询语句>获取执行计划,里面会给出预估扫描数据量、计算节点资源消耗等指标,你可结合同数据量级的历史查询耗时做估算。
    一般建议预估耗时超过你应用设置的JDBC同步超时阈值的查询,都采用异步执行方式。

内容的提问来源于stack exchange,提问作者Santosh Mohanty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:06:05