如何将SQLite3数据库更改刷新到磁盘?

时间:2017-11-03 12:44:32

标签: linux sqlite debian

我的应用程序在便携式Debian(5和8)计算机上运行。此计算机可能会在不可预测的时间内断电。应用程序经常更新特定的SQLite3数据库,并使用sync()命令立即刷新到磁盘。这样做是为了避免数据库损坏,这种情况会在更改完全写入磁盘之前消失。

这一直很好用,但现在的问题是sync()命令将所有打开的文件刷新所有缓冲的更改。这会导致系统其他部分的速度减慢。一种可能的解决方案是仅刷新关键文件更改,例如此特定数据库文件。但问题是;我怎样才能做到这一点?我无法访问文件描述符,我无法找到任何为我执行此操作的SQLite3函数。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用文件特定的同步。 fsync()将对此有用。

请参阅https://www.sqlite.org/c3ref/db_cacheflush.html