Files
nexus/wiki/sources/engineering-database-optimizer.md
2026-05-03 05:42:12 +08:00

51 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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几何/全文搜索、GINJSON/数组)、部分索引(高频过滤条件)、复合索引(多列过滤+排序)
- [[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
- 无已知冲突内容