1

コレクションの 1 つに、フィールドを持つドキュメントがあります"sc":[float]。すべてのドキュメントを反復処理し、これを"sc": floatに変更します。つまり、配列を削除して、float 値を直接キーに割り当てます。

WiredTiger は、MMap のようなインプレース更新を試みる代わりに、更新されたすべてのドキュメントを追加するというのは本当ではないでしょうか?

これにより、基本的にデータベースのサイズが 2 倍になり、最初の半分は古いデータになります。

それらの古い文書を破棄するために電話mongod -repairする必要がありますか、それとも他に何かする必要がありますか?

4

1 に答える 1

1

WT は更新時に常にドキュメントを書き換えますが、NMAP の代わりにパディングを使用せず、フリー ブロックにドキュメントを割り当てるため、ドキュメント 1、2、3 がある場合、no1 がファイルの末尾に移動される可能性があります。 (または最も近いギャップ)、no2 は前の no1 スペースに割り当てられます。

WT で重要なこと:

WiredTiger は継続的な圧縮とスペースの再利用を自動的に行います。

ファイルが効率的に使用されるようにするために、この説明に従って、より小さなページ サイズを使用するように WT を強制できます。

--wiredTigerCollectionConfigString="leaf_page_max=8KB"

ここでさらにcompactスペースを再利用するためにも使用できます。

于 2016-06-25T22:26:28.463 に答える