维护

数据库健康、应用日志、手动维护与 VACUUM——数据库的日常保养都在这一页。

NoteFast 是自维护的系统:日常运行不需要人工干预,但当你想确认「数据库现在什么状态」「刚才那次报错是怎么回事」,设置 → 维护是唯一的入口。这一页不修改数据——它只呈现事实。

数据库健康

展示四项核心指标:

指标含义
数据库大小notefast.db 文件体积
WAL 日志notefast.db-wal 体积(写放大观察窗口)
待清理 tombstone已删除块的总数,其中「可清理」(超期)/「保留期内」分开计数
blocks活跃块数量

健康数据来自上一次维护的快照,不是实时计算——保证打开页面零延迟,也不会因为统计查询阻塞使用。数据新鲜度由自动维护(见下)保证;需要立刻看当前值,点「刷新」。

应用日志

最近的应用级事件(维护结果、异常、AI 失败等)以环形日志展示——保留条数与时长有上限,不会无限增长。warn / error 条目会在顶部聚合计数。排查「为什么刚才 AI 回答失败」「上一轮维护清了多少」时看这里。

手动维护

「立即维护」触发一轮完整的维护:

  1. 物理清理超过保留期(30 天)的 tombstone 块及其修订历史
  2. 裁剪过期的 change feed 行
  3. 清理过期的向量代际
  4. WAL checkpoint(截断 WAL 文件)

执行耗时会在完成后显示;批间提交设计让大库清理时用户操作可以插队,不会锁死应用。

VACUUM

「清理磁盘空间」执行 SQLite 的 VACUUM:把删除留下的空页真正归还给文件系统,数据库文件体积会明显缩小(尤其是大量删除之后)。会短暂锁库(大库数秒),因此需要确认后执行。

自动维护

维护循环默认每 6 小时自动运行一轮,并带空闲感知:最近 10 分钟内有活跃请求时自动跳过本轮(跳过会记入日志),避免在你使用时抢锁。也就是说:

  • 一直放着不用 → 按周期维护
  • 一直在用 → 推迟到空闲时才跑,不停用、不干预

客户端错误

Web 端未捕获的异常与错误会匿名上报到本实例(client_errors 表),在维护页可以看到最近条目——自托管时这是发现「页面上有 JS 崩溃」的主要途径。