sqlite3多次插入速度非常慢

时间:2018-07-15 10:56:16

标签: sqlite

我已经在Windows中构建了一个文件存档器,该文件存档器使用sqlite3存储文件并利用多核技术来更快地完成存档。

我现在正在尝试备份100.000个文件,并且插入速度很慢。

当我注释插入的行时,该应用使用100%正常的CPU。插入线打开时,它很少会超过25%。

随着归档的进行,插入变得越来越慢,每秒处理几个文件,CPU使用率为11%。没有显示磁盘使用情况,因此瓶颈不能是磁盘。

我已经

PRAGMA temp_store = MEMORY
PRAGMA journal_mode = MEMORY
PRAGMA synchronous = OFF

并且整个插入操作都在事务内。

经过进一步分析,看来SQLite的问题是绑定blob64(如果我传递0,这似乎很好)。

为什么SQLite在将原始数据块插入存档时会有问题?

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

您的答案可能在这里:

https://www.sqlite.org/threadsafe.html

因为它在那里:

  

默认模式是序列化的。

这可能会解释您的观察结果。

根据该文档,您可以在编译时进行配置(我绝对不会自己做)或通过以下方式进行配置:

sqlite3_config (SQLITE_CONFIG_MULTITHREAD);

我不知道它在平流层的表现如何。