作用:
為了性能考慮,NeDB存儲使用append-only格式,意味著所有的更改和刪除操作其實都是被添加到了文件末尾。每次加載數(shù)據(jù)庫時,數(shù)據(jù)庫會自動被壓縮,才能拿到規(guī)范的文檔集。
也可以手動調(diào)用壓縮方法db.persistence.compactDatafile(該方法沒有參數(shù))。函數(shù)內(nèi)部有隊列機制,保證命令按順序執(zhí)行。執(zhí)行完成后,會觸發(fā)compaction.done事件。
也可以設置自動壓縮方法db.persistence.setAutocompactionInterval(interval)來定時執(zhí)行。interval是毫秒級別(大于5000ms)。停止自動壓縮使用方法db.persistence.stopAutocompaction()。
壓縮會花費一些時間(在普通機器上,5w條記錄花費130ms處理,并不會耗費太久)。在壓縮執(zhí)行期間,其他操作將不能執(zhí)行,所以大部分項目不需要使用它。
假設不受corruptAlertThreshold參數(shù)的限制,壓縮將會把損壞的記錄全部移除掉。
壓縮會強制系統(tǒng)將數(shù)據(jù)寫入磁盤,這就保證了服務崩潰不會引起數(shù)據(jù)的全部丟失。最壞的情況就是崩潰發(fā)生在兩個壓縮同步操作之間,會導致全部數(shù)據(jù)的丟失。
更多建議: