SuperAPI AI 工具集

database-optimizer

数据与分析

查看项目

更新于 10-15 09:03

技能介绍

用途

Database Optimizer 是一个数据库性能优化技能,面向 PostgreSQL 和 MySQL 系统,用于优化数据库查询并提升性能。它定位为资深数据库优化角色,覆盖性能调优、查询优化和多数据库系统的可扩展性。

主要能力

该技能覆盖以下方向:

  • 分析慢查询与执行计划
  • 设计最优索引策略
  • 调优数据库配置参数
  • 优化模式设计与分区
  • 减少锁竞争与死锁
  • 提升缓存命中率与内存使用效率

技能内置按上下文加载的参考指南,包括:查询优化(references/query-optimization.md,用于分析慢查询、执行计划)、索引策略(references/index-strategies.md,用于设计索引、覆盖索引)、PostgreSQL 调优(references/postgresql-tuning.md)、MySQL 调优(references/mysql-tuning.md)、监控与分析(references/monitoring-analysis.md,用于性能指标与诊断)。

使用方式

技能定义了核心工作流:

  1. 分析性能——在任何变更前采集基线指标并运行 EXPLAIN ANALYZE。
  2. 识别瓶颈——找出低效查询、缺失索引、配置问题。
  3. 设计方案——制定索引策略、查询重写、模式改进。
  4. 实施变更——增量应用优化并监控;在进入下一步前验证每一项变更。
  5. 验证结果——重新运行 EXPLAIN ANALYZE,对比成本,测量实际耗时改进,记录变更。

技能提供了常用操作示例,包括:

  • 识别最慢查询(PostgreSQL,依赖 pg_stat_statements 扩展),按 mean_exec_time 排序取前 20 条。
  • 捕获执行计划,使用 EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) 以暴露缓存命中与磁盘读取比例。
  • 解读 EXPLAIN 输出的关键模式,例如大表上的 Seq Scan、外层集合较大的 Nested Loop、估算行数与实际行数差异过大(统计信息过期)、缓冲区命中率低、排序溢出到磁盘等,并给出对应的典型补救措施。
  • 创建覆盖索引,使用 CREATE INDEX CONCURRENTLY 并配合 INCLUDE 覆盖过滤列与投影列,消除堆表回表。
  • 验证改进,对比优化前后的执行时间与成本,并通过 pg_stat_user_indexes 确认索引确实被使用。
  • MySQL 侧查找慢查询,查询 performance_schema.events_statements_summary_by_digest,并使用 EXPLAIN FORMAT=JSON 获取执行计划。

适用场景

适用于调查慢查询、分析执行计划、设计索引、调优数据库配置、优化模式与分区、降低锁竞争与死锁、提升缓存命中率与内存使用等数据库性能相关工作。

限制与约束

技能明确列出必须做与禁止做的约束。

必须做:

  • 优化前捕获 EXPLAIN (ANALYZE, BUFFERS) 输出作为基线。
  • 每次变更前后都要测量性能。
  • 在 PostgreSQL 中使用 CONCURRENTLY 创建索引以避免表锁。
  • 在非生产环境测试;若写入性能或复制延迟恶化则回滚。
  • 用前后指标记录所有优化决策。
  • 批量数据变更后运行 ANALYZE 刷新统计信息。

禁止做:

  • 在没有测量基线的情况下应用优化。
  • 创建冗余或未使用的索引。
  • 同时进行多项变更(无法归因影响)。
  • 忽视新索引带来的写入放大。
  • 忽略 VACUUM / 统计信息维护。

此外,技能要求在任何变更前先在非生产环境测试,若写入性能下降或复制延迟增加应立即回退。输出模板要求提供:带基线指标的性能分析、识别出的瓶颈与根因(附 EXPLAIN 证据)、含具体变更的优化策略、实施用 SQL / 配置变更、用于衡量改进的验证查询、监控建议以及文档记录。

关于该技能的收费、价格、平台支持范围等具体信息,资料中暂未提供。