我正在使用 SQLite 处理一些大型(数千万条记录,大约 10gb)数据库文件。我正在使用这个 python 的标准接口(interface)。
当我尝试将数百万条记录插入数据库或在某些列上创建索引时,我的计算机会慢慢耗尽内存。如果我查看正常的系统监视器,看起来大部分系统内存都是空闲的。但是,当我使用 top 时,看起来我几乎没有可用的系统内存。如果我按进程的内存消耗对进程进行排序,那么它们中的任何一个都不会使用超过我内存的百分之几(包括运行 sqlite 的 python 进程)。
所有的内存都去哪儿了?为什么 top 和 Ubuntu 的系统监视器对我有多少系统内存存在分歧?为什么 top 告诉我我的可用内存很少,同时不显示哪个进程正在使用所有内存?
我正在运行 Ubuntu 11.04、sqlite3、python 2.7。
最佳答案
10 比 1 表示你对 linux 的文件系统缓冲区/缓存感到困惑
看
通过做测试它(以root身份)
echo 3 > /proc/sys/vm/drop_caches
关于python - 为什么运行 SQLite(通过 python)会导致内存填满 "unofficially"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491856/