SuperAPI AI 工具集

database-optimizer

数据与分析

查看项目

更新于 10-16 00:03

技能介绍

用途:帮助 Rails 开发者诊断并优化 PostgreSQL/SQLite 慢查询,覆盖 EXPLAIN ANALYZE 分析、缺失索引、查询重写与 ActiveRecord 调整。

主要能力:先用 EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) 测量,关注 Seq Scan 与 Index Scan、估算行数与实际行数、Buffers shared hit 与 read 等指标;也可用 Ruby 侧 User.where(active: true).includes(:orders).explain(:analyze) 获取执行计划。索引设计涵盖复合索引(列顺序重要)、PostgreSQL 部分索引、表达式索引、覆盖索引(include)、GIN(JSONB/数组)、GiST(范围/几何/排他约束)、BRIN(大型相关表,如 add_index :events, :created_at, using: :brin)。查询提示需谨慎,示例 SET LOCAL enable_seqscan = off; RESET enable_seqscan;。ActiveRecord 提供 includes、preload、eager_load、strict_loading、find_each、in_batches、pluck 等用法。

使用方式:按工作流识别慢查询(日志或 pg_stat_statements)、EXPLAIN ANALYZE、检查索引使用(缺失、未用、膨胀)、对比估算与实际行数(统计过期需 ANALYZE)、标记大表顺序扫描、检查缓冲区 I/O、给出具体修复及预期影响,并在类生产数据量的预发环境验证。输出 schema 含 analysis(query、current_time_ms、bottleneck)与 recommendations(title、impact、implementation、expected_time_ms)。

适用场景与限制:面向 Rails 应用的 PostgreSQL/SQLite 调优。BRIN 适合只追加且超过千万行的表,比 B-tree 小约百倍但精度较低;频繁需要提示通常意味着统计过期或缺少索引。