2015-10-08 47 views
2

我用蒙戈的解釋()來檢查某些查詢的性能,有時keep_mutation階段會出現這樣的:MongoDB的keep_mutation階段解釋

"executionStats" : { 
      ... 
      "executionStages" : { 
        "stage" : "KEEP_MUTATIONS", 
        "nReturned" : 1, 
        "executionTimeMillisEstimate" : 5460, 
        "works" : 79622, 
        ... 
      } 
    } 

我想知道更多關於這個階段,所以我搜索通過互聯網,令我驚訝的是,即使在官方文檔中,我也找不到與其相關的有用信息,更不用說其他網站了。有人可以幫忙解釋嗎?

回答

6

KeepMutationsStage傳遞其所有孩子的數據直到孩子是EOF。然後它返回WorkingSet中所有通過舞臺過濾器的標記元素。

此階段用於在可能的情況下將查詢結果無效的結果合併回查詢結果。查詢計劃員負責確定合併這些結果的時間。

Source

+2

感謝您在2個月後回覆我的問題,當我發佈這個問題! (我認爲沒有人會回答這個問題)。你也發佈了相關的MongoDB類的github源代碼鏈接。 (我不知道我可以在github上找到源代碼)。如果你能夠更詳細地解釋(因爲我在答案中有許多術語我不明白,例如:孩子的數據,被標記的元素等)。提前致謝。 – webberpuma

0

檢查this

KEEP_MUTATIONS階段:當文檔被刪除或更新一些查詢 階段可以收到無效的通知。一些階段標記文件 被刪除。標記的文檔集然後通過 KEEP_MUTATIONS階段讀取,其重新檢查這些文檔與 查詢並且如果它們仍然匹配則返回它們。請注意,這不適用於WiredTiger引擎的 ,僅適用於MMAPv1。