我创建了一个 SQLite 数据库作为临时数据库(通过在 sqlite3_open() 中指定一个空文件名)。我还通过使用“sqlite3_soft_heap_limit64()”将数据库可以使用的内存量限制为大约 200KB。
当我不断插入数据库行时,我看到数据库使用的内存(通过 sqlite3_memory_used() 获得)上升直到达到 200KB,然后保持不变,即使连续插入行也是如此。
达到分配的限制后,用于插入的额外行空间在哪里?它是在磁盘上创建的临时文件吗?我想知道位置,以便我可以控制/配置此类分配可能导致的任何空间问题。
最佳答案
我深入研究了 SQLite 代码以了解这是如何完成的。在 Unix 平台上,SQLite 将尝试在以下任一方式中创建一个临时文件:
- SQLite全局变量指向的位置:sqlite3_temp_directory
- 环境变量“TEMP”、“TMP”或“TMPDIR”中的任何一个依次指向的目录。
关于sqlite - SQLite 3中临时数据库的数据存储空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449169/