Compartilhar via


O que são vetores de exclusão?

Os vetores de exclusão são um recurso de otimização de armazenamento que você pode habilitar nas tabelas do Delta Lake. Por padrão, quando uma única linha em um arquivo de dados é excluída, todo o arquivo Parquet que contém o registro deve ser reescrito. Com os vetores de exclusão habilitados para a tabela, as operações DELETE, UPDATE e MERGE usam vetores de exclusão para marcar as linhas existentes como removidas ou alteradas sem reescrever o arquivo Parquet. As leituras subsequentes na tabela resolvem o estado atual da tabela aplicando as exclusões indicadas pelos vetores de exclusão à versão mais recente da tabela.

O Databricks recomenda usar o Databricks Runtime 14.3 LTS e superior para gravar tabelas com vetores de exclusão para usar todas as otimizações. Você pode ler tabelas com vetores de exclusão habilitados no Databricks Runtime 12.2 LTS e superior.

No Databricks Runtime 14.2 e superior, as tabelas com vetores de exclusão dão suporte à simultaneidade de nível de linha. Consulte Conflitos de gravação com simultaneidade em nível de linha.

Observação

O Photon utiliza vetores de exclusão para atualizações de E/S preditivas, aceleração de DELETE, MERGE e operações UPDATE. Todos os clientes que dão suporte à leitura de vetores de exclusão podem ler atualizações que produziram vetores de exclusão, independentemente de a E/S preditiva ter produzido essas atualizações. Consulte Usar E/S preditiva para acelerar atualizações.

Habilitar vetores de exclusão

Importante

Uma configuração de administrador do workspace controla se os vetores de exclusão estão habilitados automaticamente para novas tabelas Delta. Consulte Habilitar automaticamente os vetores de exclusão.

Se a configuração do workspace para controlar a habilitação automática de vetores de exclusão for usada, com base na opção selecionada para tipos de tabela, os vetores de exclusão serão habilitados por padrão quando você criar uma nova tabela usando um SQL warehouse ou Databricks Runtime 14.1 ou superior. Os vetores de exclusão não são habilitados por padrão quando você cria exibições materializadas ou tabelas de streaming e devem ser ativados manualmente quando você cria uma exibição materializada ou tabela de streaming.

Para habilitar manualmente o suporte para vetores de exclusão em uma tabela ou exibição, use a delta.enableDeletionVectors propriedade table. Você pode ativar manualmente os vetores de exclusão em uma tabela delta ao criar ou alterar a tabela. Você pode habilitar manualmente os vetores de exclusão em uma exibição materializada ou tabela de streaming somente ao criar a exibição materializada ou a tabela de streaming. Você não pode usar uma ALTER instrução para habilitar vetores de exclusão em uma exibição materializada ou tabela de streaming.

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Aviso

Quando você habilita os vetores de exclusão, a versão do protocolo de tabela é atualizada. Após a atualização, a tabela não será legível por clientes do Delta Lake que não dão suporte a vetores de exclusão. Confira Como o Azure Databricks gerencia a compatibilidade de recursos do Delta Lake?

No Databricks Runtime 14.1 e superior, você pode descartar o recurso de tabela de vetores de exclusão para habilitar a compatibilidade com outros clientes Delta. Consulte Remover os recursos da tabela Delta.

Aplicar alterações aos arquivos de dados Parquet

Os vetores de exclusão indicam alterações nas linhas como exclusões temporárias que modificam logicamente os arquivos de dados Parquet existentes na tabela Delta Lake. Essas alterações são aplicadas fisicamente quando um dos seguintes eventos faz com que os arquivos de dados sejam regravados:

  • Um comando OPTIMIZE é executado na tabela.
  • A compactação automática dispara uma reescrita de um arquivo de dados com um vetor de exclusão.
  • REORG TABLE ... APPLY (PURGE) é executado em relação à tabela.

Eventos relacionados à compactação de arquivos não têm garantias estritas para resolver alterações registradas em vetores de exclusão e algumas alterações registradas em vetores de exclusão podem não ser aplicadas se os arquivos de dados de destino não forem candidatos à compactação de arquivos. REORG TABLE ... APPLY (PURGE) reescreve todos os arquivos de dados que contêm registros com modificações registradas usando vetores de exclusão. Consulte a TABELA REORG .

