Solucionar problemas de chaves de fragmentação
Nesta página
A chave de shard ideal permite que o MongoDB distribua documentos uniformemente em todo o cluster, ao mesmo tempo em que facilita padrões de query comuns. Uma chave de shard abaixo do ideal pode levar aos seguintes problemas:
A seguir, você poderá descobrir mais sobre problemas comuns com chaves de shard e como resolvê-los.
Partes jumbo
Se você estiver vendo jumbo chunks, a cardinalidade da chave de shard é insuficiente ou a frequência dos valores da chave de shard está distribuída desigualmente.
Para aumentar a cardinalidade da chave de fragmento ou alterar a distribuição dos valores da chave de fragmento, você pode:
refinar sua chave de fragmento adicionando um ou mais campos de sufixo à chave existente para aumentar a cardinalidade
refaça a fragmentação de sua coleção usando uma chave de fragmento diferente com maior cardinalidade
Para saber se você deve reestruturar sua collection ou refinar sua chave de shard, consulte Alterar uma chave de shard.
Para alterar apenas a distribuição dos valores da chave de fragmento, avalie também usar a fragmentação com hash para distribuir seus dados de maneira mais uniforme.
Para obter dicas sobre como escolher uma chave de fragmento, consulte Escolher uma chave de fragmento.
Distribuição de carga irregular
Se o cluster estiver enfrentando uma distribuição de carga desigual, verifique se sua chave de fragmento aumenta monotonicamente. Uma chave de fragmento que é um campo crescente monotonicamente leva a uma distribuição desigual de leitura e gravação.
Considere uma collection orders
fragmentada em um campo order_id
. O order_id
é um número inteiro que aumenta em um a cada pedido.
Geralmente, novos documentos são gravados no mesmo fragmento e na mesma parte. O fragmento e a parte que recebem as gravações são chamados de fragmento ativo e parte ativa. O fragmento ativo muda com o tempo. Quando as partes são divididas, o a parte ativa se move para um fragmento diferente a fim de otimizar a distribuição de dados.
Se os usuários tiverem maior probabilidade de interagir com pedidos recentes, que estão todos no mesmo fragmento, o fragmento que contém os pedidos recentes receberá a maior parte do tráfego.
Se você tiver um aumento monotônico da chave de fragmento, avalie refragmentar sua coleção. Para obter conselhos sobre como escolher uma chave de fragmento, consulte Escolher uma chave de fragmento.
Se o seu modelo de dados exigir fragmentação em uma chave que muda monotonicamente, considere usar a fragmentação com hash.
Diminuição do desempenho das queries ao longo do tempo
Se você estiver notando uma redução no desempenho das queries ao longo do tempo, é possível que seu cluster esteja executando queries de dispersão.
Para avaliar se seu cluster está realizando queries de dispersão, verifique se suas queries mais comuns incluem a chave de shard.
Se você incluir a chave do fragmento em suas query, verifique se a chave do fragmento está em hash. Com Hashed Sharding, os documentos não são armazenados em ordem crescente ou decrescente do valor do campo-chave do fragmento. A execução de queries baseadas em intervalo no valor da chave do fragmento em dados que não estão armazenados em ordem ascendente ou descendente resulta em queries de coleta dispersa de menor desempenho. Se as query baseadas em intervalo em sua chave de fragmento forem um padrão de acesso comum, considere a possibilidade de reestruturar sua coleção.
Se você não incluir a chave de shard em suas queries mais comuns, é possível aumentar o desempenho refragmentando sua collection. Para obter conselhos sobre como escolher uma chave de shard, consulte Escolher uma chave de shard.