空闲的 Snowflake 连接是否使用云服务积分?
Do Idle Snowflake Connections Use Cloud Services Credits?
动机 |假设有人想对 Snowflake 数据库执行两个 SQL 查询,间隔大约 20 分钟。
优化问题 |哪个会花费更少的云服务积分:
- 重新使用一个连接,并允许该连接在此期间空闲。
- 每个查询连接一次。
documentation表示认证消耗云服务积分,不表示空闲连接是否消耗积分。
问题 |有谁知道空闲连接是否会导致云服务信用使用?
即使闲置连接在云服务方面不会产生任何成本,您的仓库 运行 闲置连接是否因此给您带来其他成本来考虑?我猜想总体上还有更多因素需要考虑,您可以与 Snowflake 客户团队讨论这些因素。不是试图回避你的问题,而是试图给出一个更健康的答案!
一般来说,与您的其他成本相比,云服务成本通常较低。以下是云服务成本的主要驱动因素以及如何将它们最小化:https://community.snowflake.com/s/article/Cloud-Services-Billing-Update-Understanding-and-Adjusting-Usage
您可能得到的最佳建议是测试您的 connections/workflows 并比较一段时间内的成本。总成本将取决于几个因素。即使两个工作流之间的成本存在差异,您可能仍需要分析 cost/output 比率,并且您的企业需要确定节省的费用是否值得。
方法 1 会减少云服务的使用,但会产生更多的数据传输费用(以保持连接有效)。只有 Auth 事件会导致云服务使用。
方法 2 会产生更多的云服务使用,但数据传输费用更少。
但是,无论哪种情况,云服务使用量或数据传输费用都非常小。
注意 - 使用的任何云服务(最多占每日仓库使用量的 10%)都是免费的,而没有免费的带宽分配,因此使用 #2 可能会为您节省几分钱。
Snowflake 连接是无状态的。它们不占用资源,也不需要像其他数据库连接那样保持 TCP/IP 连接。
因此,空闲连接不会消耗任何云服务层信用,除非您启用“CLIENT_SESSION_KEEP_ALIVE”。
https://docs.snowflake.com/en/sql-reference/parameters.html#client-session-keep-alive
当您设置 CLIENT_SESSION_KEEP_ALIVE 时,客户端将更新会话的令牌(默认值为 1 小时)。
正如 Peter 所提到的,CSL 使用量高达每日仓库使用量的 10% 是免费的,因此刷新令牌实际上不会花费您任何费用。
关于您的方法:我不知道您计划每天 运行 查询多少次,但为每个查询创建一个新连接可能会成为性能杀手。从成本的角度来看,空闲连接一天最多会执行 24 个授权请求,因此如果您计划一天 运行 超过 24 个查询,我建议您选择第一种方法。
动机 |假设有人想对 Snowflake 数据库执行两个 SQL 查询,间隔大约 20 分钟。
优化问题 |哪个会花费更少的云服务积分:
- 重新使用一个连接,并允许该连接在此期间空闲。
- 每个查询连接一次。
documentation表示认证消耗云服务积分,不表示空闲连接是否消耗积分。
问题 |有谁知道空闲连接是否会导致云服务信用使用?
即使闲置连接在云服务方面不会产生任何成本,您的仓库 运行 闲置连接是否因此给您带来其他成本来考虑?我猜想总体上还有更多因素需要考虑,您可以与 Snowflake 客户团队讨论这些因素。不是试图回避你的问题,而是试图给出一个更健康的答案!
一般来说,与您的其他成本相比,云服务成本通常较低。以下是云服务成本的主要驱动因素以及如何将它们最小化:https://community.snowflake.com/s/article/Cloud-Services-Billing-Update-Understanding-and-Adjusting-Usage
您可能得到的最佳建议是测试您的 connections/workflows 并比较一段时间内的成本。总成本将取决于几个因素。即使两个工作流之间的成本存在差异,您可能仍需要分析 cost/output 比率,并且您的企业需要确定节省的费用是否值得。
方法 1 会减少云服务的使用,但会产生更多的数据传输费用(以保持连接有效)。只有 Auth 事件会导致云服务使用。
方法 2 会产生更多的云服务使用,但数据传输费用更少。
但是,无论哪种情况,云服务使用量或数据传输费用都非常小。
注意 - 使用的任何云服务(最多占每日仓库使用量的 10%)都是免费的,而没有免费的带宽分配,因此使用 #2 可能会为您节省几分钱。
Snowflake 连接是无状态的。它们不占用资源,也不需要像其他数据库连接那样保持 TCP/IP 连接。
因此,空闲连接不会消耗任何云服务层信用,除非您启用“CLIENT_SESSION_KEEP_ALIVE”。
https://docs.snowflake.com/en/sql-reference/parameters.html#client-session-keep-alive
当您设置 CLIENT_SESSION_KEEP_ALIVE 时,客户端将更新会话的令牌(默认值为 1 小时)。
正如 Peter 所提到的,CSL 使用量高达每日仓库使用量的 10% 是免费的,因此刷新令牌实际上不会花费您任何费用。
关于您的方法:我不知道您计划每天 运行 查询多少次,但为每个查询创建一个新连接可能会成为性能杀手。从成本的角度来看,空闲连接一天最多会执行 24 个授权请求,因此如果您计划一天 运行 超过 24 个查询,我建议您选择第一种方法。