微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

内存数据库的内部架构

如何解决内存数据库的内部架构

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

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

PRAGMA用于内存中工作。 如果没有此标志,数据库性能将变慢,但是在执行PRAGMA之后,性能的提高确实非常明显。

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

我的问题

  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时,将使用自动检查点。然后,在事务日志数据达到该大小之后,就会从RAM写入主存储器。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。