带SQlite的散装插件

时间:2017-08-08 10:44:16

标签: c++ sqlite

我需要将大量数据插入到sqlite数据库中。数据是连续收到的。

更好的是:准备语句,开始事务,插入,在一定数量的插入结束事务后,重复循环或缓存数据,偶尔打开db,做批量插入,关闭db,继续缓存?

有没有其他提示如何以最有效的方式完成?

1 个答案:

答案 0 :(得分:1)

您的两种情况之间的唯一区别是您正在关闭数据库连接。这通常不是一个好主意,因为它会丢弃页面缓存。 关闭连接可能仅在您拥有极少量内存并且确实需要其他内容时才有用。

重要的是将多个插入放入单个事务中,但您已经这样做了。

问题是有多少插入属于一个事务。 如果您可以并行执行接收和数据库操作,那么您应该只插入自上一批以来您收到的所有数据。 (这将导致连续的数据库操作流。) 除非您想避免执行过多的磁盘I / O,否则缓存较长计时器的数据是没有意义的。

如果您有某些性能要求,那么您必须自己衡量。