--- title: "Database Optimizer Agent Personality" type: source tags: [database, postgresql, mysql, performance, optimization, sql, backend, supabase, planetscale] date: 2026-05-01 --- ## Source File - [[Agent/agency-agents/engineering/engineering-database-optimizer.md]] ## Summary(用中文描述) - 核心主题:Database Optimizer 是一个专注于数据库性能优化的 Agent 人格定义 - 问题域:Schema 设计、查询优化、索引策略、连接池管理、零停机迁移 - 方法/机制:使用 EXPLAIN ANALYZE 分析查询计划;采用 B-tree/GiST/GIN/部分索引策略;通过 CONCURRENTLY 创建索引避免表锁;使用连接池防止连接泄漏 - 结论/价值:提供可在生产环境直接使用的 SQL 模板和 TypeScript 代码示例,涵盖 PostgreSQL、MySQL、Supabase 和 PlanetScale ## Key Claims(用中文描述) - Database Optimizer 专注于 PostgreSQL 优化和高级特性,通过 EXPLAIN ANALYZE 解释查询计划来识别 Seq Scan(差)、Index Scan(好)、Bitmap Heap Scan(可接受) - Database Optimizer 采用多种索引策略(B-tree、GiST、GIN、部分索引、复合索引)针对不同查询模式进行性能优化 - Database Optimizer 通过使用 CONCURRENTLY 创建索引来确保生产环境零停机,避免表锁 - Database Optimizer 通过连接池化(PgBouncer、Supabase pooler)防止连接泄漏,支持事务模式和会话模式 - Database Optimizer 通过单次 JOIN 查询替代 N+1 循环查询来消除性能瓶颈,使用 json_agg 聚合嵌套数据 ## Key Quotes > "Build database architectures that perform well under load, scale gracefully, and never surprise you at 3am." — Database Optimizer 核心使命宣言 > "Every query has a plan, every foreign key has an index, every migration is reversible, and every slow query gets optimized." — Database Optimizer 核心原则 > "Use CONCURRENTLY for indexes — never lock tables in production." — 安全迁移规则 ## Key Concepts - [[QueryPlanAnalysis]]:使用 EXPLAIN ANALYZE 分析查询计划,识别 Seq Scan、Index Scan、Bitmap Heap Scan,理解 actual time vs planned time 的差异 - [[IndexingStrategies]]:B-tree(等值/范围查询)、GiST(几何/全文搜索)、GIN(JSON/数组)、部分索引(高频过滤条件)、复合索引(多列过滤+排序) - [[N1QueryPrevention]]:通过 JOIN + json_agg 聚合替代循环查询,消除 N+1 问题 - [[ConnectionPooling]]:PgBouncer 和 Supabase pooler 防止连接耗尽,支持事务模式和会话模式 - [[SafeMigrations]]:CONCURRENTLY 创建索引、使用可逆迁移、避免生产环境表锁 - [[SchemaDesign]]:规范化 vs 反规范化的权衡,foreign key 必须加索引 ## Key Entities - [[PostgreSQL]]:主要支持的数据库引擎,提供 EXPLAIN ANALYZE、部分索引、CONCURRENTLY 等高级特性 - [[MySQL]]:支持的数据库之一,语法和特性与 PostgreSQL 有差异 - [[Supabase]]:开源 Firebase 替代品,提供内置连接池和实时订阅 - [[PlanetScale]]:MySQL 兼容的无服务器数据库,支持分支和非阻塞模式变更 - [[PgBouncer]]:轻量级 PostgreSQL 连接池工具,支持事务模式和会话模式 - [[BIGSERIAL]]:PostgreSQL 主键类型,等价于 BIGINT + AUTO_INCREMENT ## Connections - [[engineering-backend-architect]] ← extends ← [[engineering-database-optimizer]](后端架构师依赖数据库优化专家的设计原则) - [[engineering-sre]] ← depends_on ← [[engineering-database-optimizer]](SRE 需要理解数据库性能调优) ## Contradictions - 无已知冲突内容