【问题标题】:How many inserts can be done within one transaction in SQLite?SQLite 的一个事务中可以进行多少次插入?
【发布时间】:2011-11-04 04:27:43
【问题描述】:

我正在尝试将大量记录(以百万计)插入 SQLite 数据库。数据是从文件流 (C++) 中读入的。如果我开始一个事务,执行所有的插入然后提交事务,我只会得到非常小比例的实际插入到我的数据库中的记录。

插入的那些似乎是随机的——我真的看不出任何模式,哪些被插入,哪些被遗漏。但是,如果我提交然后在 2000 次插入之后再次开始事务,我就没有这个问题,并且所有记录都被插入,即使过程慢得多 。所以...

在一个事务中可以进行多少次插入是否有严格限制?有没有办法改变这个限制?

【问题讨论】:

  • 也进入了这个问题。只是为了后代把这个贴在这里。如果遇到这种情况,应首先尝试对每个事务仅批处理 1k-2k 插入,看看这是否确实是问题。
  • 我也有同样的问题,您需要为每笔交易单独购买 100 件商品。

标签: sqlite transactions


【解决方案1】:

我可以毫无问题地在单个事务中插入 1000 万行。

我的猜测:

  • 您在单个语句中插入了太多行并达到了表达式树的最大深度限制。这可以完全关闭。
  • 您使用过长的 INSERT 没有绑定值并达到 SQL 语句的最大长度限制。在这种情况下,请使用参数绑定。
  • 这可能是库中的错误(您是否在检查每个 API 返回的错误代码?)

检查Limits In SQLite。如果您展示如何在代码中准备和执行 INSERT,这可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-01-08
    • 2010-12-09
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多