Skip to main content

缓存与性能优化

ChatBI 在多个层面提供缓存能力,以降低数据库压力并加速问答:

查询缓存

  • 应用层缓存:默认会将同一个问题的结果缓存数分钟,可在 config.jsoncache.ttl 中调整。
  • 分词结果缓存:大语言模型生成的语义解析结果亦可缓存,避免重复推理。

建议在频繁更新的数据集上降低 ttl 或在同步后调用刷新接口清理缓存。

指标缓存

对于复杂指标(如多表聚合、自定义 SQL),可以开启 cacheKey

{
"operator": "$sum",
"pred": "amount",
"cacheKey": "sales:sum",
"cacheTtl": 3600
}
  • cacheKey:缓存命名空间;同名指标会共用缓存。
  • cacheTtl:缓存有效期(秒)。

缓存刷新

  1. 通过管理后台的“系统维护 > 缓存管理”手动清理。
  2. 使用 REST API:POST /api/cache/purge,可按 schemacacheKey 精确清除。
  3. 在 ETL 任务完成后触发缓存刷新,确保用户看到最新结果。

监控与排查

  • 结合日志中的 cache.hit 指标判断命中率。
  • 当问题结果明显过旧时,检查是否存在长时间运行的同步任务或缓存未刷新。

更多运维建议,参见 故障排查