提高从SQLite数据库中读取blob的性能

时间:2016-05-19 12:57:42

标签: ios database multithreading performance sqlite

我有一个SQLite数据库,其中小图像存储为blob。我需要尽快读出几十张这些图像,以便在用户界面中显示它们。

对代码进行分析后发现,绝大部分时间都花在从数据库中读取的sqlite3_step调用中。

如何改善这些读取的性能?

一个想法是让多个线程同时从数据库中读取以提高性能,但SQLite中的the threading documentation不是很清楚:是否可以同时从数据库中读取多个线程,或者读取总是被序列化,无论它们来自哪个线程?

是否有其他方法可以提高从SQLite数据库中读取blob的吞吐量?

1 个答案:

答案 0 :(得分:0)

根据您的使用模式,有可能(但不一定安全)让多个线程同时从SQLite数据库读取。

如果使用序列化模式,多个线程将无法帮助您,因为请求不会并行执行。文档暗示多线程模式允许您使用多个线程并行读取,但每个线程都需要拥有自己的数据库连接,因此这可能是尝试的选项;我怀疑如果你还没有写入数据库,这会更好。

您的应用程序的限制因素也可能是磁盘的读取速度,在这种情况下,线程无法帮助您,因为它们都在同一磁盘上访问相同的SQLite数据库文件。