1

我的情况:我有一个基于文件的 sqlite 数据库,并希望在内存中完成所有临时工作(用于大型查询的临时数据库等)。我尝试使用PRAGMA temp_store = 2命令,但我不能 100% 确定它是否真的符合我的要求。奇怪的是,在调试时,我仍然可以使用winGetTempname函数,它会在磁盘上打开一个临时文件!

我想,一旦我设置了这个编译指示,它甚至不应该尝试打开一个临时文件......

我也尝试使用 TEMP_STORE 预处理器标志,但同样,对winGetTempname的调用仍然完成......

有任何想法吗?

4

3 回答 3

4

文档

回滚日志、主日志和语句日志文件始终写入磁盘。但其他类型的临时文件可能只存储在内存中,从不写入磁盘。除了回滚日志、主日志和语句日志之外的临时文件是写入磁盘还是仅存储在内存中取决于SQLITE_TEMP_STORE编译时参数、temp_store pragma 和临时文件的大小。

从上面可以清楚地看出,如果你设置了正确的标志,除了日志机制之外,所有的临时操作都将在内存中执行。

如果您想确保使用实用程序来监控您的应用程序的文件系统活动,例如Windows 上的Process Monitor

于 2009-09-29T06:59:52.717 回答
2

http://www.sqlite.org/inmemorydb.html

于 2009-09-29T07:06:44.607 回答
0

阅读此http://www.sqlite.org/inmemorydb.html

于 2009-10-15T06:03:36.807 回答