snowflake-cloud-data-platform - 高信用使用 - information_schema.query_history
问题描述
是否有一种优化的方式来识别 Snowflake 中长时间运行的查询?我注意到的是information_schema.query_history
,无论是否提供参数值进行查询都不会影响所产生的成本。
背景:我们有一个 AWS lambda,它会定期运行以通过利用来查找任何长时间运行的查询information_schema.query_history
。但是,无论您向参数end_time_range_start
等提供的值如何,每次执行都将花费 0.18 积分,以限制您返回的数据。
因此,这两个查询都会产生相同的成本。
table(
information_schema.query_history
(
end_time_range_start=> dateadd('minutes',-5,current_timestamp()),
result_limit=>100
)
)
table(information_schema.query_history(result_limit=>100))
注意:我们已经使用STATEMENT_TIMEOUT_IN_SECONDS
在仓库级别设置查询持续时间的限制。此外,我们有资源监控器来限制使用的积分,但我们需要更精细的解决方案来提醒我们是否有人运行长时间运行的查询。
解决方案
您可以直接查询 SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY 以更好地控制返回给您的查询。这包含 1 年的数据,但在此处显示的数据最多有 45 分钟的延迟。
https://docs.snowflake.net/manuals/sql-reference/account-usage/query_history.html
在成本方面,如果您正在利用最常用于执行查询的仓库,那么它确实不会花费您任何额外的信用。如果可以的话,我会考虑切换到那个仓库。
推荐阅读
- python-2.7 - 为什么 ForEach 接收器在 Spark 结构化流中不调用函数 (show_data_function)?
- ubuntu - Netplan:在 Ubuntu 18.04 上配置故障转移 IP
- python - 多维字符串数组
- go - 这个赋值给无类型空白标识符有什么影响?
- python - Docker-compose/Nginx/Gunicorn - Nginx 不工作
- c# - 按名称 C# 对对象属性列表进行排序
- reactjs - GraphQL 和 Apollo - 多重突变
- c# - MS Graph SDK C# - 获取计划内的所有任务
- c - 如何检测我的哪一段代码正在生成“致命错误:glibc 检测到无效的 stdio 句柄”错误?
- python - 从容器连接到主机服务的示例