1

我的应用程序中有一个要求,我必须时不时地对数据库执行插入和更新查询。现在,我的问题是应在应用程序中维护缓存,并在特定时间间隔后,或者可能在 20 个条目之后,将缓存提交到数据库中?

如果这是我应该维护缓存的场景。它应该在应用程序级别还是在服务中?

有可能说应用程序突然崩溃,因此缓存中的数据不再存在。

这可能是什么情况。

我在某处读到,每次打开和关闭数据库都是开销。注意:我的数据库位于 sdcard 中。

谢谢。

4

2 回答 2

1

I have a requirement in my application wherein I have to every now and then perform insert and update queries on the database. Now, my question is shall maintain cache within the application and after specific intervals or may be after say 20 entries, commit the cache into the database?

SQLite 中的插入操作相当快。确保您在 finally 块中关闭数据库以避免数据库处于打开状态。这可以阻止进一步的插入。尽可能使用批量插入,它们要快得多。看这里

If this is the scenario where shall I maintain the cache. Should it be on the application level or in the service?

服务也来自应用程序级别:)。有可能在服务中维护缓存并使服务存在于单独的进程中。看这里。

There is a possibility that say the application abruptly crashes and hence the data that is there in the cache no longer persists.

唯一保留的选择是,要么在其他进程中维护缓存(随时可能再次崩溃),要么将其维护在磁盘上,可能是内部存储。在内部存储上维护缓存与写入 sqlite 一样好或坏。

What can be the possible scenarios for this.

您实现缓存或不实现。

I have read somewhere that everytime opening and closing the database is an overhead. Note: my database resides in the sdcard.

AFAIK,打开一个 SQLite 相当于打开一个文件(虽然慢一点),而不是打开一个 Oracle 数据库。所以大多数时候打开数据库是负担得起的,但是批量插入以提高性能永远不会受到伤害;)

于 2013-10-31T05:49:45.093 回答
0

请记住,在 Android 中,您的应用程序可能随时被终止。因此,如果您想确保保存所有数据,则应在每次输入一些数据时将其存储到数据库中,而不是将其缓存。

访问数据库会产生开销,因此请确保不要在 UI 线程上更新数据库。如果操作正确,用户的性能不会下降。

于 2013-10-31T05:31:29.583 回答