在Snowflake中,每个标准型虚拟仓库都拥有独立的计算资源池,与其他虚拟仓库相互隔离。这种隔离为不同工作负载提供了独立的成本控制、服务级别协议(SLA)和成本核算能力,但也意味着当某个虚拟仓库出现查询排队时,另一个虚拟仓库的闲置计算资源无法用于缓解拥堵。自适应计算(Adaptive Compute)的目标,正是在保留这些隔离边界的同时避免资源浪费。
自适应计算建立在四项核心原则之上。共享计算让多个工作负载共享同一个计算资源池,某个工作负载暂时不用的资源可用于执行其他工作负载的查询;自动调整计算规模让每条查询获得与其需求匹配的计算规模,而非预先选定固定规模应用于所有查询;平台自动使用最新硬件与查询加速技术,无需手动升级或重新配置;易用性方面,标准型虚拟仓库需管理15个以上配置属性,自适应计算将其简化为两个,虚拟仓库规模、多集群设置、查询加速服务配置以及自动挂起和恢复策略均不再需要用户自行管理。
实现方式是改变虚拟仓库底层的计算资源组织方式:账户中所有自适应虚拟仓库的任务都会被路由至该账户专属的计算资源池,该资源池不与其他账户或其他类型虚拟仓库共享。各个虚拟仓库仍是相互独立的访问端点,用于组织、治理工作负载并生成报告,但执行查询的底层计算资源已经池化。传统模式下,每个运行中的虚拟仓库都是一座独立的资源孤岛,必须为自身峰值负载预留容量,峰值未到时这些容量无法被其他工作负载利用。
客户组织计算资源主要有三种方式:独立虚拟仓库会预留无法充分利用的闲置容量,无法获得资源整合带来的成本节约;少量大型整合式虚拟仓库可重新利用闲置资源,但会增加查询路由复杂性,并削弱成本控制与SLA所依赖的工作负载级隔离边界;共享计算则兼顾资源整合的成本节约与工作负载级隔离。此外,迁移至自适应计算的虚拟仓库越多,资源池汇聚的总需求越大,系统高效调度查询的机会也越多,规模经济效应因此显现,这也是仅迁移一个虚拟仓库时收益通常最少的原因。