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 habilitados pelo site default para a visualização materializada e as tabelas de transmissão armazenadas em Hive metastore.
Para ativar ou desativar manualmente o suporte a vetores de exclusão em qualquer tabela Delta ou view (incluindo tabelas de transmissão e visualização materializada), use a propriedade de tabela delta.enableDeletionVectors
. O senhor pode escolher manualmente se deseja ativar os vetores de exclusão em uma tabela Delta ao criar ou alterar a tabela, como no exemplo a seguir. O senhor não pode usar uma instrução ALTER
para ativar ou desativar 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 Delta Lake recurso compatibilidade e protocolos.
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 a Delta Lake table recurso e downgrade table protocol.
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.