是sqlite缓存查询的结果进行优化?

时间:2013-02-25 15:02:05

标签: python sqlite ironpython

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

我重构了代码,每次我查询时都打开一个连接到sqlite文件查询我想要的东西,然后关闭连接。

后者似乎并不那么渴望记忆。它不会超过某一点。

我对sqlite db的所有操作都是对表的简单选择(包含两个聚合)。

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

2 个答案:

答案 0 :(得分:2)

请参阅SQLite: PRAGMA cache_size

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

PRAGMA cache_size=-KB

使用否定的' - 'KB值将其设置为KiloBytes中的大小,否则设置要使用的页数。

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

答案 1 :(得分:0)

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

您可以了解有关cached_statements参数here的信息。

有关此issue的更多信息。