feat(status): 启用 pg_stat_statements,运行状态页显示最慢 / 最频繁语句与各表死元组;PG 调低 random_page_cost

- docker-compose.yml 的 postgres 加 shared_preload_libraries=pg_stat_statements、pg_stat_statements.track=top;
  要重建 postgres 容器才生效(docs/runbook/storage.md)
- GET /system/storage 的 db.statements:平均最慢(调用 ≥ 10 次)与调用最多各 5 条;没装扩展 / 没预加载时
  enabled=false 并说明原因
- 运行状态页「存储」:体积最大的表加死元组列,新增「数据库语句统计」
- random_page_cost 4 → 1.1(PG_RANDOM_PAGE_COST):库整个在内存里,缺省值高估随机读

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-06 20:24:34 +08:00
1 parent 8c8b252667
commit 63bbcf3cdb
5 files changed
+163 -1

No files matched your search

+8
View File
@@ -33,6 +33,14 @@ services:
- maintenance_work_mem=${PG_MAINTENANCE_WORK_MEM:-256MB}
- -c
- max_wal_size=${PG_MAX_WAL_SIZE:-2GB}
# 库(约 200 MB)整个在 shared_buffers / 页缓存里,随机读不比顺序读贵多少;缺省 4 是机械盘的估值
- -c
- random_page_cost=${PG_RANDOM_PAGE_COST:-1.1}
# 语句统计(运行状态页「数据库语句统计」);改了要重建 postgres 容器才生效,见 docs/runbook/storage.md
- -c
- shared_preload_libraries=pg_stat_statements
- -c
- pg_stat_statements.track=top
mem_limit: ${PG_MEM_LIMIT:-3g}
deploy:
resources: