2012-03-02 10 views
1

私はキャップ付きコレクション(crawl02)を作成し、このキャップされたコレクションのインデックスを作成します。 _idインデックスのないキャップ付きコレクションでMongoDB _idクエリを実行すると、パフォーマンスが低下します

> db.system.indexes.find() 
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.crawl02", "name" : "_id_" } 

私は、アプリケーションとクエリキャップを収集、 MongoDB Log常に出力フォローログruningて:

[conn2] warning: _id query on capped collection without an _id index, performance will be poor collection: test.crawl02を。キャップを収集(C#の)

var cursor = this.QueueCollection //crawl02 
      .Find(Query.GT("_id", this._lastId)) 
      .SetFlags(QueryFlags.AwaitData |QueryFlags.TailableCursor 
        | QueryFlags.NoCursorTimeout) 
      .SetSortOrder(SortBy.Ascending("$natural")); 
return (MongoCursorEnumerator<QueueMessage<T>>)cursor.GetEnumerator(); 

を照会する

私のコードステートメントは、カーソル変数についてのメッセージをお読みください。

while(true){ 
    if (this._cursor.MoveNext()) 
     return this._currsor.Current; 
    else 
     return null 
} 

のMongoDBはcrawl02ない私を衰退なぜ私は理解していませんインデックスを持つアップデートによって

====================================

[OK]を、私MongoDB office websiteでTailableカーソルについての記事を見つけ、メッセージは次のとおりです。

のMongoDBログ警告ためだ

Tailable cursors are only allowed on capped collections and can only return objects in natural order. Tailable queries never use indexes.

Tailable queries never use indexes.??

=================更新2 申し訳ありませんが、mongodbログの警告はtest.crawl02について忘れています。私は変更されました。

答えて

1

エラーは、test.crawl01にインデックスがないことを示しています。これは正しいです。 db.system.indexes.find() test.crawl02ではなく_idフィールドにインデックスがあります。 test.crawl01にインデックスを作成します。

+0

申し訳ありませんが、私は自分のpost.itについてtest.crawl02を変更しました。私は変更を忘れました。 – zhengchun