Ich versuche die Größe aller Stücke in einer meiner Sharding-Sammlungen zu finden.
Ich würde gerne die echte Größe kennen, nicht den Hinweis, der den Mongos als eine Einstellung gegeben wird, von der ich weiß, dass ich sie finden kann:
%Vor%Ich habe mehrere Lösungen ausprobiert, aber die Tatsache, dass count Operation ist sehr langsam, so dass dies nicht einfach ist. Kennst du eine Lösung? (Shell, Csharp, Python, Ruby, Bash, ist mir egal)
Für jetzt habe ich Folgendes getestet:
%Vor% Aber das ist zu langsam, ich habe den Eindruck, dass es nicht den Index für meinen Shard-Schlüssel verwendet (der auf {partnerId : 1, id : 1}
steht).
Ich habe count auch durch explain ohne Glück ersetzt. Ich habe auch count durch ein javascript für jedes ersetzt, um manuell zu zählen (versucht, eine indexOnly -Abfrage zu haben, die nicht auf die Festplatte trifft).
Ich versuche, die wahre Größe zu finden, weil ich mehrere Brocken gesehen habe, die weit über der als Hinweis angegebenen Chunksize liegen (2Gb statt 64Mb).
Nach einigen Versuchen gibt es keinen einfacheren Weg, als eine Zählung in Version & lt; 2.2 zu verwenden Das Folgende ist das Skript, das ich mit meinem zusammengesetzten Shard-Schlüssel (partnerId, id) verwende.
%Vor% Ich denke, der Befehl, der Ihnen am meisten helfen würde, ist der Befehl datasize
. Es gibt hier noch eine Einschränkung, dass der Befehl länger dauern wird, um in größeren Sammlungen zu laufen, so dass Ihre Laufleistung variieren kann.
In Anbetracht dessen könnten Sie etwas Ähnliches wie das Folgende versuchen:
%Vor%