【问题标题】:Sqlite - how to use more memory and cache, and make it run fasterSqlite - 如何使用更多的内存和缓存,并使其运行得更快
【发布时间】: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


【解决方案1】:

查看http://www.sqlite.org/pragma.html 中的所有选项。您可以在应用程序中调整很多与 SQLite 相关的性能方面。

所有 I/O 活动都是为了数据的完整性。 SQLite 默认是非常安全的。

您的文件系统对性能也很重要。并非所有 FS 都与 fsync 和 SQLite 内部日志记录的(默认)配置公平竞争。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2018-05-23
    • 2014-11-28
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多