【问题标题】:How does the getWritableDatabase() cache work?getWritableDatabase() 缓存如何工作?
【发布时间】:2014-10-06 11:15:21
【问题描述】:

我了解当调用 getWritableDatabase() 时,根据文档:

一旦打开成功,数据库就会被缓存,所以每次需要写入数据库时​​都可以调用该方法。 (确保在不再需要数据库时调用 close()。)权限错误或磁盘已满等错误可能会导致此方法失败,但如果问题得到解决,以后的尝试可能会成功。

  1. 回写到数据库的过程究竟是如何发生的?
  2. 是先写入缓存数据库,再写入实际数据库吗?
  3. 如果先写入缓存,缓存内容什么时候写回实际存储?

【问题讨论】:

  • 在您发布的文档中存储SQLiteDatabase 对象的实例以供将来使用不同于数据库磁盘 I/O 缓存。

标签: android sqlite caching


【解决方案1】:

这里所说的缓存不是数据缓存;它只是意味着SQLiteDatabase 对象被其他getWritableDatabase() 调用重用,只要它尚未关闭。 这样可以避免重新打开数据库文件。

将新数据写入磁盘由数据库在每个事务结束时自动处理。

【讨论】:

  • 所以这意味着我每次写入或读取时都会获取相同的数据库文件?那么这不会像访问文件的内部存储一样慢吗?
  • 还有其他缓存:数据库有页面缓存,操作系统有文件缓存。但这些与您的问题无关。
猜你喜欢
  • 2011-04-25
  • 2016-02-15
  • 1970-01-01
  • 2016-09-08
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
相关资源
最近更新 更多