2

MongoDBシャードのコレクションで新しい2.0以降のコンパクトコマンドを実行すると、ドキュメントには、コンパクトの実行中はコマンドがブロックされると記載されています。私の質問は、正確に何がブロックされているのかということです。そのシャードでのみそのコレクションに対するコマンド?クラスタ全体でそのコレクションへのすべてのコマンド?そのシャードのコレクションに関係なく、すべての操作?

などなど...

誰か知ってる?

1つのシャードでコレクションを圧縮することは、理論的には他のシャードから独立している必要があるため、シャーディングのポイントであるため、そのシャードでのそのコレクションに対するコマンドにすぎないと思います。

ありがとう、ジャスティン

4

1 に答える 1

1

圧縮はクラスター内のコレクションごとではなくノードごとに行われるため、通常はセカンダリで圧縮を実行します。実行中、ノードは回復状態になります。そのため、読み取りまたは書き込みを処理することはできません。rs.status() で確認できます。そのセカンダリが完了すると、次のセカンダリに移動します。すべてのセカンダリを実行したら、マスターを降格し (新しく圧縮されたセカンダリの 1 つがマスターとして引き継がれるようにします)、次に現在のセカンダリ (以前のマスター) でコンパクトを実行します。

コンパクションはmongodでのみ実行する必要があるため、mongosを介して圧縮を実行できるかどうかさえわかりません。

于 2012-02-15T20:21:20.743 に答える