本页介绍预测优化,该优化会自动在 Azure Databricks 上运行 Unity 目录托管表的维护操作。
注意
对于在 2024 年 11 月 11 日或之后创建的帐户,默认启用预测优化。 Databricks 于 2025 年 5 月 7 日开始启用现有帐户。 此推出是渐进式的,预计到 2026 年 4 月完成。 若要检查帐户是否已启用,请参阅 验证是否已启用预测优化。
启用预测优化后,Databricks 会自动执行以下操作:
- 识别可以从维护作业中受益的表,并将这些作业排入队列以运行。
- 在将数据写入托管表时收集统计信息。
这消除了不必要的维护运行以及手动跟踪和故障排除性能的负担。
Databricks 建议对所有 Unity 目录托管表进行预测优化。 例如,自动数据聚类根据您的数据使用模式对数据布局进行智能优化。 请参阅对表使用 liquid 聚类分析。
预测优化运行哪些操作?
预测优化在 Unity 目录托管表上运行以下操作:
| 操作 | 说明 |
|---|---|
OPTIMIZE |
为已启用的表触发增量聚类分析。 请参阅对表使用 liquid 聚类分析。 通过优化文件大小来提高查询性能。 请参阅优化数据文件布局。 |
VACUUM |
通过删除表不再引用的数据文件来降低存储成本。 请参阅使用 vacuum 删除未使用的数据文件。 |
ANALYZE |
触发统计信息增量更新以提高查询性能。 请参阅 ANALYZE TABLE ...计算统计信息。 |
注意
OPTIMIZE 在由预测优化执行时不运行 ZORDER 。 在使用 Z 顺序的表上,预测优化将忽略 Z 排序的文件。
如果启用了自动液体聚类分析,预测优化可能会在聚类分析数据之前选择新的聚类分析键。 请参阅 自动液体聚类。
警告
保留时段 VACUUM 由 delta.deletedFileRetentionDuration 表属性确定,默认为 7 天。
VACUUM 删除该窗口中 Delta 表版本不再引用的数据文件。 若要保留较长持续时间的数据(例如,为了支持延长时间旅行),在启用预测优化之前设置此属性:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
计算和计费
针对作业,通过使用无服务器计算来运行预测优化ANALYZE、OPTIMIZE和VACUUM操作。 使用无服务器作业 SKU 对您的账户进行计费。
请参阅 Databricks 托管服务的定价。 请参阅 使用系统表跟踪预测优化。
先决条件
必须满足以下要求才能使用预测优化:
- Azure Databricks 工作区必须在高级计划下,并位于受支持的区域。
- 必须使用 SQL 仓库或 Databricks Runtime 12.2 LTS 或更高版本。
- 仅支持 Unity Catalog 托管表。
- 如果需要存储帐户的专用连接,请配置无服务器专用连接。 请参阅 配置与 Azure 资源的专用连接。
启用预测优化
可以为帐户、目录或架构启用预测优化。 默认情况下,所有 Unity 目录托管表都继承帐户值。 可以在目录或架构级别替代帐户默认值。
必须具有以下权限才能启用或禁用预测优化:
| Unity Catalog 对象 | 权限 |
|---|---|
| 帐户 | 帐户管理员 |
| 目录 | 目录所有者 |
| 架构 | 架构所有者 |
启用或禁用帐户的预测优化
帐户管理员可以为帐户中的所有元存储启用预测优化。 目录和架构默认继承此设置,但可以在任一级别重写此设置。
- 转到帐户控制台。
- 导航到“设置”,然后导航到“功能启用”。
- 选择预测优化旁边的选项(例如已启用)。
注意
- 不支持预测优化的区域中的元存储未启用。
- 在帐户级别禁用预测优化不会影响那些已经明确启用了该功能的目录或架构。
启用或禁用目录或架构的预测优化
预测优化使用继承模型。 为目录启用时,该目录中的架构将继承该设置,并且启用的架构中的表也会继承该设置。 可以显式启用或禁用目录或架构的预测优化以替代此行为。
注意
可以先在目录或架构级别禁用预测优化,然后再在帐户级别启用它。 如果预测优化稍后在帐户级别启用,则这些对象中的表仍被阻止。
使用以下语法启用、禁用或重置预测优化,以便从父对象继承:
ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
验证是否启用了预测优化
该 Predictive Optimization 字段是一个 Unity 目录属性,用于显示是否启用预测优化。 如果设置继承自父对象,则字段值将指示这一点。
使用以下语法检查状态:
DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name
使用系统表跟踪预测优化
Databricks 提供系统表 system.storage.predictive_optimization_operations_history 用于监控预测优化操作、成本和影响。 请参阅预测优化系统表参考。
专用链接错误消息
如果系统表将操作标记为失败FAILED: PRIVATE_LINK_SETUP_ERROR,则无服务器专用链接可能未正确配置。 请参阅 配置与 Azure 资源的专用连接。
限制
预测优化不会在下表类型上运行:
- 被加载到工作区的表是作为Delta Sharing的接收方
- 外部表