Compartilhar via


Melhores práticas de otimização de esquema

Um esquema de tabela define os nomes e os tipos de dados de todas as colunas na tabela. O esquema de tabela pode ser definido durante a criação da tabela ou como parte do processo de ingestão de dados, modificando o mapeamento de ingestão aplicável. A maneira como um esquema de tabela é definido pode afetar significativamente o desempenho da consulta. O esquema ideal para os seus dados depende de muitos fatores, incluindo caso de uso, padrões de acesso a dados e os dados específicos que você planeja armazenar. Este artigo descreve as melhores práticas para otimizar o desempenho criando esquemas eficientes.

Tipos de dados

Para gerar mais informações sobre tipos de dados, consulte Tipos de dados escalares.

  • Os campos comumente usados devem ser colunas digitadas e não do tipo dinâmico.

  • As propriedades JSON pesquisadas ou agregadas com frequência em uma coluna dinâmica devem ser convertidas em uma coluna regular na tabela com um tipo mais específico, como sequência, longo ou real.

  • As colunas esparsas que normalmente não são usadas para filtragem e agregação devem ser coletadas como um recipiente de propriedades em uma coluna dinâmica por meio da transformação de mapeamento DropMappedFields.

  • As colunas de data/hora devem ser digitadas como datetime e não como longo ou outros tipos de dados.

  • O tipo decimal fornece precisão exata, o que o torna mais adequado para aplicativos financeiros e outros que exigem precisão exata. No entanto, é muito mais lento do que o tipo real. Use o tipo decimal somente quando necessário.

  • Todas as colunas de ID (identificação) devem ser digitadas como sequência e não numéricas. Esse tipo tornará o índice muito mais efetivo e pode melhorar significativamente o tempo de pesquisa. Ele também habilitará o particionamento, já que o particionamento só pode ser definido em colunas de sequência. Se os filtros de consulta usados nessa coluna forem apenas de igualdade, por exemplo, se a coluna tiver GUIDs, você poderá usar o perfil de codificação Identifier. Para obter mais informações, consulte política de codificação.

Tabelas

  • Otimize para tabelas estreitas, que são preferíveis em relação a tabelas largas com centenas de colunas.
  • Para evitar junções caras durante o tempo de consulta, desnormalize os dados de dimensão enriquecendo-os durante a ingestão. Se a tabela de dimensões usada para o enriquecimento estiver atualizada e o cenário exigir o valor mais recente, use materialize views para manter apenas o valor mais recente.
  • Se houver mais de 20 colunas esparsas, o que significa que muitos valores são nulos, e essas colunas raramente forem usadas para pesquisas ou agregação, agrupe as colunas como um recipiente de propriedades JSON em uma coluna dinâmica usando o mapeamento de transformação DropMappedFields.

Indexação

Os campos que nunca são pesquisados podem desabilitar a indexação. Use a política de codificação com o perfil BigObject para desabilitar a indexação em colunas digitadas de sequência ou dinâmicas.