我有一个700MB的SQLite3数据库,我用简单的Python程序读/写。 我试图在数据库上运行时测量程序的内存使用情况。我使用过这些方法:
前两个支持在任何给定时间使用不超过20MB的结论。我可以从一个空的数据库开始,用700MB的数据填充它,它仍然低于20MB:
内存分析器的数字从未超过15.805MiB:
Line # Mem usage Increment Line Contents
================================================
...
229 13.227 MiB 0.000 MiB @profile
230 def loop(self):
231 """Loop to record DB entries"""
234 15.805 MiB 2.578 MiB for ev in range(self.numEvents):
...
pstuil 表示峰值使用量为16.22265625MB
现在顶部 / htop 有点怪异。两人都表示python进程的内存使用量不超过20MB,但我还可以清楚地看到,随着通过使用的号码填充数据库,可用内存不断减少: / p>
Mem: 4047636k total, 529600k used, 3518036k free, 83636k buffers
我的问题:
关于最后一点,我的最终目标是在内存有限的嵌入式系统上使用一个相当大的未知大小的SQLite数据库,我想知道内存使用是否正常或多或少无论数据库的大小如何都是常数。
答案 0 :(得分:2)
SQLite的内存使用量不依赖于数据库的大小; SQLite可以很好地处理TB级数据库,它只加载它需要的数据库部分(加上一个小的,可配置大小的缓存)。
SQLite应该适用于嵌入式系统;这本来就是为它设计的。