balancerCollectionStatus
Definição
balancerCollectionStatus
Retorna um documento que contém informações sobre se as partes de uma collection fragmentada estão balanceados (ou seja, não precisam ser movidos) a partir do momento em que o comando é executado ou precisam ser movidos devido à drenagem de fragmentos, violação de zona ou desequilíbrio de pedaços entre fragmentos.
Você só pode emitir o
balancerCollectionStatus
contra o banco de dadosadmin
.Dica
Em
mongosh
, esse comando também pode ser executado por meio do método assistentesh.balancerCollectionStatus()
.Os métodos auxiliares são práticos para os usuários
mongosh
, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.
Compatibilidade
Esse comando 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 instâncias sem servidor. 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
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { balancerCollectionStatus: "<db>.<collection>" } )
Especifique o namespace completo ("<db>.<collection>"
) da collection fragmentada.
mongosh
fornece um método wrapper sh.balancerCollectionStatus()
.
Controle de acesso
Ao executar com controle de acesso, o usuário deve ter a ação de privilégio do enableSharding
no reconhecimento de data center e/ou collection para executar o comando. Ou seja, um usuário deve ter uma role que conceda o seguinte privilégio:
{ resource: { db: <database>, collection: <collection> }, actions: [ "enableSharding" ] }
O papel do clusterManager
embutido fornece os privilégios apropriados.
documento de saída
A seguir, um exemplo de documento retornado pelo comando:
{ "chunkSize": Long("128"), "balancerCompliant" : false, "firstComplianceViolation" : "chunksImbalance", "ok" : 1, "operationTime" : Timestamp(1583192967, 16), "$clusterTime" : { "clusterTime" : Timestamp(1583192967, 16), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
Campo | Descrição |
---|---|
"chunkSize" | Novidades na versão 5.3. Um número inteiro que indica o tamanho do bloco em megabytes. |
"balancerCompliant" | Um booleano que indica se os chunks não precisam ser movidos ( true ) ou precisam ser movidos ( false ). |
"firstComplianceViolation" | Uma string que indica o motivo pelo qual as partes desse namespace precisam ser movidos. O campo só estará disponível se Os valores possíveis são:
Esse campo retorna apenas informações sobre a primeira violação observada pelo MongoDB. Pode haver migrações de chunk pendentes adicionais devido a um motivo diferente da relatada em |
"details" | Um objeto que contém informações sobre o processo de desfragmentação em andamento. Esse objeto indica a fase atual da desfragmentação e quantos chunks faltam processar nessa fase. Para obter um exemplo de saída, consulte Processo de desfragmentação contínuo. Este campo só é retornado quando |
Além dos campos de retorno específicos do comando, o comando também retorna o campo de status ok
, o campo operationTime
e o campo $clusterTime
para a operação. Para obter detalhes sobre esses campos, consulte Resposta.
Exemplos
Para verificar se as partes de uma collection fragmentada test.contacts
estão balanceados, conecte-se a uma instância mongos
e emita o seguinte comando:
db.adminCommand( { balancerCollectionStatus: "test.contacts" } )
Se a parte para a collection não precisar ser movida, o comando retornará uma saída semelhante ao seguinte:
{ "chunkSize": Long("128"), "balancerCompliant" : true, "ok" : 1, "operationTime" : Timestamp(1583193238, 1), "$clusterTime" : { "clusterTime" : Timestamp(1583193238, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
Processo de desfragmentação contínuo
Se o namespace da query estiver passando por desfragmentação de parte, o comando balancerCollectionStatus
retornará uma saída semelhante a esta:
{ "chunkSize": Long("128"), "balancerCompliant": false, "firstComplianceViolation": "defragmentingChunks", "details": { "currentPhase": "moveAndMergeChunks", "progress": { "remainingChunksToProcess": 1 } } }
Observação
A desfragmentação de parte ocorre em várias fases. O campo progress
pertence somente à fase atual.