即使对于事务,我也遇到了sqlite插入性能问题。 我的Android应用程序从Web服务接收大约23.000行,我必须将它们插入到单个表中。
对Web服务进行分区,以便在每个WS请求中收到大约2000行,并在事务中包装2000个插入。完成这些插入后,我将新请求发送到WS,并再次使用新事务处理新的2000行。
一开始它工作正常。它每秒执行大量插入操作。但随着时间的推移变得越来越慢,最终每秒有4或3次插入,直到完成23000行为止。
桌子大小有问题吗?当它变大时,插入变慢了? 有没有办法改善大量数据的性能?
感谢您的帮助。
答案 0 :(得分:1)
在问题How Do I Improve The Performance of SQLite?中有一个很好的涵盖SQLite性能的线程非常好。如果你还没有使用它们,我会至少阅读准备好的陈述。
但是,正如您在Android上一样,我猜您可能会遇到写入闪存的一些I / O瓶颈。尝试在不同制造商的几个不同设备上运行代码,看看是否存在任何极端变化。
答案 1 :(得分:0)
您应该使用数据分区。 因为你可以逐个插入100 - 100插入,这样过程就会很顺利,不会出现数据丢失问题。
另一件事我假设您正在使用asynch(可以是其他)线程。
或者您也可以在最后一种情况下使用服务来一次使用所有数据。