内存数据库的内部架构

Internal architecture of in memory data base

我在嵌入式系统中使用 SQLite 开源数据库。
我在下面设置了 PRAGMA

qDb.exec("PRAGMA synchronous = OFF");
qDb.exec("PRAGMA journal_mode = MEMORY");

PRAGMA 用于内存中工作。 如果没有这个标志,数据库性能会很慢,但是在这个 PRAGMA 之后性能提升非常明显。

所以我决定为我的嵌入式应用程序使用内存数据库。 我知道内存数据库整个数据集在 RAM 中,而在传统数据库中整个数据库在磁盘中。 因此 RAM 操作比磁盘操作快。

我的问题

  1. 我想知道数据是什么时候写入主存的? (Let's say I have written 100 rows in table A. After which time it is safe to the power of the device)

  2. 如何将内存数据库中的数据丢失风险降至最低。 (Is it technically possible)

理解有误请指正

感谢您的阅读。

SQLite 有一个检查点,它是托管数据,用于将数据写入主内存。

当事务日志文件自上次检查点后变得大于 X GB 时,将采用自动检查点。然后将事务日志数据 write-in 的大小从 RAM 传输到主内存。

当数据库文件上的最后一个数据库连接关闭时,数据也会写入主内存。