DBAtlas · Atlas für Datenbankbetrieb

Shard-Key-Wahl und Datenverteilung prüfen (getShardDistribution, analyzeShardKey)

MongoDBSharding

Befehl

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

Was es tut

Zeigt den prozentualen Anteil der Daten einer Collection auf jedem Shard; analyzeShardKey meldet Kardinalität, häufigste Werte und Monotonie des aktuellen oder eines Kandidaten-Shard-Keys sowie, ob die gesampelten Abfragen einen einzelnen Shard oder alle Shards (Scatter-Gather) ansprechen.

Wann einsetzen

Vor dem Sharden einer neuen Collection, wenn ein Hot Shard oder ungleiches Wachstum auffällt, und vor der Entscheidung für reshardCollection.

Vorsicht

analyzeShardKey braucht einen Index, der den Schlüssel unterstützt, und nimmt bei großen Collections Stichproben von Dokumenten; das erzeugt in Spitzenzeiten zusätzliche Leselast. Solange Query Sampling aktiv ist, werden Stichproben in config.sampledQueries geschrieben; schalte es nach Abschluss der Analyse aus. Ein monoton steigender Schlüssel (ObjectId, Zeitstempel) häuft alle Inserts auf einem Shard an.

In DBAtlas öffnen →

Verwandte Einträge