用途:面向 Rails 代码库的 PostgreSQL 性能分析,基于《High Performance PostgreSQL for Rails》实践给出可执行的优化建议。
主要能力:提供三个分析脚本,需在 Rails 应用根目录运行。
- N+1 查询分析:ruby scripts/analyze_n_plus_one.rb,检查控制器中未预加载的查询、视图中的关联访问模式,以及缺失的 includes、preload、eager_load。
- 索引分析:ruby scripts/analyze_indexes.rb,识别无索引外键、可用部分索引的布尔列、WHERE 常用列、缺失的复合索引。
- 配置分析:ruby scripts/analyze_config.rb,审查 database.yml 的连接池大小、超时(statement_timeout、lock_timeout)、预编译语句、SSL/TLS、连接回收及推荐扩展。
使用方式:先明确分析目标(整体审计、慢查询、N+1、配置或 schema),再运行相应脚本;输出按 WARNING(高优先级)与 INFO(优化机会)分级。随后给出按优先级排序的建议:关键问题(外键索引、热点路径 N+1、缺失超时)、高影响优化(部分索引、计数器缓存、预加载)、预防性最佳实践。对索引与 schema 建议可生成迁移代码,生产迁移使用 algorithm: :concurrently 避免锁表。需要深入时可参考 references/performance_guide.md 与 references/anti_patterns.md。
适用场景:Rails 应用的数据库性能审计、上线前检查、慢查询与索引优化。
限制:脚本为静态分析,可能产生误报或漏报运行时问题;建议在预发环境验证修复,并用 EXPLAIN ANALYZE 确认。可配合 PgHero、pg_stat_statements、Bullet gem 与 Rails 查询日志做持续监控。