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