KeepassDX 中文文档 下载 App

打开数据库很慢 - 性能瓶颈优化

先量化慢不慢

先搞清楚"慢"是主观感受还是客观问题:

数据库大小正常打开时间(主密码解锁)
< 100 KB(< 50 条目)< 1 秒
100 KB - 500 KB(50-200 条目)1-3 秒
500 KB - 2 MB(200-500 条目)2-5 秒
2 MB+(500+ 条目 / 大附件)3-10 秒

打开时间主要由 Argon2d 密钥派生函数消耗——它故意设计得慢(安全),但可以在数据库设置里调整参数。

常见慢的原因

1. Argon2d 参数太高

数据库设置 → 加密设置 → 密钥派生函数:

修改后需要重新加密整个数据库(需要输入主密码),然后保存。

建议:

2. 附件太大

附件会被全部解密才能打开数据库。如果数据库里有大量附件(特别是图片或 PDF),每个附件在打开时都会被解密和处理。

优化方案:

3. 数据库文件位置

数据库文件存在不同位置的读写速度不同:

位置读写速度
手机内部存储(UFS)最快
高速 SD 卡(Class 10/U3)较快
低速 SD 卡(Class 4)较慢
USB OTG取决于 USB 版本
云存储挂载目录最慢(需要网络请求)

优化:数据库文件尽量存在手机内部存储,同步用 Syncthing 等工具在后台同步,不要直接从云存储挂载目录打开。

4. 保存时触发重新加密

KeePassDX 每次保存都会重新加密整个数据库(为了内存擦除)。如果数据库很大,保存也会慢。

保存频率取决于你的条目变更频率——每改几条就保存一次是好习惯,但可以稍作调整:

5. 设备硬件

低端 Android 设备(骁龙 4 系、联发科 Helio P 系)的 CPU 性能有限,Argon2d 这种计算密集型函数在这些设备上自然更慢。

优化:

存储访问框架延迟

KeePassDX 通过 Android 的 Storage Access Framework(SAF)读写数据库。某些文件管理器的 SAF 实现有额外延迟:

如果用云存储,先把数据库复制到本地内部存储打开,改完再同步回去——比直接从云挂载目录打开快得多。

快速优化清单

按效果从高到低排列:

  1. ✅ 把数据库移到手机内部存储(从云/SD 卡移出来测试)
  2. ✅ 降低 Argon2d 迭代次数到 5(安全性略微降低,速度翻倍)
  3. ✅ 清理大附件(>5 MB 的附件先移走再测试)
  4. ✅ 检查是否有多个数据库同时打开(虽然 KeePassDX 不支持多开,但某些同步工具可能干扰)
  5. ✅ 清除 KeePassDX 缓存(设置 → 应用管理 → 存储 → 清除缓存,不影响数据)