为什么运行SQLite(通过python)会导致内存“非官方”填满?

2024-05-16 17:41:41 发布

您现在位置:Python中文网/ 问答频道 /正文

使用大约10兆字节的数据库处理数以百万计的记录。我在做这个python的标准接口。在

当我试图在数据库中插入数百万条记录,或在某些列上创建索引时,我的计算机内存会慢慢耗尽。如果我看一下普通的系统监视器,它看起来大部分系统内存是空闲的。然而,当我使用top时,我几乎没有可用的系统内存。如果我按内存消耗对进程进行排序,那么它们中没有一个会占用我超过百分之二的内存(包括运行sqlite的python进程)。在

所有的记忆都去哪儿了?为什么top和Ubuntu的系统监视器不同意我有多少系统内存?为什么top告诉我我的可用内存很少,同时又没有显示哪个进程正在使用所有内存?在

我在运行Ubuntu11.04,sqlite3,Python2.7。在


Tags: 记忆内存数据库sqlite字节排序进程top
2条回答

10比1表示您对linux的文件系统缓冲/缓存感到困惑

看到了吗

做测试(作为根用户)

echo 3 > /proc/sys/vm/drop_caches

内存可能没有分配给进程,但可以是tmpfs文件系统上的文件(有时是/dev/shm,/tmp)。您应该向我们展示topfree的输出(请注意,这些工具没有显示一个“内存使用率”值),以便让我们更详细地了解内存使用情况。在

在将记录插入数据库的情况下,它可能是在将当前事务提交到实际数据库之前为当前事务创建的临时映像。将插入分成许多单独的事务(如果适用)可能会有所帮助。在

我只是猜测,没有足够的数据。在

另外,我好像看错了原来的问题(我假设电脑速度减慢了),没有问题。sehe的回答可能更好。在

相关问题 更多 >