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

标签 linux sqlite debian

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

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

最佳答案

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

参见 https://www.sqlite.org/c3ref/db_cacheflush.html

关于linux - 如何将 SQLite3 数据库更改刷新到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47096127/

相关文章:

linux - 如何查看 Spot 实例终止时间

android - 如何在 Android 上使用 Spatialite 和 Xamarin

Python sqlite3选择不重复字段

Android SQLite 3,JOINS 还是多个查询?

java - 无法获取 http ://ppa. launchpad.net/webupd8team/java/ubuntu/dists/jessie/main/binary-amd64/Packages 404 未找到

c - 如何在基于 Debian 的系统上以编程方式获取 IP 地址?

linux - debian - lampp - 在 sublime 和权限中打开文件

c - 在c中查找特定文件类型并保存

c++ - 为 X 毫秒数创建一个 boost::posix_time::ptime 实例

linux - 有人能告诉我这个代码片段的作用吗