sqlite - 内存中的临时数据

发布于 2024-08-06 06:22:16 字数 345 浏览 4 评论 0原文

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

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

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

有什么想法吗?

my situation: i have a file based sqlite db and want to have all temporary stuff done in memory (temp databases for large queries, etc). i tried using the PRAGMA temp_store = 2 command, but i am not 100% sure if it really does what i want. the strange thing is that while debugging i still reach the function winGetTempname which opens a temporary file on disk!

i thought, as soon as i have this pragma set, it should not even try to open a temporary file ...

i also tried to use the TEMP_STORE preprocessor flag, but again, the call to winGetTempname is still done ...

any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性 2024-08-13 06:22:17

来自文档

回滚日志、主日志、
和报表日志文件总是
写入磁盘。但其他种类
临时文件可能存储在
仅内存,从未写入磁盘。
是否临时文件 其他
比回滚、主控和
语句日志写入磁盘
或仅存储在内存中取决于
SQLITE_TEMP_STORE 编译时
参数、temp_store 编译指示和
关于临时文件的大小。

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

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

From the documentation

The rollback journal, master journal,
and statement journal files are always
written to disk. But the other kinds
of temporary files might be stored in
memory only and never written to disk.
Whether or not temporary files other
than the rollback, master, and
statement journals are written to disk
or stored only in memory depends on
the SQLITE_TEMP_STORE compile-time
parameter, the temp_store pragma, and
on the size of the temporary file.

From the above is clear that if you set the proper flags, all the temporary actions will be performed in the memory except the journal mechanisms.

If you want to be sure use a utility to monitor your application for file system activity like Process Monitor on Windows.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文