【发布时间】:2012-07-23 07:54:41
【问题描述】:
我在使用 sqlite 插入性能时遇到问题,即使是事务也是如此。 我的 android 应用程序从 Web 服务接收大约 23.000 行,我必须将它们插入到单个表中。
Web 服务是分区的,因此在对 WS 的每个请求中我都会收到大约 2000 行,并且我将 2000 个插入包装在一个事务中。完成这些插入后,我将新请求发送到 WS,并再次为新的 2000 行使用新事务。
一开始它工作正常。它每秒执行很多插入操作。但随着时间的推移,它变得越来越慢,最终以每秒 4 或 3 次插入结束,直到完成 23000 行。
桌子大小有问题吗?当它变大时,插入变慢? 有什么办法可以提高这么多数据的性能?
感谢您的帮助。
【问题讨论】:
-
您是否有任何索引可能会减慢它的速度?你确定你一次只插入 2000 个,而不是(到目前为止收到的所有数据)每次?
-
这听起来像是一个事务工作集在没有 COMMIT 的情况下扩展。
-
这一切都取决于您插入的数据,字符串会减慢您的数据库速度。这 2000 行的字节数是多少?插入 2000 行后数据库文件的大小差异是多少。我有一个 388000 行的数据库,文件大小为 64M,但数据都是双倍的。
-
您能发布实际启动事务并执行插入的代码的 sn-p 吗?
-
为什么要下载 23,000 条记录并尝试插入它们?让服务器生成一个包含 23,000 条记录的 SQLite 数据库,然后下载该数据库。
标签: android database performance sqlite transactions