【发布时间】:2011-07-25 15:03:27
【问题描述】:
我在 Sqlite 的表中插入大约 220GB 的数据,
我注意到它使用了大量的磁盘 I/O,读写, 但不会以任何重要方式使用计算机的内存, 虽然有很多空闲内存,而且我不经常使用 commit。
我认为磁盘 I/O 是我的瓶颈,不是 CPU 也不是内存。 我怎样才能要求它使用更多的内存,或者批量插入以便运行得更快?
【问题讨论】:
-
SQLite 可能不是您正在做的事情的正确选择。您可能想要使用更重的数据库,例如 MySQL 或 Postgres。
-
所有这些都是 SQLite 设计的一部分。特别是,请查看atomic commits 上的文档。如果您在数据库中存储了如此多的信息,那么您可能应该使用另一种实现。
-
这种问题经常出现在 sqlite-users 邮件列表中。特别是您每秒插入多少行以及它们的大小是多少?确保您正在使用事务。只有在有索引的情况下才需要使用内存,但在插入数据后创建索引要快得多。
-
解决方案几乎可以肯定是使用批量事务
标签: python sql database sqlite