我现在有一个数据库,里面的数据表主要是日志类的数据。为了解决性能问题,已经做了 读写分离,现在写入走主库,读取走从库。
目前正在基于这些数据做一个 Web 可视化系统,使用 FastAPI 开发后端接口。但遇到一个比较棘手的问题:
当需要读取全部数据的时候,无论怎么优化,响应时间始终没办法控制在 10 秒以内。
当前尝试的两种策略:
策略一:流式传输
接口使用 StreamingResponse
实现流式数据输出,前端边接收边渲染。效果上浏览器加载有所改善,但后端总响应时间依旧长,且前端展示也受到影响。
截图如下:
策略二:分页加载
分页是目前主推的方式,但用户在查看大量日志时仍然频繁触发查询,整体体验没法说“流畅”。此外,每一页数据的响应时间依然不够快,尤其在高并发或大量筛选条件下。