db.collection.getShardDistribution()
Nesta página
Definição
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 .
Sintaxe
O método getShardDistribution()
tem o seguinte formato:
db.collection.getShardDistribution()
Saída
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.
Amostra de saída
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' ] }
Campos de Saída
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.
Comportamento
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: