Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

db.collection.getShardDistribution()

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Saída
  • Comportamento
db.collection.getShardDistribution()

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação de um driver de idioma específico, como Node.js.

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

Imprime as estatísticas de distribuição de dados para uma coleçãofragmentada do .

Esse método está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Importante

Este comando não é suportado em clusters M0, M2 e M5 . Para obter mais informações, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O método getShardDistribution() tem o seguinte formato:

db.collection.getShardDistribution()

Observação

O comportamento de getShardDistribution() foi alterado na shell versão do shell do MongoDB 2.3.3:

  • A partir da shell versão do shell do MongoDB 2.3.3, getShardDistribution() contém apenas dados fragmentados regulares e não leva em conta documentos órfãos.

  • Antes da shell versão do shell do MongoDB 2.3.3, getShardDistribution() contabiliza dados fragmentados regulares e documentos órfãos pendentes de exclusão. Se a collection contiver documentos órfãos, getShardDistribution() poderá indicar que a collection não é balanceada, mesmo que a coleção seja balanceada em termos de dados regulares. O shard que contém dados órfãos tem mais documentos e um tamanho de dados maior, mas o mesmo número de chunks em comparação com outros shards.

Confira a seguir uma amostra de saída para a distribuição de uma collection fragmentada:

Shard shard01 at shard01/localhost:27018
{
data: '38.14MB',
docs: 1000003,
chunks: 2,
'estimated data per chunk': '19.07B',
'estimated docs per chunk': 500001
}
---
Shard shard02 at shard02/localhost:27019
{
data: '38.14B',
docs: 999999,
chunks: 3,
'estimated data per chunk': '12.71B',
'estimated docs per chunk': 333333
}
---
Totals
{
data: '76.29B',
docs: 2000002,
chunks: 5,
'Shard shard01': [ '50 % data', '50 % docs in cluster', '40B avg obj size on shard' ],
'Shard shard02': [ '49.99 % data', '49.99 % docs in cluster', '40B avg obj size on shard' ]
}
Shard shard01 at <host-a> {
data: <size-a>,
docs: <count-a>,
chunks: <number of chunks-a>,
'estimated data per chunk': <size-a>/<number of chunks-a>,
'estimated docs per chunk': <count-a>/<number of chunks-a>
}
---
Shard shard02 at <host-b>
{
data: <size-b>,
docs: <count-b>,
chunks: <number of chunks-b>,
'estimated data per chunk': <size-b>/<number of chunks-b>,
'estimated docs per chunk': <count-b>/<number of chunks-b>
}
---
Totals
{
data: <stats.size>,
docs: <stats.count>,
chunks: <calc total chunks>,
Shard shard01: [ <estDataPercent-a> % data, <estDocPercent-a> % docs in cluster, stats.shards[ <shard-a> ].avgObjSize avg obj size on shard ],
Shard shard02: [ <estDataPercent-b> % data, <estDocPercent-b> % docs in cluster, stats.shards[ <shard-b> ].avgObjSize avg obj size on shard ]
}

As informações de saída são exibidas:

  • <shard-x> é uma string que mantém o nome do shard.

  • <host-x> é uma string que contém o(s) nome(s) do host.

  • <size-x> é um número que inclui o tamanho dos dados, incluindo a unidade de medida (por exemplo, b, Mb).

  • <count-x> é um número que reporta o número de documentos no shard.

  • <number of chunks-x> é um número que reporta o número de chunks no shard.

  • <size-x>/<number of chunks-x> é um valor calculado que reflete o tamanho estimado dos dados por chunk para o shard, incluindo a unidade de medida (por exemplo, b, Mb).

  • <count-x>/<number of chunks-x> é um valor calculado que reflete o número estimado de documentos por chunk para o shard.

  • <stats.size> é um valor que reporta o tamanho total dos dados na collection fragmentada, incluindo a unidade de medida.

  • <stats.count> é um valor que reporta o número total de documentos na collection fragmentada.

  • <calc total chunks> é um número calculado que informa o número de chunks de todos os shards, por exemplo:

    <calc total chunks> = <number of chunks-a> + <number of chunks-b>
  • <estDataPercent-x> é um valor calculado que reflete, para cada shard, o tamanho dos dados como a porcentagem do tamanho total dos dados da collection, por exemplo:

    <estDataPercent-x> = <size-x>/<stats.size>
  • <estDocPercent-x> é um valor calculado que reflete, para cada shard, o número de documentos como a porcentagem do número total de documentos para a collection, por exemplo:

    <estDocPercent-x> = <count-x>/<stats.count>
  • stats.shards[ <shard-x> ].avgObjSize é um número que reflete o tamanho médio do objeto, incluindo a unidade de medida, para o shard.

Depois de um desligamento impróprio de um mongod usando o mecanismo de armazenamento Wired Tiger, as estatísticas de contagem e tamanho informadas pelo db.collection.getShardDistribution() podem ser imprecisas.

A quantidade de desvio depende do número de operações de inserção, atualização ou exclusão executadas entre o último ponto de verificação e o desligamento não limpo. Os pontos de verificação geralmente ocorrem a cada 60 segundos. No entanto, mongod instâncias executadas com configurações de --syncdelay não padrão podem ter pontos de verificação mais ou menos frequentes.

Execute validate em cada collection no mongod para restaurar as estatísticas depois de um desligamento impróprio.

Após um desligamento impróprio:

Voltar

db.collection.getIndexes