【问题标题】:Making SQlite3 inserts faster using Perl API使用 Perl API 使 SQlite3 插入更快
【发布时间】:2012-01-17 04:01:03
【问题描述】:

我是 DBD::SQLite 使用 perl 在 SQlite3 db 中插入一些数据。

我注意到插入(插入 35k 行)需要很长时间。 有什么办法让它更快。

优化对我来说比数据同步更重要。 如何使用 perl 对其进行优化?

请帮忙。

【问题讨论】:

  • 你是在做单行插入还是批量插入?
  • 目前正在进行单行插入。
  • Perl 是 API 吗?什么意思?
  • @Zaid Perl 将是编程语言。

标签: perl sqlite


【解决方案1】:

在插入之前尝试执行此语句:

PRAGMA synchronous = OFF

请参阅more information 的 SQLite 文档。

另外,正如 Ilion 所指出的,尝试只使用一次 prepare() 语句,然后使用不同的绑定值多次重复 execute()。对于某些 N 值,关闭 AutoCommit 然后仅显式提交插入的每 N 行也可能有所帮助。

【讨论】:

  • 还有一个足够新的 SQLite,PRAGMA journal_mode = WAL(如果你真的不关心数据完整性,甚至是= OFF
  • 除了PRAGMA 技巧之外,所有这些相同的建议通常都适用于加快向任何关系数据库(MySQL、PostgreSQL 等)的插入。
【解决方案2】:

确保您使用的是准备好的语句,这样它就不必分析每个插入。也可以尝试用 Begin ... Commit as described in this FAQ 将插入语句分组。

【讨论】:

    【解决方案3】:

    确保您在连接上设置了AutoCommit => 0。 相反,在每批插入之后显式提交。

    【讨论】:

      【解决方案4】:

      除了完全关闭自动提交之外,您还可以尝试使用大型事务。通常与单行插入完全不同。

      【讨论】:

        猜你喜欢
        • 2010-09-26
        • 2019-08-11
        • 2013-06-02
        • 1970-01-01
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        相关资源
        最近更新 更多