c++ - 使用 SQlite 批量插入

标签 c++ sqlite

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

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

有没有其他技巧可以最有效地做到这一点?

最佳答案

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

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

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

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

关于c++ - 使用 SQlite 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566197/

相关文章:

iphone - SQLite 问题 : sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 不工作

C++ intrusive_ptr 问题

c++ - 位数组程序

c++ - 为什么人们使用命令行而不是 IDE?

android - 波斯语的 sqlite 数据库

android - 测试 MobileServiceSQLiteStore 时无法加载文件或程序集 `SQLitePCL`

c++ - 如何处理来自不同开发环境的提交?

c++ - Visual Studio const_iterator 分配错误

python /SQLITE : How do I escape commands/strings

android - SQLite数据库没有为 Lollipop 插入ID