2016-07-07 94 views
0

我目前正在考慮編寫一個自己的簡單數據庫。現在我面臨這個問題,如何知道我的服務器下一次啓動失敗。許多高性能NoSQL數據庫使用日誌結構化合並樹或類似的機制。所以如果我總是在磁盤和i上寫最後的交易。即發生電源中斷時,我怎麼知道,當我重新啓動時,有多少數據已寫入? 我在Stackoverflow上看到另一個線程,我不幸現在找不到了,作者說,他相信在這種情況下總有一些能量保留,這保證了整個塊的寫入。這是對的嗎? 我該如何處理這種情況? 它應該是我用來報告讀取錯誤的異步* nix-API的一部分嗎?常見的HDD和SSD是否可以保證整個扇區被寫入?

回答

1

當您使用同步IO寫入命令將不會返回,直到它完成將塊/文件寫入磁盤。這可能需要一段時間,但是您的應用程序可以保證寫入已完成並刷新到磁盤。

爲了獲得更好的性能,通常選擇異步IO,它允許您的操作系統和存儲硬件緩存寫入以優化IO性能。

一些背景herehere

當你寫被緩存的地方在OS /硬件,你需要採取特別措施不失去他們在停電的this Q&Athis one解釋。

相關問題