带有 SQlite 的批量插入

Bulk Inserts with SQlite

本文关键字:插入 SQlite 带有      更新时间:2023-10-16

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

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

还有其他技巧如何以最有效的方式做到这一点吗?

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

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

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

如果你有一定的性能要求,那么你必须衡量自己。