2011-09-13 8 views
0

私はその疑問が混乱していることを認識しています。私は私のシャーディング・トポロジーをテストしていると私は持っている:2つのシャードを持つシャードされたレプリカセット全体に書き込むと、2番目のシャードのプライマリで同じボリュームの奇妙な読み取りが発生します

シャードA (ノード1(プライマリ)、ノード2(二次)、ノード3(二次))

シャードB (ノード4(プライマリー)、NODE5を(二次)、ノード6(セカンダリ)

0のデータベースアクティビティでは、シャードされたコレクションに多くのデータを書き始めると、シャードAのすべてのノードですべての書き込みアクティビティが表示されます(この特定のチャンクはそこに書かれている)。奇妙な部分は、node4(シャードBのプライマリ)で、同じボリュームのが、の読み込みと同時に書き込みが行われていることが分かります。この動作の原因は何か?

答えて

0

すべての書き込みがShard Aに向かう場合、表示される主なアクティビティーはこれらのノードだけです。 (すなわち、ノード1への書き込み、ノード2/3への取得)。

つの大きな疑問:

  1. どのように統計情報を取得していますか? (mongostat?)
  2. インポートプロセスは、挿入する前に既存のエントリを確認していますか?両方のシャードに対して実行する必要があるクエリを送信している可能性はありますか?シャードキーにないクエリは、両方の(すべての)シャードにクエリを移動させる可能性があります。
+0

お返事ありがとうございます。 1のために、私はmongostatを使用しています。 2の場合、私はレールのスタックを介してオブジェクトの束をインスタンス化しています。保存する前にオブジェクトが存在するかどうかを調べることが可能です(キーの制約やおそらく何かを避けるために?)ドライバはMongoid btwです。 –

+0

Mongoidの詳細はわかりませんが、プロファイルレベルを変更してクエリを実行することができます。これを設定するためのDBプロファイラのドキュメントを見てください:http://www.mongodb.org/display/DOCS/Database+Profiler –

関連する問題