DBAtlas · Atlas de operações de banco de dados

Verificar a escolha da shard key e a distribuição dos dados (getShardDistribution, analyzeShardKey)

MongoDBSharding

Comando

// Data and document distribution of the collection across shards:
db.getSiblingDB("shop").musteri.getShardDistribution()
// Cardinality, frequency and monotonicity analysis of the current or candidate shard key:
db.adminCommand({ analyzeShardKey: "shop.musteri", key: { musteriId: 1 }, keyCharacteristics: true, readWriteDistribution: false })
// For read/write distribution, enable query sampling first (10 samples per second):
db.adminCommand({ configureQueryAnalyzer: "shop.musteri", mode: "full", samplesPerSecond: 10 })
db.adminCommand({ analyzeShardKey: "shop.musteri", key: { musteriId: 1 }, keyCharacteristics: false, readWriteDistribution: true })
// Turn sampling off when done:
db.adminCommand({ configureQueryAnalyzer: "shop.musteri", mode: "off" })

O que faz

Mostra o percentual dos dados de uma collection em cada shard; analyzeShardKey informa a cardinalidade, os valores mais frequentes e a monotonicidade da shard key atual ou candidata, e se as consultas amostradas atingem um único shard ou todos os shards (scatter-gather).

Quando usar

Antes de shardar uma nova collection, quando se nota um shard quente ou crescimento desigual, e antes de decidir por um reshardCollection.

Atenção

analyzeShardKey precisa de um índice que suporte a chave e faz amostragem de documentos em collections grandes; isso adiciona carga de leitura no horário de pico. Enquanto a amostragem de consultas está ativa, as amostras são gravadas em config.sampledQueries; desligue-a quando a análise terminar. Uma chave monotonicamente crescente (ObjectId, timestamp) concentra todos os inserts em um shard.

Abrir no DBAtlas →

Relacionados