SuperAPI AI 工具集

performance-optimization

通用与其它

查看项目

更新于 10-15 20:34

技能介绍

用途:该技能聚焦 Rails 8 应用的性能优化,帮助识别并修复 N+1 查询、慢查询和内存问题,适用于优化查询、修复 N+1、检查索引与批量处理等场景。

主要能力:

  1. N+1 检测与预防:使用 bullet 与 rack-mini-profiler 在开发/测试环境检测 N+1。
  2. 预加载:includes、preload、eager_load、joins 的选用;支持单关联、多关联、嵌套与深层嵌套。
  3. 查询优化模式:作用域预加载、counter_cache 计数器缓存、select/pluck 只取所需列、find_each/in_batches 批量处理、exists? 替代 any?/present?、size 替代 count/length。
  4. 数据库索引:为外键、WHERE、ORDER BY、JOIN 列及唯一约束建索引,支持单列、复合、唯一与部分索引。
  5. 性能测试:在测试中启用 Bullet 检测 N+1,用 ActiveSupport::Notifications 统计查询数并断言上限,检测缺失索引。
  6. 内存优化:用 pluck 流式取数、in_batches.update_all 直接 SQL 更新,避免实例化全部对象。

必要用法:在 Gemfile 的 development/test 组加入 gem "bullet" 与 gem "rack-mini-profiler";在 config/environments/development.rb 与 test.rb 中通过 config.after_initialize 配置 Bullet.enable 等选项,测试环境可设 Bullet.raise = true 使 N+1 导致测试失败。

适用场景:Rails 8 应用的查询优化、N+1 修复、索引补齐、批量任务与内存占用改善。

限制:资料未提供具体性能提升幅度、兼容版本范围、收费或价格信息,也未提供官方文档链接;实际效果需结合项目自行验证。