AgentSkillsCN

postgresql-performance

优化PostgreSQL性能——EXPLAIN ANALYZE、索引、查询调优

SKILL.md
--- frontmatter
name: postgresql-performance
description: Optimize PostgreSQL performance - EXPLAIN ANALYZE, indexing, query tuning
version: "3.0.0"
sasmp_version: "1.3.0"
bonded_agent: 03-postgresql-performance
bond_type: PRIMARY_BOND
category: database
difficulty: advanced
estimated_time: 4h

PostgreSQL Performance Skill

Atomic skill for query optimization

Overview

Production-ready patterns for EXPLAIN analysis, index design, and configuration tuning.

Prerequisites

  • PostgreSQL 16+
  • pg_stat_statements extension

Parameters

yaml
parameters:
  operation:
    type: string
    required: true
    enum: [analyze_query, create_index, tune_config, diagnose]
  target_time_ms:
    type: integer
    default: 100

Quick Reference

EXPLAIN Commands

sql
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM users WHERE email = 'test@example.com';

Index Types

Use CaseTypeExample
EqualityB-treeCREATE INDEX idx ON t(col)
JSONBGINUSING GIN(data jsonb_path_ops)
Time-seriesBRINUSING BRIN(created_at)

Key Metrics

MetricHealthyWarning
Seq Scan rows< 10K> 100K
Buffer hit> 99%< 95%
Planning time< 10ms> 100ms

Diagnostic Queries

sql
-- Slow queries
SELECT query, mean_exec_time FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10;

-- Unused indexes
SELECT indexrelname, idx_scan FROM pg_stat_user_indexes WHERE idx_scan = 0;

-- Table bloat
SELECT tablename, n_dead_tup FROM pg_stat_user_tables WHERE n_dead_tup > 10000;

Troubleshooting

ProblemCauseSolution
Seq ScanMissing indexCreate index
High buffer readsCold cacheIncrease shared_buffers
Wrong estimatesStale statsRun ANALYZE

Usage

code
Skill("postgresql-performance")