SQLite 打开和关闭数据库需要占用很多资源么?

2012-12-19 15:12:49 +08:00
 alexrezit
不知道该不该把 loadDatabase 和 closeDatabase 封装进单个方法里面.
如果打开和关闭数据库需要占用很多资源的话, 当需要连续调用方法的时候重复地打开和关闭效率会很低.
但如果不封装的话, 每次操作前后都要 loadDatabase 和 closeDatabase, 很麻烦.
4531 次点击
所在节点    编程
6 条回复
alexrezit
2012-12-20 12:18:25 +08:00
是我问错了地方吗?
ipoh
2012-12-20 12:52:19 +08:00
终于看明白了
最好封装,SQLite连接数据库最多只是磁盘IO,比网络连接省时多了。况且OS还有缓存机制,第二次打开数据库很有可能不会访问磁盘了。我不了解SQLite,只是猜测。
http://developer.appcelerator.com/question/130874/sqlite-performance-to-close-or-not-to-close-
clino
2012-12-20 14:33:43 +08:00
连续的批量操作最好用事务,否则频繁打开关闭肯定会影响效率

如果很讲究效率,数据库又不是非常大,可以考虑使用内存数据库,当然内存数据库可以定期保存到文件里,对内存数据库的操作在打开关闭上的开销应该就小很多了
alexrezit
2012-12-20 17:45:02 +08:00
@ipoh
@clino

谢谢!

@ipoh
这个和网络连接比起来当然是省时啦~ 主要是想达到最高效率嘛, 所以来问问~

@clino
不敢放内存里, 不然 iPod touch 这样小内存的得卡死了~
我现在还是没有把打开和关闭封进去, 不过好在写了一个单独的 shared instance 管理所有数据库 / plist / 本地文件 / 网络文件操作.
zhc
2012-12-20 17:58:29 +08:00
你可以写个循环什么的用profile测试下开销,如果开销很低那就都封装到方法里随用随掉,代码也美观易读,我之前没测试过但都进行封装了.
Veelian
2012-12-20 21:44:59 +08:00
SQLite就是个文件数据库,单机上又极少多线程操作它,做成池就比较傻,所以一般是写成单例就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/55301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX