【发布时间】:2012-01-19 15:24:16
【问题描述】:
我们在基于 C++ 的项目中使用 Sqlite3 作为嵌入式数据库。使用 sqlite3 接口(实际提交日志记录的接口)的进程似乎会随着数据库大小的增加而扩展其堆内存。
堆内存扩展肯定与数据库的大小直接相关(证据:如果“insert-to-database”行被注释掉,扩展永远不会发生并且如果启用日志包装,当数据库开始包装时扩展停止发生,就好像它已被最大化)。
我们使用的是类似 unix 的操作系统。
有谁知道 SQLITE3 是否执行某种我们可以禁用的缓存,如果 UNIX 可能自己这样做,或者这是否必然是一个问题?这里的担心显然是堆内存可能被耗尽,导致我们的系统崩溃。
我看到了对 UNIX 缓存事物本身并在需要时释放与缓存相关的内存的奇怪引用,但我对这个主题的了解不够,无法确信这是真的。我没有在 SQLITE3 文档中成功找到任何相关的内容(我理解)。
【问题讨论】:
标签: database unix sqlite operating-system embedded