Android开发学习笔记(3)

Android开发学习笔记(3)

终端存储

数据存储类型及方法

  • 用户数据分类
    • 文件
    • 键值对(可用于配置类)
    • 数据库

文件存储

  • 二进制方式直接存储
    • 整体处理,无需理解内部结构
    • 内容大,磁盘空间连续性好,写入读取性能更好
  • 大量文件时,文件命名、映射,组织目录

键值对

  • xml、json、protobuff皆跨平台
  • json适合网络数据交互
  • protobuff
    • proto描述文件
    • 编译->程序对象,利用程序对象进行序列化(serilize到二进制)和反序列化(parse从二进制获得程序对象)
    • 访问速度最快,存储空间最小

SQLite

  • 特点
    • 本地存储,基于单个文件
    • 支持事务
    • 支持加密
    • 跨平台
  • 索引
    • 查找性能提升
    • 插入时带来额外开销(相对而言极小)
    • 复合索引
  • 增加可扩展的字段
  • 跨表 解决扩展字段解决不了的需求

数据库

SQLite架构

  • 执行部分:基于字节码的虚拟机
  • 磁盘管理部分

SQLite数据文件组织架构

优化

  • 用定长数据做索引值可减少page的碎块
  • 考虑分表,将经常改变的数据单独设为一个表,避免其他数据的更新改变

表的存储

  • B树的高度直接影响访问速度

索引

  • 不用索引需进行全表扫描
  • 建索引,排序,二分查找
  • 索引数据以字节记尽量小,减小B树高度,高度越小,磁盘读取次数越少(尽量整数,用hash)
  • 每个索引都是一棵独立B树,插入操作时要更改所有B树,故应避免过多索引导致插入性能的下降。
  • 如果只查找关键少量数据,可单独为这几列数据建复合索引
  • 避免索引为另一个复合索引的前缀。

大数据情况下

  • 尽量把大数据的列(blob或text类型)在创建table时候顺序往后面位置放。

SQL语句性能监控


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值