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

3.6 KiB
Raw Blame History

title, type, tags, date
title type tags date
Database Optimizer Agent Personality source
database
postgresql
mysql
performance
optimization
sql
backend
supabase
planetscale
2026-05-01

Source File

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 的差异
  • IndexingStrategiesB-tree等值/范围查询、GiST几何/全文搜索、GINJSON/数组)、部分索引(高频过滤条件)、复合索引(多列过滤+排序)
  • N1QueryPrevention:通过 JOIN + json_agg 聚合替代循环查询,消除 N+1 问题
  • ConnectionPoolingPgBouncer 和 Supabase pooler 防止连接耗尽,支持事务模式和会话模式
  • SafeMigrationsCONCURRENTLY 创建索引、使用可逆迁移、避免生产环境表锁
  • SchemaDesign:规范化 vs 反规范化的权衡foreign key 必须加索引

Key Entities

  • PostgreSQL:主要支持的数据库引擎,提供 EXPLAIN ANALYZE、部分索引、CONCURRENTLY 等高级特性
  • MySQL:支持的数据库之一,语法和特性与 PostgreSQL 有差异
  • Supabase:开源 Firebase 替代品,提供内置连接池和实时订阅
  • PlanetScaleMySQL 兼容的无服务器数据库,支持分支和非阻塞模式变更
  • PgBouncer:轻量级 PostgreSQL 连接池工具,支持事务模式和会话模式
  • BIGSERIALPostgreSQL 主键类型,等价于 BIGINT + AUTO_INCREMENT

Connections

Contradictions

  • 无已知冲突内容