Android sqlite/BLOB性能问题

Sga*_*ali 4 sqlite performance android blob

自从我将数据从ArrayList移动​​到Android上的sqlite数据库以来,我的性能严重下降.没有游标可以导致这种情况,所以我怀疑问题在于我存储在BLOB字段中的图像.

该应用程序创建具有字段cardBitmap的卡片,该字段在创建时使用位图填充.

谁能告诉我他们的经验,哪种解决方案更具性能:

  1. cardBitmap包含SDcard上文件的引用(路径),该文件将在创建时绘制.只有路径存储在DB中.
  2. cardBitmap包含一个对象(BitmapFactory.decodeStream(imageStream,null,null)),其中imageStream从相应的数据库字段读取为ByteArrayInputStream.

任何的意见都将会有帮助.谢谢!

Thi*_* D. 10

我还没有评论答案的声誉,所以我会添加我的2作为答案,请原谅我.

我正在寻找类似问题的答案,我不认为当前的答案是令人满意的,因为如果你问SQLite.org他们会告诉你它取决于blob大小和页面大小.

他们已经做了一个基准测试 - 不是在Android上 - 这表明在SQLite中存储blob对于小blob(高达20kB)比在单独文件上存储更快.对于大于100kB的blob,性能下降很大,并且最好将blob存储在单独的文件中(user370605)推荐.见http://www.sqlite.org/intern-v-extern-blob.html

我会考虑Android没有回答的问题.


use*_*305 8

你的第一个解决方案是更好的解决方案,使用sdcard中的文件并将参考路径存储在sqlite数据库中,这样可以提高性能,同时您的数据库仍然很轻.