Otimização preditiva para tabelas gerenciadas do Unity Catalog
Nota
Para todas as contas criadas após 11 de novembro de 2024, o Databricks permite a otimização preditiva por padrão.
A otimização preditiva elimina a necessidade de gerenciar manualmente as operações de manutenção para tabelas gerenciadas do Unity Catalog no Azure Databricks.
Com a otimização preditiva habilitada, o Azure Databricks faz o seguinte automaticamente:
- Identifica tabelas que poderiam beneficiar-se das operações de manutenção e coloca essas operações em fila para serem executadas.
- Coleta estatísticas quando os dados são gravados em uma tabela gerenciada.
As operações de manutenção são executadas conforme necessário, eliminando tanto execuções desnecessárias para operações de manutenção quanto a carga associada ao rastreamento e à solução de problemas de desempenho.
Importante
A otimização preditiva só é executada em tabelas gerenciadas pelo Unity Catalog.
A otimização preditiva não é executada em tabelas de streaming ou em exibições materializadas criadas no Databricks SQL ou ao usar pipelines Delta Live Tables.
Quais operações a otimização preditiva executa?
A otimização preditiva executa as seguintes operações automaticamente para tabelas habilitadas:
Operation | Description |
---|---|
OPTIMIZE
(1) |
Desencadeia a clusterização incremental para tabelas habilitadas. Consulte Utilize agrupamento líquido para tabelas Delta. Melhora o desempenho da consulta otimizando o tamanho dos arquivos. Consulte Otimizar layout do ficheiro de dados. |
VACUUM |
Reduz os custos de armazenamento excluindo arquivos de dados que não são mais referenciados pela tabela. Consulte Remover arquivos de dados não utilizados com vácuo. |
ANALYZE |
Aciona a atualização incremental de estatísticas para melhorar o desempenho da consulta. Consulte ANALYZE TABLE. |
(1)OPTIMIZE
não é executado ZORDER
quando executado com otimização preditiva.
Aviso
A janela de retenção para o comando VACUUM
é determinada pela propriedade delta.deletedFileRetentionDuration
table, cujo padrão é 7 dias. Isso significa que VACUUM
remove arquivos de dados que não são mais referenciados por uma versão de tabela Delta nos últimos 7 dias. Se você quiser reter dados por mais tempo (como para dar suporte a viagens no tempo por durações maiores), defina essa propriedade de tabela adequadamente antes de habilitar a otimização preditiva, como no exemplo a seguir:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Onde funciona a otimização preditiva?
A otimização preditiva identifica tabelas que podem beneficiar-se das operações ANALYZE
, OPTIMIZE
e VACUUM
e as enfileira para a execução de trabalhos utilizando computação serverless. Sua conta é cobrada pela computação associada a essas cargas de trabalho usando uma SKU específica para o Databricks Managed Services. Consulte os preços dos serviços gerenciados do Databricks. O Azure Databricks fornece tabelas do sistema para observabilidade em operações, custos e impacto de otimização preditiva. Ver Usar tabelas do sistema para acompanhar a otimização preditiva.
Pré-requisitos para otimização preditiva
Você deve cumprir os seguintes requisitos para habilitar a otimização preditiva:
Seu espaço de trabalho do Azure Databricks deve estar no plano Premium em uma região que ofereça suporte à otimização preditiva. Consulte Regiões do Azure Databricks.
Você deve usar armazéns SQL ou Databricks Runtime 12.2 LTS ou superior ao habilitar a otimização preditiva.
Somente tabelas gerenciadas do Unity Catalog são suportadas.
Se você precisar de conectividade privada para suas contas de armazenamento, deverá configurar a conectividade privada sem servidor. Consulte Configurar conectividade privada a partir de computação sem servidor.
Habilite a otimização preditiva
Você pode habilitar a otimização preditiva para uma conta, um catálogo ou um esquema. Todas as tabelas gerenciadas pelo Unity Catalog herdam o valor da conta por padrão. Você pode substituir o padrão de conta para um catálogo ou esquema para habilitar ou desabilitar a otimização preditiva nesse nível.
Nota
Se a sua conta tiver sido criada após 11 de novembro de 2024, a otimização preditiva está ativada para a sua conta por predefinição.
Você deve ter os seguintes privilégios para habilitar ou desabilitar a otimização preditiva no nível especificado:
Objeto Unity Catalog | Privilege |
---|---|
Account | Administrador de Conta |
Catálogo | Proprietário do catálogo |
Esquema | Proprietário do esquema |
Nota
Quando você habilita a otimização preditiva pela primeira vez, o Azure Databricks cria automaticamente uma entidade de serviço em sua conta do Azure Databricks. O Azure Databricks usa essa entidade de serviço para executar as operações de manutenção solicitadas. Veja Gerir principais de serviço.
Ativar ou desativar a otimização preditiva para a sua conta
Um administrador de conta pode concluir as etapas a seguir para habilitar a otimização preditiva para todos os metastores de uma conta. Os objetos na conta herdarão essa configuração por padrão (mas a configuração pode ser substituída no nível do catálogo ou do esquema):
- Aceda à consola de contas.
- Navegue até Configurações e, em seguida , Ativação de recursos.
- Selecione a opção a ser usada (por exemplo, Enabled) ao lado de Predictive optimization.
Nota
- Metastores em regiões que não suportam otimização preditiva não estão habilitados.
- A desativação da otimização preditiva no nível da conta não a desativa para catálogos ou esquemas que a habilitaram especificamente.
Habilitar ou desabilitar a otimização preditiva para um catálogo ou esquema
A otimização preditiva usa um modelo de herança. Quando habilitados para um catálogo, os esquemas herdam a propriedade. As tabelas dentro de um esquema habilitado herdam a otimização preditiva. Para substituir esse comportamento de herança, você pode habilitar ou desabilitar explicitamente a otimização preditiva para um catálogo ou esquema.
Nota
Você pode desabilitar a otimização preditiva no nível do catálogo ou do esquema antes de ativá-la no nível da conta. Se a otimização preditiva for habilitada posteriormente na conta, ela será bloqueada para tabelas nesses objetos.
Use a sintaxe a seguir para habilitar ou desabilitar a otimização preditiva ou para retornar ao padrão de herança do objeto pai:
ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
Verificar se a otimização preditiva está ativada
O campo Predictive Optimization
é uma propriedade do Catálogo Unity que detalha se a otimização preditiva está habilitada. Se a otimização preditiva for herdada de um objeto pai, isso será indicado no valor do campo.
Use a sintaxe a seguir para ver se a otimização preditiva está habilitada:
DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name
Use tabelas do sistema para acompanhar a otimização preditiva
O Azure Databricks fornece uma tabela do sistema para controlar o histórico de operações de otimização preditiva. Consulte a referência da tabela do sistema de otimização preditiva em .
Mensagem de erro de link privado
Se a tabela do sistema marcar as operações como falhadas com FAILED: PRIVATE_LINK_SETUP_ERROR
, talvez você não tenha configurado corretamente o link privado para computação sem servidor. Consulte Configurar conectividade privada a partir de computação sem servidor.
Limitações
A otimização preditiva não está disponível em todas as regiões. Consulte Regiões do Azure Databricks.
A otimização preditiva não executa comandos OPTIMIZE
em tabelas que usam Z-order.
A otimização preditiva não executa operações VACUUM
em tabelas com uma janela de retenção de arquivos configurada abaixo do padrão de 7 dias. Consulte Configurar retenção de dados para consultas de viagem no tempo.
A otimização preditiva não executa operações de manutenção nas tabelas a seguir:
- Tabelas carregadas em um espaço de trabalho como destinatários do Compartilhamento Delta.
- Tabelas externas.
- Visões materializadas. Veja Utilizar vistas materializadas no Databricks SQL.
- Tabelas de streaming. Veja carregar dados usando tabelas em fluxo contínuo no Databricks SQL.