代码之家  ›  专栏  ›  技术社区  ›  Marco Roy

Snowflake中重复停仓和复仓的信贷使用

  •  1
  • Marco Roy  · 技术社区  · 2 年前

    我很好奇恢复&在一分钟内多次暂停仓库(无论是手动暂停还是自动暂停)。

    该用例适用于计划不可预测的极短工作负载(可能有重叠,也可能没有重叠):

    • 是否最好在每个工作负载结束时立即暂停仓库(假设没有其他工作负载在运行),如果立即恢复,则再增加60秒的信用?
    • 还是让仓库闲置一段时间比较好?(希望避免至少60秒的不必要充电,但由于空闲时间增加,成本可能会增加)

    关于这个边缘案例,雪花文件有点含糊不清。

    从…起 Virtual Warehouse Credit Usage :

    此处显示的信用卡号码适用于一小时的使用;但是,信用卡是每秒计费的,至少60秒(即1分钟):

    • 每次仓库启动或调整到更大的规模时,都会根据上面显示的小时费率为仓库的1分钟使用计费。
    • 在第一分钟内停止和重新启动仓库不会改变账单金额;最低收费为1分钟。

    从…起 How are Credits Charged for Warehouses? :

    供应仓库时:

    • 供应仓库的最低计费费用为1分钟(即60秒)。
    • 在第一个60秒周期结束前停止仓库没有任何好处,因为信用卡已经在该周期内记账。
    • 在前60秒之后,对正在运行的仓库进行所有后续计费(直到仓库关闭)。下面提供了三个例子:
      • 如果仓库运行30到60秒,则按60秒计费。
      • 如果仓库的运行时间为61秒,则仅为61秒计费。
      • 如果一个仓库运行61秒,关闭,然后重新启动并运行不到60秒,则它的计费时间为121秒(60+1+60)。

    我要找的是一个大致如下的例子:

    • 如果仓库运行10秒,关闭,然后立即重新启动并再运行10秒:
      • 60秒收费吗?
      • 还是按120秒(60+60)计费?

    我想是后者,但我想确定。

    2 回复  |  直到 2 年前
        1
  •  1
  •   Simeon Pilgrim    2 年前
    create warehouse timetest2 WAREHOUSE_SIZE = XSMALL INITIALLY_SUSPENDED = TRUE;
    use warehouse timetest2;
    
    alter warehouse timetest2 RESUME;
    
    select sum(random()) 
    from table(generator(TIMELIMIT => 10));
    
    alter warehouse timetest2 SUSPEND;
    

    最后三步完成两次,暂停5秒。

    select start_time, 
        warehouse_name, 
        credits_used_compute, 
        round(credits_used_compute * 60,3) as minutes_billed
    from table(information_schema.warehouse_metering_history(dateadd('hour',-1,current_timestamp)));
    
    开始时间 仓库名称 学分_使用_计算 计费分钟数
    2022-04-16 15:32:36.000 -0700 时间测试2 0.033333333 2.
    2022-04-16 15:32:36.000 -0700 时间测试 0.033333333 2.

    做了两次,以防万一第一次做得太草率了。如前所述,它似乎是每分钟计费。

        2
  •  1
  •   Marco Roy    2 年前

    刚刚进行了一些测试,结果很清楚:

    仓库每次重启(无论上下文或上次暂停的时间)都将产生60秒的最低费用。

    我在中型仓库进行了测试(每分钟4/60学分):

    • 恢复6次,间隔分钟:0.40学分
    • 在同一分钟内恢复6次:0.40学分