sqlite 基础
- 代码里面打开数据库3种方法: context获取;文件获取;sqliteopenhelper来打开
- 事务
sqliteDatabase.beginTransaction();
sqliteDatabase.insertOrThrow... //或者其他操作
sqliteDatabase.setTransactionSuccesful();
sqliteDatabase.endTransaction();
- 事务的属性
事务(Transaction)具有以下四个标准属性,通常根据首字母缩写为 ACID:
- 原子性(Atomicity):确保工作单位内的所有操作都成功完成,否则,事务会在出现故障时终
止,之前的操作也会回滚到以前的状态。 - 一致性(Consistency):确保数据库在成功提交的事务上正确地改变状态。
- 隔离性(Isolation):使事务操作相互独立和透明。
- 持久性(Durability):确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。
sqlite 优化
- 过滤最多的条件放前面
- 关联查询乘机最小的为最佳方案
- 尽量用代码来处理关联,而不是数据库里面关联
- 使用索引时注意,有些情况下索引不一定有效,要用索引查询语句查看。
- 批量增删改操作建议用事务,因为可以一次性i/o操作
- 不要在主线程使用数据库
- 字段多的表建议拆分表或者库
- 定期清理数据库中无用或可删除的数据
- sql安全问题,用文件加密比写入数据加密好
SQLCipher开源 - sqlite并发问题,用锁来处理
- 额外终极sqlite3加的:空了研究
开启WAL模式,pragma journal_mode=WAL;