代码之家  ›  专栏  ›  技术社区  ›  David542

雪花是如何瞬间调整大小的?

  •  0
  • David542  · 技术社区  · 4 年前

    我在使用Snowflake,我很惊讶它能够即时调整大小。这是一个非常 10s video 它如何立即调整大小,并且下次运行时查询仍然是“热”的(注意我有一个 CURRENT_TIMESTAMP 在查询中,它永远不会从缓存中返回):

    enter image description here

    Snowflake是如何进行瞬时调整的(与Redshift完全不同)?这是否意味着它只有一组始终打开的服务器,而调整大小只是运行该任务的内存/cpu的虚拟分配?底层数据是存储在共享磁盘上还是内存中?

    0 回复  |  直到 4 年前
        1
  •  5
  •   Marcel    4 年前

    简而言之,回答你关于调整大小的问题:是的,你完全正确。

    据我所知,Snowflake在后台管理着一个正在运行的服务器池。所有客户都可以从这里分配一些东西。 结果:从S到XS的调整大小是从该池中重新分配服务器。

    最有可能的是,Virtual Private Snowflake Edition的行为不同,因为这些帐户不与其他帐户(VPS之外)共享资源(例如虚拟仓库)。更多信息: https://docs.snowflake.com/en/user-guide/intro-editions.html#virtual-private-snowflake-vps

    关于您的存储问题: Snowflake的存储层基本上是一种存储服务,例如Amazon S3。在这里Snowflake以列格式保存数据,以便在微分区中更精确。关于微分区的更多信息可以在这里找到: https://docs.snowflake.com/en/user-guide/tables-clustering-micropartitions.html

    您的虚拟仓库访问此存储层(远程磁盘),或者(如果查询之前运行过)访问缓存。有一个本地磁盘缓存(这是使用SSD存储的虚拟仓库)和一个结果缓存(跨虚拟仓库可用于过去24小时内的查询): https://community.snowflake.com/s/article/Caching-in-Snowflake-Data-Warehouse

        2
  •  0
  •   Lukasz Szozda    3 年前

    为了扩展现有答案, ALTER WAREHOUSE 在标准设置中是非阻塞语句,这意味着它在提交后立即返回控制权。

    ALTER WAREHOUSE

    WAIT_FOR_COMPLETION = FALSE | TRUE
    

    在调整仓库大小时,您可以使用此参数阻止ALTER warehouse命令的返回,直到调整完成其所有服务器的配置。 当调整到更大的仓库时,阻止返回命令可以通知您服务器已完全配置,仓库现在已准备好使用所有新资源执行查询。

    有效值

    • FALSE:在仓库调整完成之前,ALTER WAREHOUSE命令立即返回。

    • TRUE:ALTER WAREHOUSE命令将一直阻塞,直到仓库大小调整完成。

    默认值:FALSE

    例如:

    ALTER WAREHOUSE <warehouse_name> SET WAREHOUSE_SIZE = XLARGE WAIT_FOR_COMPLETION = TRUE;
    

    编辑:

    The Snowflake Elastic Data Warehouse

    3.2.1弹性和隔离VW 纯计算资源。

    它们可以根据需要在任何时候创建、销毁或调整大小。创建或销毁VW对数据库的状态没有影响。当用户没有任何疑问时,关闭所有VW是完全合法的(也是鼓励的)。这种弹性允许用户动态地将其计算资源与使用需求相匹配,而与数据量无关。