微信 SQLite 数据库
损坏恢复实践johnwhe (何俊伟) ◊ 问题背景 ◊ 常规做法 ◊ 数据备份 ◊ Repair Kit ◊ 组合方案 SQLite 恢复 ◊ 微信聊天记录只存客户端 ◊ SQLCipher 加密数据库 问题背景 ◊ SQLite 概率性损坏 ◊ 1/20,000 ~ 1/10,000 ◊ 256MB ~1%,1GB ~1‰ ◊ 设备断电、kernel crash、空间不足 问题背景 主要考虑因素 ◊ 恢复成功率 ◊ 空间大小 ◊ 性能 ◊ 加密 数据备份 备选方案 方案 优点 缺点 文件复制 + 压缩 实现简单 非原子操作 Backup API 热备份 稍慢 .dump (SELECT 输出) 有选择备份 备选方案 测试: ~50MB,10W 条目,加密 DB .dump: 先压缩后加密 → 压缩率高 48 48 6.5 大小(MB) 3.2 2 3.2 92 恢复耗时(秒) 复制 + 压缩 Backup + 压缩 dump + 压缩 14 32 18 备份耗时(秒) ◊ 基于 dump + 压缩 ◊ 加密保存 ◊ 自定义二进制格式 ◊ 多线程流水线 ◊ 只备份不可恢复数据 ◊ 灭屏充电时备份 我们的方案 性能效果 100% 100% 254% 142% 备份速度(条/秒) 恢复速度(条/秒) 原始0 码力 | 31 页 | 546.35 KB | 1 年前3
共 1 条
- 1













