SQL 仓库大小调整、缩放和队列行为

本文介绍 SQL 仓库的群集大小调整、排队和自动缩放行为。

专业和经典 SQL 仓库的群集大小

本部分中的表将 SQL 仓库群集大小映射到 Azure Databricks 群集驱动程序大小和辅助角色计数。 驱动程序大小仅适用于专业和经典 SQL 仓库。

群集大小 驱动程序的实例类型(仅适用于专业和经典 SQL 仓库) 辅助角色计数
2X-小 Standard_E8ds_v4 1 x Standard_E8ds_v4
X-小 Standard_E8ds_v4 2 x Standard_E8ds_v4
Standard_E16ds_v4 4 x Standard_E8ds_v4
Standard_E32ds_v4 8 x Standard_E8ds_v4
Standard_E32ds_v4 16 x Standard_E8ds_v4
X-大 Standard_E64ds_v4 32 x Standard_E8ds_v4
2X-大 Standard_E64ds_v4 64 x Standard_E8ds_v4
3X-大 Standard_E64ds_v4 128 x Standard_E8ds_v4
4X-大 Standard_E64ds_v4 256 x Standard_E8ds_v4

所有辅助角色的实例大小都是 Standard_E8ds_v4。

每个驱动程序和辅助角色均附加了 8 个 128 GB 标准 LRS 托管磁盘。 附加的磁盘按小时收费。

经典和专业 SQL 仓库所需的 Azure vCPU 配额

若要启动经典或专业 SQL 仓库,你的 Azure 帐户中必须为 Standard_E8ds_v4 实例提供足够的 Azure vCPU 配额。 使用以下准则来确定所需的 vCPU 配额:

  • 如果只有一个或两个 SQL 仓库,请确保为群集中的每个核心提供 8 个 Azure vCPU。 这样可确保拥有足够多的 Azure vCPU 来处理大约每 24 小时发生一次的仓库重新预配。 如果 SQL 仓库使用自动缩放或多群集负载均衡,则可能需要增加倍数。
  • 随着 SQL 仓库数量的增加,群集的每个核心可以拥有 4 到 8 个 Azure vCPU。 Databricks 建议从较大的数字开始并监视稳定性。
  • SQL 仓库使用的 Azure vCPU 是对供“数据科学与工程”或非 Databricks 工作负载使用的群集所用的 Azure vCPU 的补充。

若要请求额外的 Azure vCPU 配额,请参阅 Azure 支持请求

注意

此表中的信息可能因产品或区域可用性和工作区类型而异。

专业和经典 SQL 仓库的排队和自动缩放

Azure Databricks 根据计算结果的成本限制分配给 SQL 仓库的群集上的查询数。 每个仓库的群集纵向扩展取决于查询吞吐量、传入查询的速率和队列大小。 Azure Databricks 建议为每 10 个并发查询使用一个群集。 所有 SQL 仓库类型的队列中的最大查询数为 1000。

Azure Databricks 根据处理所有当前正在运行的查询、所有排队的查询以及在接下来的两分钟内预计传入的查询所需的时间,来添加群集。

  • 如果少于 2 分钟,请不要纵向扩展。
  • 如果为 2 到 6 分钟,请添加 1 个群集。
  • 如果为 6 到 12 分钟,请添加 2 个群集。
  • 如果为 12 到 22 分钟,请添加 3 个集群。

其他情况下,Azure Databricks 将添加 3 个群集,并每增加 15 分钟的预期查询负载就添加 1 个群集。

此外,如果查询在队列中等待 5 分钟,则始终会纵向扩展仓库。

如果处于低负载达到 15 分钟,则 Azure Databricks 将纵向缩减 SQL 仓库。 Azure Databricks 会保留足够的群集来处理最后 15 分钟的峰值负载。 例如,如果峰值负载为 25 个并发查询,Azure Databricks 会保留 3 个群集。

专业和经典 SQL 仓库的查询队列

当分配给仓库的所有群集都以满负荷状态执行查询或仓库处于 STARTING 状态时,Azure Databricks 会让查询排队。 所有 SQL 仓库类型的队列中的最大查询数为 1000。

元数据查询(例如 DESCRIBE <table>)和状态修改查询(例如 SET)永远不会排队,除非仓库处于 STARTING 状态。