Comprobar la elección de shard key y la distribución de datos (getShardDistribution, analyzeShardKey)
MongoDBShardingComando
// 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" })Qué hace
Muestra el porcentaje de los datos de una colección en cada shard; analyzeShardKey informa de la cardinalidad, los valores más frecuentes y la monotonía de la shard key actual o candidata, y de si las consultas muestreadas van a un solo shard o a todos (scatter-gather).
Cuándo usarlo
Antes de aplicar sharding a una colección nueva, cuando se detecta un shard caliente o un crecimiento desigual y antes de decidir un reshardCollection.
Precaución
analyzeShardKey necesita un índice que soporte la clave y muestrea documentos en colecciones grandes; añade carga de lectura en horas pico. Mientras el muestreo de consultas está activo, las muestras se escriben en config.sampledQueries; desactívelo al terminar el análisis. Una clave monótonamente creciente (ObjectId, timestamp) concentra todas las inserciones en un shard.