Classificação do índice de revisão
Nesta página
Osíndices sugeridos pelo Performance Advisor são ordenados por suas respectivas pontuações 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.
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. O Performance Advisor compara o tempo gasto na execução de operações específicas do índice com a latência operacional total na implantação. Quando o Performance Advisor sugere índices, os índices são classificados por sua pontuação Impact .
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, os campos são classificados 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:
Ter mais de 16 campos e/ou
Contém
_id
como uma chave de campo.
Além disso, o Performance Advisor só sugere o índice se:
Para queries afetadas, a diferença entre documentos digitalizados e documentos devolvidos é maior que 500, e
Pelo menos 60 segundos, cumulativamente, foram gastos executando queries afetadas nas últimas 24 horas.
Eliminação de duplicação de índices
O Performance Advisor elimina a duplicação de índices sobrepostos antes de fazer sugestões. Por exemplo, considere se o Performance Advisor calcula os seguintes índices sugeridos em potencial:
{ 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 obter mais informações 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 t Um documento típico na collection yellow
tem a seguinte aparência:
{ "_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 vai gerar algumas operações muito ineficientes, a menos que a collection seja indexada corretamente.
Queries típicas para esse aplicação procuram documentos que contenham um tempo de entrega específico, combinados 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 .
Os índices recomendados estão listados em ordem de impacto no desempenho , do maior para o menor. Neste exemplo, estima-se que o primeiro índice recomendado diminua o tempo de latência geral da operação do cluster em 50%.
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.
A criação desse índice melhora o desempenho eliminando a necessidade de o mecanismo de banco de dados de dados verificar a collection inteira para encontrar documentos que correspondam à query. 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).