O que são vetores de deleção?

Os vetores de exclusão são um recurso de otimização de armazenamento que o senhor pode ativar nas tabelas do Delta Lake. Pelo site default, quando uma única linha de um arquivo de dados é excluída, todo o arquivo Parquet que contém o registro deve ser reescrito. Com os vetores de exclusão ativados 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.

Databricks recomenda usar o Databricks Runtime 14.3 LTS e o acima para escrever tabelas com vetores de exclusão para usar todas as otimizações. O senhor pode ler tabelas com vetores de exclusão ativados em Databricks Runtime 12.2 LTS e acima.

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

Observação

O Photon aproveita os vetores de exclusão para atualizações preditivas de E/S, acelerando as operações DELETE, MERGE e UPDATE. Todos os clientes que oferecem 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 as atualizações.

Ativar vetores de exclusão

Importante

Uma configuração do administrador do workspace controla se os vetores de exclusão são ativados automaticamente para novas tabelas do Delta. Consulte Auto-enable deletion vectors (Vetores de exclusão de ativação automática).

Se a configuração workspace para controlar a ativação automática de vetores de exclusão for usada, então, com base na opção selecionada para tipos de tabela, os vetores de exclusão serão ativados por default quando o senhor criar uma nova tabela usando um SQL warehouse ou Databricks Runtime 14.1 ou acima. Os vetores de exclusão não são ativados pelo site default quando o senhor cria uma visualização materializada ou tabelas de transmissão e devem ser ativados manualmente quando o senhor cria uma view materializada ou uma tabela de transmissão.

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

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

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

Aviso

Ao ativar vetores de exclusão, o protocolo da tabela é atualizado. Após a atualização, a tabela não poderá ser lida por clientes Delta Lake que não suportam vetores de exclusão. Consulte Como o Databricks gerencia a compatibilidade de recursos do Delta Lake?.

No Databricks Runtime 14.1 e acima, você pode descartar o recurso de tabela de vetores de exclusão para permitir a compatibilidade com outros clientes Delta. Consulte Eliminar recurso da tabela Delta.

Aplicar alterações aos arquivos de dados do Parquet

Os vetores de exclusão indicam alterações nas linhas como exclusões suaves 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 aciona uma regravação de um arquivo de dados com um vetor de exclusão.

  • REORG TABLE ... APPLY (PURGE) é a execução contra a mesa.

Os eventos relacionados à compactação de arquivo 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 arquivo. REORG TABLE ... APPLY (PURGE) reescreve todos os arquivos de dados contendo registros com modificações registradas usando vetores de exclusão. Consulte TABELA REORG.

Observação

Os dados modificados ainda podem existir nos arquivos antigos. O senhor pode executar 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 registro de data e hora que o senhor deve considerar para o limite de retenção de suas VACUUM operações para remover totalmente os arquivos excluídos. Consulte Remover arquivos de dados não utilizados com o vacuum.

Compatibilidade com clientes Delta

Databricks usa vetores de exclusão para alimentar a E/S preditiva para atualizações no Photon-enabled compute. Consulte Usar E/S preditiva para acelerar as atualizações.

O suporte ao 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 ativados e especifica quais operações de gravação usam vetores de exclusão:

Cliente

Gravar vetores de exclusão

Ler vetores de exclusão

Databricks Runtime com Photon

Oferece suporte a MERGE, UPDATE e DELETE usando Databricks Runtime 12.2 LTS e acima.

É necessário o site Databricks Runtime 12.2 LTS ou acima.

Databricks Runtime sem Photon

Suporta DELETE usando Databricks Runtime 12.2 LTS e acima. Suporta UPDATE usando Databricks Runtime 14.1 e acima. Oferece suporte a MERGE usando Databricks Runtime 14.3 LTS e acima.

É necessário o site Databricks Runtime 12.2 LTS ou acima.

OSS Apache Spark com OSS Delta Lake

Suporta DELETE usando OSS Delta 2.4.0 e acima. Suporta UPDATE usando OSS Delta 3.0.0 e acima.

Requer OSS Delta 2.3.0 ou acima.

Destinatários de compartilhamento Delta

As gravações não são compatíveis com as tabelas do site Delta Sharing

Databricks: Requer o DBR 14.1 ou superior. código aberto Apache Spark: Requer delta-sharing-spark 3.1 ou superior.

Observação

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

Limitações

  • O UniForm não oferece suporte a vetores de exclusão.

  • O senhor 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 a instruçãoREORG TABLE... APPLY (PURGE) e, em seguida, execute a instrução GENERATE. É preciso garantir que nenhuma operação de gravação concorrente esteja em execução quando o senhor enviar a instrução REORG.

  • Você não pode gerar arquivos de manifesto incrementalmente para uma tabela com vetores de exclusão ativados (por exemplo, definindo a propriedade da tabela delta.compatibility.symlinkFormatManifest.enabled=true).

  • Se o senhor ativar os vetores de exclusão em uma tabela materializada view ou de transmissão e, posteriormente, desativar os vetores de exclusão, as gravações futuras na view ou na tabela serão impedidas de usar vetores de exclusão, mas os vetores de exclusão existentes não serão removidos.

  • O senhor não pode fazer downgrade do protocolo da tabela depois de ativar os vetores de exclusão em uma tabela materializada view ou de transmissão. Após a ativação, o recurso de tabela para vetores de exclusão não pode ser removido, mesmo que o senhor desative posteriormente os vetores de exclusão no site view ou na tabela.

  • O senhor não pode executar REORG em tabelas de exibição materializada ou de transmissão para commit alterações registradas em vetores de exclusão para Parquet arquivos de dados que fazem backup desses objetos. Devido a essa limitação, não ative vetores de exclusão na visualização materializada ou nas tabelas de transmissão se for necessário garantir a exclusão completa dos registros (por exemplo, para GDPR ou CCPA compliance).