我需要将大量数据插入到 sqlite 数据库中。连续接收数据。
什么更好:准备语句,开始一个事务,做插入,在一定数量的插入结束事务后,重复循环或缓存数据,偶尔打开数据库,做批量插入,关闭数据库,继续缓存?
有没有其他技巧可以最有效地做到这一点?
最佳答案
这两种情况之间的唯一区别是您要关闭数据库连接。这通常不是一个好主意,因为它会丢弃页面缓存。 仅当您的内存量非常小并且确实需要它用于其他用途时,关闭连接才有用。
重要的是将许多插入操作放入单个事务中,但您已经在这样做了。
问题是有多少插入属于一个事务。 如果您可以并行执行接收和数据库操作,那么您应该简单地插入自上一批以来收到的所有数据。 (这将导致连续的数据库操作流。) 为更长的计时器缓存数据没有意义,除非您想避免执行过多的磁盘 I/O。
如果你有一定的性能要求,那么你必须自己衡量。
关于c++ - 使用 SQlite 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566197/