Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2025-08-07 GMT+08:00

Otimização de instruções

O DDS é inerentemente um banco de dados NoSQL com alto desempenho e forte extensibilidade. Semelhante a bancos de dados relacionais, como RDS for MySQL, RDS for SQL Server e Oracle, o desempenho da instância do DDS também pode ser afetado pelo design do banco de dados, otimização de instruções e criação de índice.

A seguir, há sugestões para melhorar o desempenho do DDS em diferentes dimensões:

Criar bancos de dados e coleções

  • Use nomes de campo curtos para economizar espaço de armazenamento. Diferente de um banco de dados RDS, cada documento do DDS tem seus nomes de campo armazenados na coleção. Nome curto é recomendado.
  • Limite o número de documentos em uma coleção para evitar o impacto no desempenho da consulta. Arquive documentos periodicamente, se necessário.
  • Cada documento tem um _id padrão. Não altere o valor deste parâmetro.
  • Coleções limitadas têm uma velocidade de inserção mais rápida do que outras coleções e podem excluir automaticamente dados antigos. Você pode criar coleções limitadas para melhorar o desempenho com base em seus requisitos de serviço.

Operações de consulta

Índices

  • Crie um número adequado de índices para campos frequentemente consultados com base nos requisitos de serviço. Os índices ocupam algum espaço de armazenamento e as operações de inserção e indexação consomem recursos. Recomenda-se que o número de índices em cada coleção não exceda 5.
  • Se a consulta de dados estiver lenta devido à falta de índices, crie índices adequados para campos consultados com frequência.
  • Para uma consulta que contenha várias chaves de fragmento, crie um índice composto que contenha essas chaves. A ordem das chaves de fragmento em um índice composto é importante. Um índice composto oferece suporte a consultas que usam o prefixo mais à esquerda do índice e a consulta é relevante apenas para a sequência de criação de índices.
  • Os índices de TTL podem ser usados para filtrar e excluir automaticamente documentos expirados. O índice para criar TTL deve ser do tipo data. Os índices de TTL são índices de campo único.
  • Você pode criar índices de campo em uma coleção. No entanto, se um grande número de documentos na coleção não contiver valores de chave, é aconselhável criar índices esparsos.
  • Quando você cria índices de texto, o campo é especificado como text em vez de 1 ou -1. Cada coleção tem apenas um índice de texto, mas pode indexar vários campos.

Uso de comando

  • O método findOne retorna o primeiro documento que satisfaz os critérios de consulta especificados da coleção de acordo com a ordem natural. Para retornar vários documentos, use este método.
  • Se a consulta não exigir o retorno de todo o documento ou for usada apenas para determinar se o valor da chave existe, você pode usar $project para limitar o campo retornado, reduzindo o tráfego de rede e o uso de memória do cliente.
  • Além das consultas de prefixo, as consultas de expressão regular levam mais tempo para serem executadas do que o uso de seletores, e os índices não são recomendados.
  • Alguns operadores que contêm $ na consulta podem deteriorar o desempenho do sistema. Os seguintes tipos de operadores não são recomendados em serviços. $or, $nin, $not, $ne e $exists.
    Tabela 1 Descrição de operador

    Operador

    Descrição

    $or

    O número de consultas depende do número de condições. É usado para consultar todos os documentos que atendem às condições de consulta na coleção. Você é aconselhado a usar $in em vez disso.

    $nin

    Corresponde à maioria dos índices e a verificação completa da tabela é executada.

    $not

    O otimizador de consulta pode falhar ao corresponder a um índice específico e a verificação completa da tabela é executada.

    $ne

    Seleciona os documentos em que o valor do campo não é igual ao valor especificado. Todo o documento é verificado.

    $exists

    Corresponde a cada documento que contém o campo.

    Para obter mais informações, consulte os documentos oficiais do MongoDB.

Precauções
  • Índices não podem ser usados nos operadores $where e $exists.
  • Se os resultados da consulta precisarem ser classificados, controle o número de conjuntos de resultados.
  • Se vários índices de campo estiverem envolvidos, coloque o campo usado para correspondência exata antes do índice.
  • Se a sequência de valor de chave nos critérios de pesquisa for diferente daquela no índice composto, o DDS alterará automaticamente a sequência de consulta para a mesma sequência do índice.
    • Operação de modificação

      Modificar um documento usando operadores pode melhorar o desempenho. Esse método não precisa obter e modificar dados de documentos no servidor e leva menos tempo para serializar e transferir dados.

    • Inserção em lote

      A inserção em lote pode reduzir o número de vezes que os dados são enviados ao servidor e melhorar o desempenho. O tamanho de BSON dos dados enviados em lotes não pode exceder 48 MB.

    • Operação agregada

      Durante a agregação, $match deve ser colocado antes de $group para reduzir o número de documentos a serem processados pelo operador $group.

A otimização inadequada de consultas lentas pode causar exceções de serviço.