性能:比价和领券分位数改为 PostgreSQL 聚合 #161

Merged
guke merged 1 commits from codex/admin-record-percentile-aggregation into main 2026-07-23 10:35:42 +08:00
Member

背景

  • 比价记录页和领券记录页前端已经只拉当前页,并直接展示后端 summary。
  • 原后端仍会将筛选区间内的全部耗时值取回 Python 计算分位数,生产数据量增大后会放大数据库读取和应用内存开销。

修改内容

  • 比价记录:成功耗时 P5/P50/P95/P99、平均耗时以及中途退出耗时 P5/P50/P95 改用 PostgreSQL percentile_cont/AVG 聚合。
  • 领券记录:发起数、完成数、平均耗时和完成耗时 P5/P50/P95/P99 合并为一条 PostgreSQL 聚合查询。
  • 日期、用户、环境、状态、店铺和商品等筛选条件继续与列表共用,统计口径不变。
  • SQLite 不支持 percentile_cont,仅在本地和测试环境回退读取耗时单列;不加载完整业务记录。
  • API 字段与前端展示保持不变,无需前端改动。

验证

  • 比价/领券及关联广告收益、点位、按券统计测试:26 passed。
  • 本次涉及文件 ruff 检查通过。
  • PostgreSQL SQL 编译测试确认使用 ordered-set percentile_cont 聚合。
  • 全量测试:497 passed;8 个现有失败集中在邀请奖励、提现档位和代理转发等无关模块。
## 背景 - 比价记录页和领券记录页前端已经只拉当前页,并直接展示后端 summary。 - 原后端仍会将筛选区间内的全部耗时值取回 Python 计算分位数,生产数据量增大后会放大数据库读取和应用内存开销。 ## 修改内容 - 比价记录:成功耗时 P5/P50/P95/P99、平均耗时以及中途退出耗时 P5/P50/P95 改用 PostgreSQL percentile_cont/AVG 聚合。 - 领券记录:发起数、完成数、平均耗时和完成耗时 P5/P50/P95/P99 合并为一条 PostgreSQL 聚合查询。 - 日期、用户、环境、状态、店铺和商品等筛选条件继续与列表共用,统计口径不变。 - SQLite 不支持 percentile_cont,仅在本地和测试环境回退读取耗时单列;不加载完整业务记录。 - API 字段与前端展示保持不变,无需前端改动。 ## 验证 - 比价/领券及关联广告收益、点位、按券统计测试:26 passed。 - 本次涉及文件 ruff 检查通过。 - PostgreSQL SQL 编译测试确认使用 ordered-set percentile_cont 聚合。 - 全量测试:497 passed;8 个现有失败集中在邀请奖励、提现档位和代理转发等无关模块。
linkeyu added 1 commit 2026-07-22 19:37:58 +08:00
guke merged commit 77f772f47c into main 2026-07-23 10:35:42 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WonderableAI/shaguabijia-app-server#161