Unity Catalog 托管表的预测优化

注意

默认情况下,Databricks 为 2024 年 11 月 11 日之后创建的所有帐户启用预测优化。 从 2025 年 5 月 7 日起,Databricks 默认为所有现有 Databricks 帐户启用预测优化。 这将根据你的区域逐步推出,将于 2025 年 7 月 1 日完成。 可以 检查是否为帐户启用了预测优化

预测性优化无需手动管理 Azure Databricks 上 Unity Catalog 托管表的维护操作。

启用预测优化后,Azure Databricks 会自动执行以下作:

  • 识别哪些表会从维护操作中受益,并将这些操作排入等待运行的队列。
  • 在将数据写入托管表时收集统计信息。

维护作业是根据需要进行的,消除了维护操作的不必要运行以及与跟踪和解决性能问题相关的负担。

Databricks 建议对所有 Unity 目录托管表使用预测优化。 例如,自动液体聚类分析基于数据使用模式对数据布局进行了智能优化。 请参阅对 Delta 表使用 liquid 聚类分析

重要

预测优化仅在 Unity 目录托管表上运行。

预测优化在所有区域中都不可用。 请参阅区域可用性受限的功能

预测优化运行哪些操作?

预测性优化会对启用的表自动执行以下操作:

操作 说明
OPTIMIZE (1) 为已启用的表触发增量聚类分析。 请参阅对 Delta 表使用 liquid 聚类分析
通过优化文件大小来提高查询性能。 请参阅优化数据文件布局
VACUUM 通过删除表不再引用的数据文件来降低存储成本。 请参阅使用 vacuum 删除未使用的数据文件
ANALYZE 触发统计信息增量更新以提高查询性能。 请参阅 ANALYZE TABLE

使用预测优化执行时,(1) 不会运行 OPTIMIZEZORDER。 在使用 Z 顺序的表上,预测优化将忽略 Z 排序的文件。

如果启用了自动液体聚类分析,预测优化可能会在聚类分析数据之前选择新的聚类分析键。 请参阅对 Delta 表使用 liquid 聚类分析

警告

VACUUM 命令的保留期由 delta.deletedFileRetentionDuration 表属性确定,默认为 7 天。 这意味着 VACUUM 会删除过去 7 天内 Delta 表版本不再引用的数据文件。 如果要将数据保留更长时间(例如支持持续时间较长的时间旅行),则必须在启用预测优化之前适当地设置此表属性,如以下示例所示:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

如果在默认值为 7 天以下进行配置 delta.deletedFileRetentionDuration ,则预测优化将运行 VACUUM 保留期为 7 天。

预测优化在哪里实施?

预测优化识别出表格会从 ANALYZEOPTIMIZEVACUUM 操作中受益,并将它们列入队列,以便使用无服务器计算来运行这些作业。 将针对与这些使用无服务器作业 SKU 的工作负载关联的计算向你的帐户收费。

请参阅 Databricks 托管服务的定价。 请参阅使用系统表跟踪预测优化

预测优化先决条件

必须满足以下要求才能启用预测优化:

  • 你的 Azure Databricks 工作区必须位于支持预测优化的区域中的高级计划中。 请参阅区域可用性受限的功能
  • 启用预测优化时,必须使用 SQL 仓库或 Databricks Runtime 12.2 LTS 或更高版本。
  • 仅支持 Unity Catalog 托管表。

启用预测优化

可以为帐户、目录或架构启用预测优化。 默认情况下,所有 Unity 目录托管表都继承帐户值。 可以覆盖目录或架构的帐户默认值,以便在该级别启用或禁用预测优化。

注意

如果帐户是在 2024 年 11 月 11 日之后创建的,则默认启用预测优化。 从 2025 年 5 月 7 日开始,默认情况下为所有现有帐户启用预测优化。 这将根据你的区域逐步推出,将于 2025 年 7 月 1 日完成。

必须具有以下特权才能在指定级别启用或禁用预测优化:

Unity Catalog 对象 权限
帐户​​ 帐户管理员
目录 目录所有者
架构 架构所有者

启用或禁用帐户的预测优化

帐户管理员可以完成以下步骤,为帐户中的所有元存储启用预测优化。 默认情况下,帐户中的对象将继承此设置(但可以在目录或架构级别重写该设置):

  1. 访问帐户控制台。
  2. 导航到“设置”,然后导航到“功能启用”。
  3. 在“预测性优化”旁边选择要使用的选项(例如“已启用”)

注意

  • 不支持预测优化的区域中的元存储未启用。
  • 在帐户级别禁用预测优化不会影响那些已经明确启用了该功能的目录或架构。

启用或禁用目录或架构的预测优化

预测优化使用继承模型。 为目录启用预测优化时,架构将继承属性。 启用架构内的表格继承预测优化功能。 若要替代此继承行为,可以显式启用或禁用目录或架构的预测优化。

注意

可以先在目录或架构级别禁用预测优化,然后再在帐户级别启用它。 如果稍后在帐户上启用预测优化,系统会针对这些对象中的表阻止它。

使用以下语法启用或禁用预测优化,或返回从父对象继承的默认值:

ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;

检查是否启用了预测优化

Predictive Optimization 字段是一个 Unity Catalog 属性,用于详细说明是否启用了预测优化。 如果预测优化继承自父对象,则会在字段值中指明这一点。

使用以下语法查看是否启用了预测优化:

DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name

使用系统表跟踪预测优化

Azure Databricks 为预测性优化操作、成本和影响提供可观测性的系统表 system.storage.predictive_optimization_operations_history 。 请参阅预测优化系统表参考

如果系统表使用 FAILED: PRIVATE_LINK_SETUP_ERROR 将操作标记为失败,则可能无法正确配置无服务器计算的专用链接。 请参阅 配置与 Azure 资源的专用连接

限制

预测优化在所有区域中都不可用。 请参阅区域可用性受限的功能

对于已删除文件保留持续时间 (delta.deletedFileRetentionDuration) 配置为低于默认值 7 天的表,预测优化会在保留持续时间为 7 天的情况下运行 VACUUM。 请参阅配置时间旅行查询的数据保留

预测优化不会对以下表执行维护操作:

  • 作为 Delta Sharing 接收者加载到工作区的表。
  • 外部表。