Partilhar via


Práticas recomendadas de otimização de esquema

Um esquema de tabela define os nomes e tipos de dados de todas as colunas da tabela. O esquema da 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 forma como um esquema de tabela é definido pode afetar significativamente o desempenho da sua consulta. O esquema ideal para os seus dados depende de muitos fatores, incluindo casos de uso, padrões de acesso aos dados e os dados específicos que pretende armazenar. Este artigo descreve as melhores práticas para otimizar o desempenho através do desenho de esquemas eficientes.

Tipos de dados

Para informações gerais sobre tipos de dados, veja tipos de dados escalares.

  • Os campos mais usados devem ser colunas tipadas, não tipo dinâmico .

  • Propriedades JSON frequentemente pesquisadas ou agregadas numa coluna dinâmica devem ser convertidas para uma coluna regular na tabela com um tipo mais específico, como string, long ou real.

  • Colunas esparsas que não são comumente usadas para filtro e agregação devem ser recolhidas como um saco de propriedades numa coluna dinâmica usando a DropMappedFieldstransformação de mapeamento.

  • As colunas data-hora devem ser digitadas como data-hora, e não long ou outros tipos de dados.

  • O tipo decimal proporciona precisão exata, o que o torna mais adequado para aplicações financeiras e outras que exigem exatidão exata. No entanto, é muito mais lento do que o tipo real . Só use o tipo decimal quando necessário.

  • Todas as colunas de ID (identificação) devem ser digitadas como string, não numéricas. Este tipo tornará o índice muito mais eficaz e pode melhorar significativamente o tempo de pesquisa. Também permitirá a particionação, uma vez que a partição só pode ser definida em colunas de string. Se apenas forem utilizados filtros de consulta de igualdade nesta coluna, por exemplo, se a coluna contiver GUIDs, pode usar o perfil de codificação Identifier. Para mais informações, consulte política de codificação.

Tables

  • Otimize para tabelas estreitas, que são preferidas em vez de tabelas largas com centenas de colunas.
  • Para evitar junções dispendiosas durante o tempo de consulta, desnormalize os dados dimensionais enriquecendo-os durante a ingestão. Se a tabela de dimensões usada para enriquecimento for atualizada e o cenário exigir o valor mais recente, use visualizações materializadas para manter apenas o valor mais recente.
  • Se existirem mais de 20 colunas esparsas, ou seja, muitos valores são nulos, e estas colunas raramente forem usadas para pesquisas ou agregação, então agrupe as colunas como um JSON property bag numa coluna dinâmica usando o DropMappedFieldsmapeamento de transformação.

Indexação

Campos que nunca são pesquisados podem desativar a indexação. Utilize a política de codificação com perfil BigObject para desativar a indexação em colunas do tipo string ou tipo dinâmico.