DBAtlas · Atlas d'exploitation des bases de données

Vérifier le choix de la shard key et la répartition des données (getShardDistribution, analyzeShardKey)

MongoDBSharding

Commande

// 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" })

Ce que fait la commande

Affiche le pourcentage des données d'une collection sur chaque shard ; analyzeShardKey indique la cardinalité, les valeurs les plus fréquentes et la monotonie de la shard key actuelle ou candidate, et si les requêtes échantillonnées ciblent un seul shard ou tous les shards (scatter-gather).

Quand l'utiliser

Avant de sharder une nouvelle collection, quand un shard chaud ou une croissance inégale est constaté, et avant de décider d'un reshardCollection.

Attention

analyzeShardKey nécessite un index supportant la clé et échantillonne les documents sur les grandes collections ; il ajoute une charge de lecture en période de pointe. Tant que l'échantillonnage des requêtes est actif, les échantillons sont écrits dans config.sampledQueries ; désactivez-le une fois l'analyse terminée. Une clé croissante monotone (ObjectId, timestamp) concentre toutes les insertions sur un seul shard.

Ouvrir dans DBAtlas →

Voir aussi