Práticas recomendadas¶
Este tópico fornece práticas recomendadas para trabalhar com tabelas Apache Iceberg™ no Snowflake.
Criar volumes externos suficientes para seu caso de uso¶
Cada volume externo é associado a um Local de armazenamento ativo específico, e um único volume externo pode oferecer suporte a várias tabelas Iceberg. No entanto, o número de volumes externos necessários depende de como você deseja armazenar, organizar e proteger os dados da sua tabela.
Você pode usar um único volume externo se quiser os dados e metadados de todas as suas tabelas Snowflake-Iceberg em subdiretórios no mesmo local de armazenamento (por exemplo, no mesmo bucket S3). Para configurar esses diretórios para tabelas gerenciadas pelo Snowflake, consulte Diretórios de dados e metadados.
Como alternativa, você pode criar vários volumes externos para proteger vários locais de armazenamento de forma diferente. Por exemplo, você pode criar os seguintes volumes externos:
Um volume externo somente leitura para tabelas Iceberg gerenciadas externamente.
Um volume externo configurado com acesso de leitura e gravação para tabelas gerenciadas pelo Snowflake.
Usar as opções de formato de arquivo recomendadas para carregamento de dados¶
Para carregamento de dados com COPY INTO <tabela> e Snowpipe, use as seguintes opções de formato para seus arquivos de dados Parquet:
BINARY_AS_TEXT = FALSE
USE_LOGICAL_TYPE = TRUE
USE_VECTORIZED_SCANNER = TRUE
REPLACE_INVALID_CHARACTERS = TRUE
Atualizar as tabelas gerenciadas externamente com frequência¶
Para evitar longos tempos de atualização e obter os dados de tabela mais atualizados rapidamente, execute atualizações frequentes em tabelas Iceberg que usam um catálogo externo.
O Snowflake tenta otimizar as atualizações de tabela quando espera que a operação demore muito tempo. No entanto, o tempo de atualização depende, em última análise, do número de snapshots associados a uma tabela e do número de arquivos de dados que pertencem a uma tabela.
Também é importante alinhar seu cronograma de atualização do Snowflake com operações de manutenção de tabela, como expiração ou compactação de snapshot. Atualize os metadados sempre que executar uma operação de manutenção.
Para obter instruções, consulte Atualização dos metadados da tabela.
Gravar estatísticas completas¶
Para otimizar o desempenho do tempo de execução da consulta para tabelas que não são gerenciadas pelo Snowflake, certifique-se de que as estatísticas do arquivo Parquet estejam o mais completas possível.
Certifique-se de que o gravador de arquivo Parquet que você usa (por exemplo, Spark ou Trino) esteja configurado para gravar estatísticas. Talvez você também precise atualizar seu gravador para a versão mais recente.
Estatísticas ausentes como as seguintes degradam o desempenho da consulta:
Valores mínimos e máximos.
Número de valores distintos (NDV). O número de valores distintos é usado para determinar a ordem de junção em junções complexas. Estatísticas NDV ausentes podem levar à explosão de junções.
Número de contagens NULL.
Aumentar o tamanho do warehouse¶
Ao criar uma tabela Iceberg que usa um catálogo externo, o Snowflake tenta ler estatísticas dos arquivos de manifesto da tabela para fornecer um desempenho mais rápido.
Em algumas situações, como quando há estatísticas ausentes ou incorretas nos arquivos de manifesto, o Snowflake verifica os arquivos de dados da tabela em busca de estatísticas. A verificação de um grande número de arquivos de dados pode tornar a criação de tabela mais lenta. Para acelerar o processo de criação de tabelas, use um warehouse maior que possa verificar arquivos de tabela em paralelo.
Nota
O Snowflake não paraleliza a verificação de colunas da tabela. Mudar para um warehouse maior não resulta em um tempo de execução de consulta mais rápido.
Escolher a política de serialização de armazenamento correta para seu caso de uso¶
Escolha uma STORAGE_SERIALIZATION_POLICY
apropriada para seu caso de uso. Ao criar uma tabela gerenciada pelo Snowflake (ou converter uma tabela para usar o Snowflake como catálogo), você define uma política de serialização de armazenamento para essa tabela. A política de serialização informa ao Snowflake que tipo de codificação e compressão executar nos arquivos de dados da tabela.
Uma política inadequada pode tornar uma tabela incompatível com mecanismos externos ou causar degradação de desempenho no Snowflake.
Para obter mais informações, consulte CREATE ICEBERG TABLE (Snowflake como o catálogo Iceberg).