2012-08-27 24 views

答えて

19

コレクションからすべてのドキュメントを削除すると、ドキュメントのストレージを解放したり、ドキュメントを指し示すインデックスエントリをクリアしたりするなど、もっと多くの作業が必要になります。代わりにコレクションを削除するだけであれば、コレクションとそのインデックスが使用するエクステントを再利用することになります。

もう1つの違いは、コレクションを削除するとコレクションのインデックスも削除されることです。

20

単純にコレクションを削除するメリットは、コレクションのすべてのドキュメントを削除するよりもはるかに高速であることです。とにかく(インデックスの再作成を含むと仮定して)あなたのコレクションが「すぐに再作成」される場合、これはおそらく最も魅力的なオプションです。本MongoDB: The Definitive Guide(クリスティーナ・チョードーローとマイケル・ディロフ)の

著者は、彼らがremove 1000000のレコードの対dropを時限Pythonスクリプトを提供する実験を実行しました。結果はdropでは0.01秒、removeでは46.08秒でした。現在、ハードウェアやその他の要因によって正確な時間が異なる場合がありますが、dropの方がはるかに高速であるということを示しています。

参照: Chodorow K.、Dirolf M.(2010)。 「MongoDB:The Definitive Guide」O'Reilly Media、Inc.、Sebastapol、CA、pp.25

+5

+1しますが、削除対ドロップで1つの警告、そしてあなたがシャード環境にいるときには、再利用に関連するさまざまなバージョンに比べていくつかのバグがありましたドロップされたコレクション名(または場合によっては接頭辞)。私が知っている最新の関連するバグはこれです:https://jira.mongodb.org/browse/SERVER-4262そしてこれは2.2で修正されています - あなたがたくさんのドロップ/再作成を計画しているなら。 –

+0

チップのおかげで@AdamC!私は、このシナリオが混乱の中でシャーディング/レプリケーションを少しトリッキーにしていると思います。私は家で私のラボにマスター/スレーブの複製設定を持っているので、それを試してみる必要があります。 – Aaron

1

ほとんどの場合、コレクションの削除と削除は実装の詳細です。

を削除すると、コレクションに存在する内部状態の更新が1つずつ、になる必要があります。

コレクションを削除するには、大きなデータ構造をデータファイルのデータベース内に解放する必要があります。

コレクションを削除するのは、コレクションが空になるまで1つずつ削除するよりもはるかに高速です。インデックスのような

メタデータ意志コレクションが削除された場合むしろその低下したときよりも、存在しています。

出典:MongDB大学のコースの答えに

関連する問題