Unity Catalog 托管表的预测性优化

注意

对于在 2024 年 11 月 11 日之后创建的所有帐户,Databricks 默认启用预测优化。

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

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

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

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

重要

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

预测优化不会在 Databricks SQL 中创建或使用增量实时表管道创建的流式处理表或具体化视图上运行。

预测优化运行哪些操作?

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

操作 说明
OPTIMIZE(1) 为已启用的表触发增量聚类分析。 请参阅对 Delta 表使用 liquid 聚类分析

通过优化文件大小来提高查询性能。 请参阅优化数据文件布局
VACUUM 通过删除表不再引用的数据文件来降低存储成本。 请参阅使用 vacuum 删除未使用的数据文件
ANALYZE 触发统计信息增量更新以提高查询性能。 请参阅 ANALYZE TABLE

(1)OPTIMIZE 在使用预测优化执行时不运行 ZORDER

警告

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

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

预测优化在何处运行?

预测优化标识将受益于 ANALYZE的表, OPTIMIZE以及 VACUUM 操作和队列,以使用无服务器计算为作业运行。 你的帐户将使用特定于 Databricks 托管服务的 SKU 针对与这些工作负载关联的计算进行付费。 请参阅 Databricks 托管服务的定价。 Azure Databricks 为实现预测优化操作、成本和影响的可观测性提供了系统表。 请参阅使用系统表跟踪预测优化

预测优化先决条件

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

  • 你的 Azure Databricks 工作区必须位于支持预测优化的区域中的高级计划中。 请参阅 Azure Databricks 区域

  • 启用预测优化时,必须使用 SQL 仓库或 Databricks Runtime 12.2 LTS 或更高版本。

  • 仅支持 Unity Catalog 托管表。

  • 如果存储帐户需要专用连接,则必须配置无服务器专用连接。 请参阅从无服务器计算配置专用连接

启用预测优化

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

注意

如果在 2024 年 11 月 11 日之后创建了帐户,则默认情况下会为帐户启用预测优化。

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

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

注意

首次启用预测优化时,Azure Databricks 会自动在 Azure Databricks 帐户中创建服务主体。 Azure Databricks 使用此服务主体来执行请求的维护操作。 请参阅管理服务主体

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

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

  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 提供了一个系统表来跟踪预测优化操作的历史记录。 请参阅预测优化系统表参考

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

限制

预测优化在所有区域中都不可用。 请参阅 Azure Databricks 区域

预测性优化不会对使用 Z 顺序的表运行 OPTIMIZE 命令。

预测性优化不会对文件保留窗口配置为低于默认值(7 天)的表运行 VACUUM 操作。 请参阅为“按时间顺序查看”查询配置数据保留

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