13

次のようないくつかのシグナルに基づいて、MongoDB インデックスのサイズを適切に見積もるためのツールを探しています。

  • コレクション内のドキュメントの数
  • インデックス付きフィールドのサイズ
  • ObjectId でない場合に使用している _id のサイズ
  • ジオ/非ジオ

誰かがこのようなものに出くわしましたか? Mongo がメモリ ウォールにぶつかり、ドキュメントがディスクにページ アウトされ始めるとパフォーマンスが低下することを考えると、これは非常に役立つと想像できます。機能しているデータベースがあり、別のインデックスを追加したい場合、それが大きすぎるかどうかを知る唯一の方法は、実際に追加することです。

細かいところまで正確である必要はありませんが、B ツリーとインデックスの実装に関するいくつかの仮定があれば、役に立つほど合理的であると確信しています。

これがまだ存在しない場合は、ビルドしてオープンソースにしたいので、この計算に必要なパラメーターを見逃している場合は、回答に含めてください。

4

4 に答える 4

24

10 世代のエンジニアの何人かと話をしたところ、ツールはありませんが、次の式に基づいてエンベロープ計算を行うことができます。

2 * [ n * ( 18 bytes overhead + avg size of indexed field + 5 or so bytes of conversion fudge factor ) ]

n持っている書類の数はどこですか。

オーバーヘッドと変換パディングは mongo 固有ですが、最悪の場合、2x は b ツリー データ構造がほぼ半分いっぱいになっている (ただし、完全なツリーが必要とするスペースの 100% を割り当てている) ことから生じます。

もっと説明したいのですが、今は自分で学んでいます。このプレゼンテーションには詳細があります: http://www.10gen.com/presentations/mongosp-2011/mongodb-internals

于 2011-12-22T22:47:04.453 に答える