2
私は何百万もの膨大な数のエントリを持っています。すべてのデータを効率的に削除したいが、コレクションを削除する必要はありません。mongo効率的に大きなコレクションからデータを削除します
それを行うための最善の方法は何ですか?
db.some_coll.remove({})
はかなり時間がかかります!
私は何百万もの膨大な数のエントリを持っています。すべてのデータを効率的に削除したいが、コレクションを削除する必要はありません。mongo効率的に大きなコレクションからデータを削除します
それを行うための最善の方法は何ですか?
db.some_coll.remove({})
はかなり時間がかかります!
これを行うにはどうすればよいですか?
あなたが見つかりました。コレクションを消去するには2通りの方法があります:
db.some_coll.remove({})
:すべてを一度に1つずつ削除します。各削除は挿入と同じくらい高価であるため、時間がかかります。db.some_coll.drop()
:コレクション全体をクリアするだけです。私は効率的にすべてのデータ全体を削除したいのですが、コレクションを削除せずに。
なぜコレクションを削除しないのですか?すべてのデータを削除したい場合は、インデックスとおそらくコレクションの設定を再作成するだけです(キャップ付きコレクションのみ)。
インデックスの再作成は、非常にです。 ハングアップとは何ですか?
私もシャーディングしています。私がドロップを使用する場合、私はコレクションを共有するように再構成する必要があります。アプリケーションに対してこれをどのように透過的に行うことができますか? – Julias
コレクションのシャーディングは、インデックスを再作成するのと似ていますが、チャンクに関する設定DBのデータは失われます。あなたは* "transparent to application" *を定義する必要がありますか?たくさんのデータを削除すると、アプリケーションは気付くでしょう。 –
もちろんあります。私のビジネスロジックは、データを削除し、新しいデータを挿入することです。私は、データが一貫していっぱいではない期間があることを認識しています。しかし、共有設定を自分のアプリケーションサーバーに透過的にしたいと考えています – Julias