空闲的雪花连接是否使用云服务积分?

问题描述

动机 |假设有人想对 SNowflake 数据库执行两个 sql 查询,间隔约 20 分钟。

优化问题 |哪个会花费更少的云服务积分:

  1. 重复使用一个连接,并在此期间允许该连接空闲。
  2. 每次查询连接一次。

documentation 表示身份验证会导致云服务信用使用,但不表示空闲连接是否会导致信用使用。

问题 |有谁知道空闲连接是否会导致云服务信用使用?

解决方法

雪花连接是无状态的。它们不占用资源,也不需要像其他数据库连接那样保持 TCP/IP 连接处于活动状态。

因此,除非您启用“CLIENT_SESSION_KEEP_ALIVE”,否则空闲连接不会消耗任何云服务层积分。

https://docs.snowflake.com/en/sql-reference/parameters.html#client-session-keep-alive

当您设置 CLIENT_SESSION_KEEP_ALIVE 时,客户端将更新会话的令牌(默认值为 1 小时)。

https://docs.snowflake.com/en/sql-reference/parameters.html#client-session-keep-alive-heartbeat-frequency

正如 Peter 提到的,CSL 使用量高达每日仓库使用量的 10% 是免费的,因此刷新令牌在实践中不会花费您任何费用。

关于您的方法:我不知道您计划每天运行多少个查询,但是为每个查询创建一个新连接可能是一个性能杀手。从成本角度来看,空闲连接一天最多会执行 24 个授权请求,因此如果您计划一天运行 24 个以上的查询,我建议您选择第一种方法。

,

即使空闲连接在云服务方面没有任何成本,您的仓库是否以空闲连接运行,因此需要考虑其他成本?我猜总体上还有更多因素需要考虑,您可以与您的 Snowflake 客户团队讨论。不是试图回避你的问题,而是试图给出一个更健康的答案!

一般而言,与您的其他成本相比,云服务成本通常较低。以下是云服务成本的主要驱动因素以及如何将其最小化:https://community.snowflake.com/s/article/Cloud-Services-Billing-Update-Understanding-and-Adjusting-Usage

您可能得到的最佳建议是测试您的连接/工作流程并比较一段时间内的成本。总成本将取决于几个因素。即使两个工作流程之间的成本存在差异,您仍可能需要分析成本/产出比和您的业务需求,以确定是否值得节省。

,

方法 1 会产生较少的云服务使用量,但会产生更多的数据传输费用(以保持连接有效)。只有 Auth 事件会导致使用云服务。

方法 2 会产生更多的云服务使用量,但会减少数据传输费用。

但是,无论哪种情况,云服务使用量或数据传输费用都非常小。

注意 - 使用的任何云服务(高达每日仓库使用量的 10%)都是免费的,而没有免费的带宽分配,因此使用 #2 可以为您节省几分钱。