电商数据库性能体检
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_8d36cde0/guoyiyi-v090-supabase-postgres-best-practices。
技能介绍
当订单表膨胀到千万级,查询为何开始变慢?
电商大促后,订单表可能堆积数千万行数据,原本毫秒级响应的查询突然超时。常见诱因包括:索引缺失或冗余导致全表扫描;长事务未提交引发锁竞争;连接池耗尽使新请求排队。此时,单纯扩容硬件无法根治问题,需要系统化的数据库性能体检。
技能如何拆解性能体检
该技能围绕 PostgreSQL + Supabase 的电商场景,提供可操作的检查路径:
- 诊断核心链路:聚焦订单、库存、支付等高频表,使用
EXPLAIN ANALYZE分析查询计划,识别是否触发Seq Scan而非Index Scan - 索引有效性验证:检查现有索引是否被实际使用,冗余索引是否拖累写入性能
- 事务与锁分析:通过
pg_stat_activity监控长事务,排查FOR UPDATE锁导致的阻塞 - 配置调优建议:针对
shared_buffers、work_mem等参数给出基于数据量的调整方案
适用边界与注意事项
- 版本兼容性:仅适用于 PostgreSQL 12+ 和 Supabase 2.x 及以上版本
- 数据量参考:更适合千万级以下的中小型电商库,亿级数据需配合分库分表策略
- 非替代监控:需与 Prometheus、Grafana 等监控工具配合,技能侧重于主动诊断而非实时告警
- 安全边界:体检过程会读取系统表,生产环境建议在只读副本执行
使用场景
- 大促前订单表查询大面积超时,需要用 EXPLAIN ANALYZE 逐条定位慢查询根因
- 新增多个索引后写入性能明显下降,需要甄别哪些索引冗余、可以安全删除
- 业务高峰连接池频繁耗尽,需排查是否有长事务未提交导致锁阻塞新请求
- Supabase 实例数据量逼近千万行,需评估 shared_buffers、work_mem 等参数是否匹配当前规模
适合人员
- 负责电商数据库运维的工程师,大促前需要快速定位慢查询与锁竞争
- 使用 Supabase 自建电商后端的独立开发者,数据库规模扩大后需要调优配置
- 管理 PostgreSQL 订单库的后端工程师,写入变慢时需要甄别冗余索引
- 排查线上数据库故障的开发负责人,需要按系统表数据判断事务与连接问题