数据库使用优化及注意事项

数据库简介

后台数据库一般是MySQL 、Oracle 、SQL Server ,而Android 中的数据库是SQLite。今天要说的主要是SQLite在使用中的一些注意事项以及问题。
问题来源:公司有个项目,是用于石油炼化工厂巡检使用。就是录入所有巡检过程中的数据,上传至服务器,同时保存在本地。安卓中,本地数据库使用一般要么就是自己新建数据,继承Android自带的SQLiteHelper。第二种就是外面创建好数据库,然后写入到Android 应用数据库目录下 data/data/packagename/databases/yourdb下。这个写入过程就是文件的读写。资料很多,不详细说。

使用问题

用数据库的时候,以前也不是很注意游标cursor关闭这个问题。测试也很难测出问题。直达后面工人巡检的时候,说程序直接崩溃。分析跟踪之后,才发现当数据量很多,cursor生成很多,用完不关闭,导致内存泄漏,从而导致程序崩溃。所以切记,cursor用完必须关闭。以绝后患!
第二个问题就是多线程操作SQLite数据库,多线程操作数据库,一般就两个问题。1、数据库锁定;2、数据库关闭时机:语句执行完就关还是最后关闭。因为SQLite数据库的锁是精确到数据库表级别的。所以在多线程环境下,目前确实没有好的办法。尤其是对于写操作,是无法完成并发的。所以后面对于写操作,我的做法是建立一个全局的单线程池。所有的写操作,都是同步执行。数据库关闭时机我建议还是程序退出的时候关闭,不然那中间需要不断的开启数据库,关闭数据库。当然如果对数据库操作不频繁,还是用完即关。对于频繁操作的,就不要一直开关了。

提高数据库速度

事务

事务这个是真的6,用法也很简单,在数据库操作的地方只需三个操作databse.beginTransaction();开始事务,databse.setTransactionSuccessful();操作执行成功。database.endTransaction();事务结束。别小看这几行代码,我测试了下,100条数据的插入速度几乎就能提高20倍。所以非常建议只要有几十条数据的数据库操作,强烈建议使用事务。会给程序性能上带来很大的提升。这也是这次开发中遇到的问题,工厂人反应慢的问题。他们每次提交多的时候有上千条数据。用事务后,能明显缩减等待时间。不过实际使用的时候,我觉得可能是SQLite 的本身性能问题。一个表存2万多条数据的时候,数据库操作明显要慢一些。

索引

网上很多提升速度的方法都是说索引。所谓索引,就好比一笔本的目录。看目录,我们就能知道具体的内容的页码。数据库中使用索引,也能快速定位到要查询的内容位置。而不是条条遍历。索引的缺点也是很明显的,所有对内容的改动,都需要更新一次目录,而且需要占用一定的内存,不过几乎介可以忽略了。所以,索引主要在查询这块能提升速度。对于索引的使用以及索引的规则,可以看下菜鸟教程或者博客

总结

数据库使用虽然简单,可是还是需要注意一些细节问题。cursor需要用完就关等,速度方面,目前查找的也就只有添加索引以及事务。而且索引还不能随便使用。以上便是此次数据库使用过程中的小结。后续有使用数据库的问题,再续。感谢各位的肩膀。

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. android 使用html5作布局文件: webview跟javascript交互
  6. Android系统配置数据库注释(settings.db)
  7. Android(安卓)Resource介绍和使用
  8. "Failed to fetch URL https://dl-ssl.google.com/android/repos
  9. 使用NetBeans搭建Android开发环境

随机推荐

  1. Android(安卓)自定义组合控件
  2. 【Android自动化打包】03. APK的数字签名
  3. 一场关于Android的争论
  4. Android(安卓)开机启动应用
  5. Android调用WebService系列之封装能力
  6. adb通过TCP/IP来调试Android设备
  7. 2016这一年,回顾我们一起走过的"编码美丽"
  8. Unity导出android工程集成到android stud
  9. Android版本管理解决方法小议
  10. Android计时器正确应用方式解析