Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os vetores de exclusão aceleram as operações de DELETE, UPDATE e MERGE em tabelas Delta Lake e Apache Iceberg. Sem vetores de exclusão, modificar uma única linha requer reescrever todo o arquivo Parquet que contém esse registro. Os vetores de exclusão, por sua vez, marcam as linhas como modificadas nos metadados, e as leituras aplicam as entradas do vetor de exclusão no momento da consulta para determinar o estado atual da tabela.
Note
Para atualizações de E/S preditivas, o Photon usa vetores de exclusão para acelerar as operações DELETE, MERGE e UPDATE. Consulte Usar E/S preditiva para acelerar atualizações.
Pré-requisitos
Todas as tabelas do Apache Iceberg v3 incluem vetores de exclusão por padrão. Consulte Usar recursos do Apache Iceberg v3. Para tabelas Delta Lake, você deve habilitar explicitamente vetores de exclusão.
Para gravar tabelas com vetores de exclusão usando todas as otimizações, use o Databricks Runtime 14.3 LTS e superior. Para lê-los, use o Databricks Runtime 12.2 LTS ou superior.
No Databricks Runtime 14.2 e versões superiores, as tabelas com vetores de exclusão dão suporte à concorrência de nível de linha. Consulte simultaneidade em nível de linha.
Compatibilidade do cliente
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 lista as versões do cliente necessárias para ler e gravar tabelas de vetor de exclusão:
| Client | 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 a UPDATE com o uso do Databricks Runtime 14.1 e superior. Dá suporte ao MERGE usando o Databricks Runtime 14.3 LTS ou versões superiores. |
Requer o Databricks Runtime 12.2 LTS ou superior. |
| OSS Apache Spark com OSS Delta Lake | Oferece suporte ao uso do OSS Delta 2.4.0 e superior por DELETE. Oferece suporte de UPDATE usando OSS Delta 3.0.0 e superior. |
Requer o OSS Delta 2.3.0 ou superior. |
| Destinatários do OpenSharing | Não há suporte para operações de gravação em tabelas OpenSharing. | Azure Databricks requer o Databricks Runtime 14.1 ou superior. O Apache Spark de software livre requer delta-sharing-spark 3.1 ou superior. |
Para obter suporte com outros clientes, consulte a documentação de integrações do Delta Lake do OSS.
Habilitar vetores de exclusão
Nas configurações do workspace, você pode habilitar vetores de exclusão em novas tabelas ao usar um SQL Warehouse ou Databricks Runtime 14.3 LTS ou superior. As configurações padrão variam de acordo com a região, consulte Vetores de exclusão com habilitação automática.
Os vetores de exclusão não são habilitados por padrão para exibições materializadas e tabelas de streaming armazenadas no metastore do Hive.
Para habilitar ou remover manualmente vetores de exclusão em qualquer tabela ou exibição, use a propriedade da enableDeletionVectors tabela.
Para habilitar vetores de exclusão em uma tabela ao criar ou alterar uma tabela:
Lago Delta
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Tabela do Iceberg
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Você não pode usar uma instrução ALTER para habilitar ou remover vetores de exclusão em uma exibição materializada ou tabela de streaming. Você deve usar uma declaração CREATE TABLE.
Warning
Quando você habilita vetores de exclusão, o Databricks atualiza o protocolo de tabela. Após a atualização, os clientes sem o suporte ao vetor de exclusão não podem ler a tabela. Consulte a compatibilidade de recursos e protocolos 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. Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.
Aplicar exclusões temporárias a arquivos de dados
Os vetores de exclusão marcam as alterações nas linhas como exclusões temporárias, que modificam logicamente os arquivos de dados Parquet existentes na tabela. Para reescrever fisicamente os arquivos de dados Parquet, use uma das opções a seguir:
- Execute
OPTIMIZEna tabela. - Execute
REORG TABLE ... APPLY (PURGE)na tabela. Esse comando reescreve todos os arquivos de dados que contêm registros com alterações de vetor de exclusão. Consulte REORG TABLE. - Execute uma gravação com compactação automática, que dispara uma reescrita de um arquivo de dados com um vetor de exclusão.
Os eventos de compactação de arquivo não têm garantias estritas para resolver alterações registradas em vetores de exclusão. Algumas alterações registradas em vetores de exclusão podem não ser aplicadas fisicamente se os arquivos de dados de destino não forem candidatos à compactação de arquivos.
Excluir dados antigos fisicamente
Os dados modificados ainda podem existir nos arquivos de dados antigos de uma tabela após uma operação de limpeza. Talvez você queira remover fisicamente os dados, por exemplo, para reduzir os custos de armazenamento com seu provedor de nuvem ou para atender às solicitações de RGPD.
Para excluir fisicamente dados antigos:
- Execute
REORG TABLE ... APPLY (PURGE) - Execute
VACUUMcom o limite de retenção definido como o carimbo de data e hora da conclusão da limpeza, a fim de remover fisicamente os arquivos das versões anteriores da tabela. Confira Limpar exclusões somente de metadados para forçar a regeneração de dados.
Melhorar o desempenho de tabelas grandes
Para melhorar o desempenho de limpezas em tabelas grandes, defina spark.databricks.delta.reorg.purgeMode como rows.
Por exemplo, defina essa configuração quando limpar dados manualmente com REORG TABLE ... APPLY (PURGE) ou quando remover vetores de exclusão com ALTER TABLE DROP FEATURE deletionVectors.
Por padrão, spark.databricks.delta.reorg.purgeMode é definido como all. Em tabelas grandes, essa operação pode ser lenta porque as operações de limpeza devem verificar todos os rodapés de arquivo Parquet para verificar se há dados de coluna descartados e linhas excluídas de modo reversível.
O rows valor limita a operação para lidar apenas com arquivos com linhas excluídas suavemente. Em tabelas grandes, isso poderá melhorar o desempenho se muitos arquivos não contiverem linhas excluídas suavemente e a tabela não tiver colunas descartadas.
Limitações
- As leituras do Iceberg v2 não suportam vetores de deleção. O Apache Iceberg v3 suporta vetores de exclusão em tabelas com leituras Iceberg ativadas. Consulte Usar recursos do Apache Iceberg v3.
- 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 a instrução REORG TABLE APPLY (PURGE) e, em seguida, execute a instrução
GENERATE. Você deve verificar se nenhuma operação de gravação simultânea está em execução ao enviar a instruçãoREORG.- Não é possível gerar arquivos de manifesto incrementalmente para uma tabela com vetores de exclusão habilitados (por exemplo, ao definir a propriedade da tabela
delta.compatibility.symlinkFormatManifest.enabled=true).
- Não é possível gerar arquivos de manifesto incrementalmente para uma tabela com vetores de exclusão habilitados (por exemplo, ao definir a propriedade da tabela
- Se você habilitar vetores de exclusão em uma exibição materializada ou tabela streaming e, posteriormente, remover vetores de exclusão, os vetores de exclusão não se aplicarão a gravações futuras na exibição ou tabela, mas os vetores de exclusão existentes permanecerão.
- Não é possível reverter o protocolo da tabela após habilitar os vetores de exclusão em uma visão materializada ou em uma tabela de streaming, mesmo que você desative os vetores de exclusão posteriormente.