2016-07-07 95 views
0

我目前正在考虑编写一个自己的简单数据库。现在我面临这个问题,如何知道我的服务器下一次启动失败。许多高性能NoSQL数据库使用日志结构化合并树或类似的机制。所以如果我总是在磁盘和i上写最后的交易。即发生电源中断时,我怎么知道,当我重新启动时,有多少数据已写入? 我在Stackoverflow上看到另一个线程,我不幸现在找不到了,作者说,他相信在这种情况下总有一些能量保留,这保证了整个块的写入。这是对的吗? 我该如何处理这种情况? 它应该是我用来报告读取错误的异步* nix-API的一部分吗?常见的HDD和SSD是否可以保证整个扇区被写入?

回答

1

当您使用同步IO写入命令将不会返回,直到它完成将块/文件写入磁盘。这可能需要一段时间,但是您的应用程序可以保证写入已完成并刷新到磁盘。

为了获得更好的性能,通常选择异步IO,它允许您的操作系统和存储硬件缓存写入以优化IO性能。

一些背景herehere

当你写被缓存的地方在OS /硬件,你需要采取特别措施不失去他们在停电的this Q&Athis one解释。

相关问题