Classificação do índice de revisão
Nesta página
O Performance Advisor ordena osíndices que ele sugere por seus respectivos Impact. Impact indica a melhoria de desempenho estimada que o índice sugerido traria.
Como o Performance Advisor sugere e classifica índices
O Performance Advisor monitora as queries que levam mais de 100
milissegundos para serem executadas e agrupa essas queries em formas de query comuns. O Performance Advisor calcula a ineficiência de cada forma de query considerando as seguintes métricas agregadas de queries que correspondem à forma:
Quantidade de tempo gasto executando a query.
Número de documentos digitalizados.
Número de documentos devolvidos.
Tamanho Médio do Objeto.
Para estabelecer índices recomendados, o Performance Advisor usa essas métricas em uma fórmula para calcular o Impact ou a melhoria de desempenho que a criação de um índice correspondente a essa forma de query causaria. Quando o Performance Advisor sugere índices, ele classifica os índices por seu Impact. O Impact indica High ou Medium com base no total de bytes desperdiçados lidos.
Ordem dos campos do índice
O tipo de operação de query na forma de query afeta a ordem dos campos utilizados para construir o índice. Em geral, o Performance Advisor classifica os campos por sua cardinalidade.
A tabela a seguir mostra como o Performance Advisor classifica vários tipos de operação por ordem de importância relativa:
Limitando índices sugeridos
O Performance Advisor não sugere índices que tenham mais de 16 campos.
Além disso, o Performance Advisor sugere o índice somente se a diferença entre documentos digitalizados e documentos retornados for maior que 500 para queries impactadas.
Eliminação de duplicação de índices
O Performance Advisor elimina as duplicações dos índices sobrepostos antes de fazer sugestões. Por exemplo, considere que o Performance Advisor calcula os seguintes índices sugeridos:
{ a : 1 } { a : 1, b : 1 }
Como { a : 1 }
é um prefixo de { a : 1, b : 1 }
, o Performance Advisor sugere apenas { a : 1, b : 1 }
. Para saber mais sobre prefixos de índice, consulte Prefixos.
Exemplo: dados de trânsito da cidade de Nova York
Este exemplo usa um banco de dados chamado cab-db
que contém informações sobre as corridas de réplica da cidade de Nova York, com campos para os horários de coleta e entrega, distância da corrida e um detalhamento dos custos da corrida. Um documento típico na collection yellow
se parece com o exemplo a seguir:
{ "_id" : ObjectId("5db9daab0b2a17b7706cd6a3"), "pickup_datetime" : "2014-06-30 02:09:23", "dropoff_datetime" : "2014-06-30 02:20:36", "passenger_count" : 2, "trip_distance" : 3, "fare_amount" : 12, "tip_amount" : 2.6, "total_amount" : 15.6 }
A collection contém mais de 10 milhões de documentos, portanto, um aplicativo que precisa executar queries com base em dados de campos específicos gerará algumas operações muito ineficientes, a menos que você indexe corretamente a collection.
Queries típicas para este aplicativo Atlas Search de documentos que contenham um tempo de entrega específico, combinado com um ou mais campos. Por exemplo:
db.yellow.find({ "dropoff_datetime": "2014-06-19 21:45:00", "passenger_count": 1, "trip_distance": {"$gt": 3 } })
O Performance Advisor recomenda os seguintes índices para melhorar o desempenho:
Observação
Por padrão, o Performance Advisor mostra recomendações de índice para todas as collections em seu cluster. Para restringir as recomendações a uma coleção específica, selecione uma no menu suspenso Collection .
O Performance Advisor lista os índices recomendados em ordem de impacto no desempenho, do maior para o menor.
A primeira recomendações é para um índice em três campos:
passenger_count
dropoff_datetime
trip_distance
Clique no botão Create Index para criar o índice com quaisquer opções adicionais desejadas. Para saber mais sobre como criar um índice no Performance Advisor, consulte Criar índices sugeridos.
Se você criar esse índice, removerá a necessidade de o mecanismo de banco de dados verificar toda a coleção para encontrar documentos que correspondam à query, o que melhora o desempenho. Queries com a forma mostrada no exemplo retornam resultados em 50 milissegundos ou menos na coleção indexada, em vez de vários segundos na coleção não indexada.
Observação
Você também pode criar índices com o chave de criptografia de dados (DEK).