Melhores práticas de otimização de esquemas

Um esquema de tabela define os nomes e 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 ao modificar o mapeamento de ingestão aplicável. A forma 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 casos de utilização, padrões de acesso a dados e os dados específicos que planeia armazenar. Este artigo descreve as melhores práticas para otimizar o desempenho ao conceber esquemas eficientes.

Tipos de dados

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

  • Os campos utilizados frequentemente devem ser colunas digitadas, não o tipo dinâmico .

  • As propriedades JSON agregadas ou pesquisadas frequentemente numa coluna dinâmica devem ser convertidas numa coluna normal na tabela com um tipo mais específico, como cadeia, longa ou real.

  • As colunas dispersas que não são frequentemente utilizadas para filtrar e agregar devem ser recolhidas como um conjunto de propriedades numa coluna dinâmica com a transformação de DropMappedFields mapeamento.

  • As colunas de data e hora devem ser escritas como datetime e não longas ou outros tipos de dados.

  • O tipo decimal fornece precisão exata, o que o torna mais adequado para aplicações financeiras e outras que requerem precisão exata. No entanto, é muito mais lento do que o tipo real . Utilize apenas o tipo decimal quando necessário.

  • Todas as colunas de ID (identificação) devem ser escritas como cadeia e não numéricas. Este tipo tornará o índice muito mais eficaz e pode melhorar significativamente o tempo de pesquisa. Também ativará a criação de partições, uma vez que a criação de partições só pode ser definida em colunas de cadeia. Se os filtros de consulta utilizados nesta coluna forem apenas igualdade, por exemplo, se a coluna tiver guids, pode utilizar o perfil Identifierde codificação . Para obter mais informações, veja a política de codificação.

Tables

  • Otimize para tabelas estreitas, que são preferenciais em tabelas largas com centenas de colunas.
  • Para evitar associações dispendiosas durante o tempo de consulta, desnormalize os dados de dimensão ao melhorá-lo durante a ingestão. Se a tabela de dimensões utilizada para melhoramento for atualizada e o cenário exigir o valor mais recente, utilize vistas de materialização para manter apenas o valor mais recente.
  • Se existirem mais de 20 colunas dispersas, o que significa que muitos valores são nulos e estas colunas raramente são utilizadas para pesquisas ou agregação, agrupe as colunas como um conjunto de propriedades JSON numa coluna dinâmica com o mapeamento de DropMappedFieldstransformação.

Indexação

Os 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 de cadeia ou escrita dinâmica.