1

我在 sqlite 中注意到了这种行为。当我重新使用游标对象时,任务管理器中的工作集内存不断增加,直到我的程序抛出内存不足异常。

我重构了代码,这样每次查询时,我都会打开与 sqlite 文件的连接,查询我想要的内容,然后关闭连接。

后者不知何故似乎并不那么需要内存。它不会增加超过某个点。

我对我的 sqlite 数据库所做的只是针对一个表进行简单的选择(其中包含两个聚合)。

这是我们可以以某种方式控制的行为吗?我想重用我的游标对象,但不希望内存被吃掉......

4

2 回答 2

2

请参阅SQLite:PRAGMA cache_size

默认情况下,缓存大小相当大(~2MB),即每个连接。您可以使用 SQL 语句将其设置得更小:

PRAGMA cache_size=-KB

使用负的 '-' KB 值将其设置为以千字节为单位的大小,否则设置要使用的页数。

此外,如果使用多个连接,您可能希望使用共享缓存来节省内存: SQLITE: Shared Cache

于 2013-02-26T08:11:51.787 回答
0

是的,Python 的 sqlite3 模块使用语句缓存。

您可以在此处阅读有关cached_statements参数的信息。

有关此问题的更多信息。

于 2018-07-31T13:58:32.283 回答