51 lines
3.6 KiB
Markdown
51 lines
3.6 KiB
Markdown
---
|
||
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
|
||
- 无已知冲突内容
|