Observação

Os dados modificados ainda podem existir nos arquivos antigos. Você pode executar o VACUUM para excluir fisicamente os arquivos antigos. REORG TABLE ... APPLY (PURGE) cria uma nova versão da tabela quando ela é concluída. Esse tempo de conclusão é o carimbo de data/hora que você deve considerar para o limite de retenção para sua VACUUM operação remover totalmente os arquivos excluídos. Confira Remover arquivos de dados não utilizados com o vacuum.

Compatibilidade com clientes Delta

O Azure Databricks usa vetores de exclusão para alimentar a E/S preditiva para atualizações na computação habilitada para Photon. Consulte Usar E/S preditiva para acelerar atualizações.

O suporte para o uso de vetores de exclusão para leituras e gravações varia de acordo com o cliente.

A tabela a seguir indica as versões de cliente necessárias para leitura e gravação de tabelas Delta com vetores de exclusão habilitados e especifica quais operações de gravação usam vetores de exclusão:

Cliente Gravar vetores de exclusão Vetores de exclusão
Databricks Runtime com Photon Dá suporte a MERGE, UPDATEe DELETE, usando o Databricks Runtime 12.2 LTS e superior. Requer o Databricks Runtime 12.2 LTS ou superior.
Databricks Runtime sem Photon Dá suporte a DELETE usando o Databricks Runtime 12.2 LTS e superior. Oferece suporte ao uso do Databricks Runtime 14.1 e superior por UPDATE. Dá suporte à operação MERGE usando o Databricks Runtime 14.3 LTS e superior. Requer o Databricks Runtime 12.2 LTS ou superior.
OOS Apache Spark com OSS Delta Lake Oferece suporte ao uso do OSS Delta 2.4.0 e superior por DELETE. Oferece suporte ao uso do OSS Delta 3.0.0 e superior por UPDATE. Requer o OSS Delta 2.3.0 ou superior.
Destinatários de compartilhamento Delta Não há suporte para gravações em tabelas de compartilhamento Delta Databricks: requer DBR 14.1 ou superior. Apache Spark de código aberto: requer delta-sharing-spark 3.1 ou superior.

Observação

Para obter suporte com outros clientes da Delta, consulte a documentação de integrações do OSS Delta Lake.

Limitações

  • O UniForm não dá suporte a vetores de exclusão.
  • Você não pode usar uma instrução GENERATE para gerar um arquivo de manifesto para uma tabela que tenha arquivos usando vetores de exclusão. Para gerar um manifesto, primeiro execute um REORG TABLE ... APPLY (PURGE) e, em seguida, execute a GENERATE instrução. Você deve garantir que nenhuma operação de gravação simultânea esteja em execução ao enviar a REORG instrução.
  • Não é possível gerar incrementalmente arquivos de manifesto para uma tabela com vetores de exclusão habilitados (por exemplo, definindo a propriedade delta.compatibility.symlinkFormatManifest.enabled=truetable ).
  • Se você habilitar vetores de exclusão em uma exibição materializada ou tabela de streaming e, posteriormente, desabilitar vetores de exclusão, as gravações futuras na exibição ou tabela serão impedidas de usar vetores de exclusão, mas os vetores de exclusão existentes não serão removidos.
  • Não é possível fazer downgrade do protocolo de tabela depois de habilitar vetores de exclusão em uma exibição materializada ou tabela de streaming. Após a ativação, o recurso de tabela para vetores de exclusão não pode ser removido, mesmo que você desative posteriormente os vetores de exclusão na exibição ou tabela.
  • Não é possível executar REORG em exibições materializadas ou tabelas de streaming para confirmar alterações registradas em vetores de exclusão em arquivos de dados Parquet que dão suporte a esses objetos. Devido a essa limitação, não habilite vetores de exclusão em exibições materializadas ou tabelas de streaming se você precisar garantir a exclusão completa de registros (por exemplo, para conformidade com GDPR ou CCPA).