本文介绍如何调整、缩放和管理 Databricks SQL 仓库的查询队列的大小、缩放和管理,以优化性能和成本。 Databricks 建议对大多数工作负荷使用无服务器 SQL 仓库。 无服务器 SQL 仓库通过动态管理查询的资源来提供最佳性能和效率。
无服务器 SQL 仓库管理
无服务器 SQL 仓库使用 智能工作负荷管理 (IWM)自动管理查询工作负荷。 IWM 是一组由 AI 提供支持的功能,无需管理基础结构即可快速且经济高效地处理查询。
智能工作负荷管理和自动缩放
IWM 使用机器学习模型动态管理计算资源:
- 新查询到达时,IWM 会预测其资源要求并检查可用的容量。
- 如果容量存在,查询将立即启动。
- 否则,查询将置于队列中。
- IWM 持续监视队列。 如果等待时间增加,自动缩放程序会快速预配更多群集来处理排队的查询。
- 当需求下降时,IWM 会缩减资源,以降低成本,同时保持足够的容量来处理最近的峰值负载。
此方法提供:
- 快速向上缩放,以保持低查询延迟。
- 一旦硬件可用,就会允许查询高吞吐量。
- 快速缩减,以在低需求期间节省成本。
调整无服务器 SQL 仓库的大小
群集大小(例如 X-Small、Medium、Large)确定可用于单个群集的计算资源。 自动缩放程序根据需要添加或删除该大小的群集。
使用以下准则来帮助选择正确的大小:
- 从单个更大的仓库开始,让无服务器功能管理并发和性能。 如果需要,缩小大小通常比开始缩小和纵向扩展更有效。
- 如果查询溢出到磁盘,请增加群集大小。 检查查询配置文件中的溢出。
- 对于具有多个并发查询的工作负荷,请配置足够的最大群集数来处理峰值负载。 监视仓库监视页上的 “峰值排队查询 ”指标。
注意
对于无服务器 SQL 仓库,在某些情况下,群集大小可能会使用与专业和经典 SQL 仓库文档中列出的实例类型不同的实例类型,以用于等效群集大小。 总的来说,对于无服务器 SQL 仓库,其群集大小的性价比与专业和经典 SQL 仓库的相似。
监视仓库性能
可以使用这些工具监视和调整任何 SQL 仓库的大小。 所有仓库类型队列中的最大查询数为 1,000。
- 监视页: 在“SQL 仓库监视”选项卡上,检查 “峰值排队查询”。 高于 0 的一致值表示可能需要更大的群集大小或更多群集。
- 查询历史记录: 查看历史查询性能以确定瓶颈。
- 查询配置文件: 检查溢出 到磁盘的指标的执行计划,这表示仓库大小可能太小。
经典和专业 SQL 仓库
经典仓库和专业仓库使用手动缩放模型,可在其中配置群集数。
大小调整和群集预配
创建经典或专业仓库时,请选择群集大小,并设置群集的最小和最大数目。 这些 SKU 的固定限制为每个 10 个并发查询一个群集。
| 群集大小 | 驱动程序实例类型 | 辅助角色计数 |
|---|---|---|
| 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。
每个司机和工人都附加了一个 256 GB 的高级 SSD 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 是对 Azure vCPU(供“数据科学与工程”使用的群集或非 Databricks 工作负载使用)的补充。
若要请求额外的 Azure vCPU 配额,请参阅 Azure 文档中的标准配额:按 VM 序列提高上限。
注意
此表中的信息可能因产品或区域可用性和工作区类型而异。
队列和自动缩放逻辑
对于经典仓库和专业仓库,自动缩放会根据估计的时间添加群集来处理所有正在运行的查询和排队查询:
- 2-6 分钟的查询加载:添加 1 个群集。
- 6-12 分钟:添加 2 个群集。
- 12-22 分钟:添加 3 个群集。
- 超过 22 分钟:再添加 3 个群集,再添加 1 个群集,再增加 15 分钟负载。
其他规则:
- 如果查询在队列中等待 5 分钟,则仓库会纵向扩展。
- 如果连续 15 分钟负载保持较低,则仓库将缩减为处理该时间段的峰值负载所需的最低负载。