$shardedDataDistribution (agregação)
Nesta página
Definição
$shardedDataDistribution
Novidades na versão 6.0.3.
Retorna informações sobre a distribuição de dados em coleções fragmentadas.
Observação
Este estágio de agregação está disponível apenas em
mongos
.Este estágio de agregação deve ser executado no banco de dados do
admin
. O usuário deve ter a ação de privilégioshardedDataDistribution
.
Sintaxe
O estágio shardedDataDistribution
tem a seguinte sintaxe:
db.aggregate( [ { $shardedDataDistribution: { } } ] )
Campos de Saída
O estágio $shardedDataDistribution
gera uma array de documento para cada collection fragmentada no reconhecimento de data center. Esses documentos contêm os seguintes campos:
Nome do campo | Tipo de Dados | Descrição |
---|---|---|
ns | string | Namespace da coleção fragmentada. |
shards | array | Fragmentos na coleção com as informações de distribuição de dados para cada fragmento. |
shards.numOrphanedDocs | inteiro | Número de documentos órfãos no fragmento. |
shards.numOwnedDocuments | inteiro | Número de documentos pertencentes ao fragmento. |
shards.ownedSizeBytes | inteiro | Tamanho em bytes de documentos de propriedade do shard quando descompactados. |
shards.orphanedSizeBytes | inteiro | Tamanho em bytes de documentos órfãos no fragmento quando descompactados. |
Comportamento
Depois de um desligamento impróprio de um mongod
usando o mecanismo de armazenamento Wired Tiger, as estatísticas de tamanho e contagem relatadas por $shardedDataDistribution
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:
Exemplos
Retornar todas as métricas de distribuição de dados fragmentados
Para retornar todas as métricas de distribuição de dados fragmentados, execute o seguinte:
db.aggregate([ { $shardedDataDistribution: { } } ])
Saída de exemplo:
[ { "ns": "test.names", "shards": [ { "shardName": "shard-1", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 }, { "shardName": "shard-2", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 } ] } ]
Métricas de retorno para um fragmento específico
Para retornar métricas de distribuição de dados fragmentados para um fragmento específico, execute o seguinte:
db.aggregate([ { $shardedDataDistribution: { } }, { $match: { "shards.shardName": "<name of the shard>" } } ])
Retornar métricas para um namespace
Para retornar dados de distribuição de dados fragmentados para um namespace, execute o seguinte:
db.aggregate([ { $shardedDataDistribution: { } }, { $match: { "ns": "<database>.<collection>" } } ])
Confirme que não há mais documentos órfãos.
A partir do MongoDB 6.0.3, você pode executar uma agregação usando o estágio $shardedDataDistribution
para confirmar que não resta nenhum documento órfão:
db.aggregate([ { $shardedDataDistribution: { } }, { $match: { "ns": "<database>.<collection>" } } ])
$shardedDataDistribution
tem saída semelhante à seguinte:
[ { "ns": "test.names", "shards": [ { "shardName": "shard-1", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 }, { "shardName": "shard-2", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 } ] } ]
Certifique-se de que "numOrphanedDocs"
seja 0
para cada shard no cluster.