1. 程式人生 > >MongoDB 之 幽靈操作避免

MongoDB 之 幽靈操作避免

出現 等待 原因 依然 觸發 才會 job -s style

進行靜態加載數據到集合的過程中可能會出現。

假設建立一個任務(Job):在MongoDB中進行千條更新操作,開始後迅速終止任務,終止所有更新操作,但依然發現新的更新任務在不斷出現,即使任務已經停止。

原因是:如果使用非應答式寫入(unacknowledge write)加載數據,應用觸發寫入操作的速度可能比MongoDB處理速度快。如果MongoDB有準備,這批寫入將會堆積在操作系統中的套接字緩存(socket buffer)中。此時,終止掉MongoDB正在進行的寫入操作後,MongoDB開始處理緩存區的寫入操作。因為,這批操作已經被MongoDB所接收了,只不過暫時還沒有進行處理。

避免這種幽靈操作的最佳方案是:使用應答式寫入,即每次寫入操作都等待上次寫入完成後才會進行下去,而非在上一次寫入進入緩存區時就進行下一次操作。

MongoDB 之 幽靈操作避免