Pular para o conteúdo principal

Vetores de exclusão no Databricks

Os vetores de exclusão são um recurso de otimização de armazenamento que acelera as modificações em tabelas. Por default, excluir uma única linha exige a reescrita de todo o arquivo Parquet que contém esse registro. Os vetores de exclusão evitam essa sobrecarga. Quando os vetores de exclusão estão ativados, as operações DELETE, UPDATE e MERGE marcam as linhas como modificadas sem reescrever o arquivo Parquet. Em seguida, as leituras resolvem o estado atual da tabela aplicando as modificações registradas nos vetores de exclusão.

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.

nota

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

importante

Uma configuração de administrador workspace controla se os vetores de exclusão são ativados automaticamente para novas tabelas. Consulte Ativar 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.

nota

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 para vetores de exclusão em qualquer tabela ou view (incluindo tabelas de transmissão e visualização materializada), use a propriedade de tabela enableDeletionVectors . Ao criar ou alterar uma tabela, escolha manualmente se deseja habilitar vetores de exclusão, como no exemplo a seguir. Você não pode usar uma instrução ALTER para habilitar ou desabilitar vetores de exclusão em uma view materializada ou tabela de transmissão.

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

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

-- For Iceberg tables, use iceberg.enableDeletionVectors instead of delta.enableDeletionVectors
atenção

Ao habilitar vetores de exclusão, o protocolo da tabela é atualizado. Após a atualização, a tabela não poderá ser lida por clientes que não suportam vetores de exclusão. Consulte a compatibilidade e os protocolos de recursosDelta Lake.

No Databricks Runtime 14.1 e versões superiores, você pode remover o recurso da tabela de vetores de exclusão para permitir a compatibilidade com outros clientes. Consulte Remover um recurso de tabela Delta Lake e fazer downgrade do protocolo da tabela.

Aplicar alterações nos arquivos de dados Parquet

Os vetores de exclusão indicam alterações nas linhas como exclusões lógicas que modificam os arquivos de dados Parquet existentes na tabela. Essas alterações são aplicadas fisicamente quando um dos seguintes eventos causa a reescrita dos arquivos de dados:

  • 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.

nota

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 do cliente

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 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 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 o OSS Delta 2.3.0 ou acima.

Beneficiários do Delta Sharing

Não há suporte para escrita em tabelas Delta Sharing .

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

nota

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

Limitações

  • O UniForm Iceberg v2 não suporta vetores de exclusão. O Apache Iceberg v3 suporta vetores de exclusão em tabelas com UniForm habilitado. Consulte Usar recurso Apache Iceberg v3.
  • 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çã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.