O que são vetores de exclusã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.
Em Databricks Runtime 14.2 e acima, as tabelas com vetores de exclusão suportam a simultaneidade em nível de linha. Consulte Conflitos de gravação com simultaneidade em nível de linha.
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.
Habilitar vetores de exclusão
Uma configuração do administrador do workspace controla se os vetores de exclusão são ativados automaticamente para novas tabelas do Delta. Consulte Habilitar vetores de exclusão automaticamente.
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);
Quando você ativa os 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 Databricks o Delta Lake senhor pode gerenciar a compatibilidade do recurso?
Em Databricks Runtime 14.1 e acima, o senhor pode eliminar o recurso da tabela de vetores de exclusão para permitir a compatibilidade com outros clientes Delta. Consulte Drop Delta table recurso.
Aplicar alterações nos arquivos de dados 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
é a execução na mesa. - A compactação automática aciona a reescrita 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 arquivos não têm garantias estritas para resolver as alterações registradas nos vetores de exclusão, e algumas alterações registradas nos 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 contendo registros com modificações registradas usando vetores de exclusão. Consulte REORG TABLE.
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 | Escrever vetores de exclusão | Leia vetores de exclusão |
---|---|---|
Databricks Runtime com Photon | Oferece suporte a | É necessário o site Databricks Runtime 12.2 LTS ou acima. |
Databricks Runtime sem Photon | Suporta | É necessário o site Databricks Runtime 12.2 LTS ou acima. |
OSS Apache Spark com OSS Delta Lake | Suporta | Requer o OSS Delta 2.3.0 ou acima. |
Beneficiários do Delta Sharing | 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 |
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 declaraçãoREORG
. - 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.