2012-09-20 28 views
27

Tôi bắn một truy vấn và cố gắng giải thích nó trên Mongo console và cóHiểu Mongo db giải thích

"isMultiKey" : true, 
"n" : 8, 
"nscannedObjects" : 17272, 
"nscanned" : 17272, 
"nscannedObjectsAllPlans" : 21836, 
"nscannedAllPlans" : 21836, 
"scanAndOrder" : true, 
"indexOnly" : false, 
"nYields" : 0, 
"nChunkSkips" : 0, 
"millis" : 184, 

Hầu hết những điều được giải thích trong http://www.mongodb.org/display/DOCS/Explain, nhưng tôi không thể hiểu được những gì hiện nscannedObjectsAllPlans, nscannedAllPlans nghĩa. Có ai giúp được không?

Cảm ơn

Trả lời

23

nscannednscannedObjects kết quả báo cáo cho kế hoạch chiến thắng.

nscannedAllPlansnscannedObjectsAllPlans báo cáo kết quả cho tất cả các kế hoạch

Ví dụ:

>t = db.jstests_explainb; 
>t.drop(); 

>t.ensureIndex({ a:1, b:1 }); 
>t.ensureIndex({ b:1, a:1 }); 

>t.save({ a:0, b:1 }); 
>t.save({ a:1, b:0 }); 

>t.find({ a:{ $gte:0 }, b:{ $gte:0 } }).explain(true); 
{ 
    "cursor": "BtreeCursor a_1_b_1", 
    "isMultiKey": false, 
    "n": 2, 
    "nscannedObjects": 2, 
    "nscanned": 2, 
    "nscannedObjectsAllPlans": 6, 
    "nscannedAllPlans": 6, 
    "scanAndOrder": false, 
    "indexOnly": false, 
    "nYields": 0, 
    "nChunkSkips": 0, 
    "millis": 2, 
... 
} 
+0

Vì vậy, tôi nên lo lắng nếu nscannedObjectsAllPlans, nscannedAllPlans đang đưa ra giá trị lớn trong khi nscanned vẫn nằm trong phạm vi chấp nhận được? –

+0

Tôi không nghĩ vậy - tôi tin rằng chỉ khi giải thích() được gọi là nó thực hiện những kế hoạch khác ngay từ đầu. – Konklone

+3

Chạy nhiều gói là cơ bản MongoDB quyết định nên sử dụng kế hoạch truy vấn nào. Nó thực hiện tất cả các kế hoạch mà nó có thể sử dụng song song trong lần đầu tiên truy vấn được chạy, sau đó định kỳ sau một số truy vấn hoặc thay đổi dữ liệu. Ngay sau khi một kết thúc, nó lưu trữ nó như là kế hoạch để sử dụng, hủy bỏ những người khác, và sẽ sử dụng kế hoạch đó cho đến khi thời gian tiếp theo nó quyết định làm mới nó. –

Các vấn đề liên quan