GUI 管理工具

TablePlus:最好看、最快的 GUI DB 客戶端。支援 PostgreSQL、MySQL、SQLite、Redis 等多種 DB,UI 現代,Tab 管理多個連線。付費但值得。Mac / Windows / Linux。

DBeaver:開源,免費版功能齊全,支援幾乎所有 DB(包含 NoSQL),有 ER diagram 生成功能。Community 版夠用,Enterprise 版有更多 NoSQL 支援。

pgAdmin:PostgreSQL 官方 GUI,功能全面,特別是 server 管理(query 執行計劃視覺化、pg_stat_activity 監控)。免費,有 web 版可以 Docker 部署。對純開發工作稍嫌笨重。

DataGrip(JetBrains):IDE 級別,有 code completion、refactoring、schema diff。訂閱制,適合把 DB 查詢當主要工作的角色(DBA、data engineer)。


Query 分析工具

EXPLAIN ANALYZE(PostgreSQL):最重要的工具,沒有之一。

-- 看執行計劃
EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) 
SELECT * FROM orders WHERE user_id = 123 AND status = 'pending';

關鍵指標:

  • Seq Scan vs Index Scan:前者表示全表掃描
  • cost=... 前面是估計成本,actual time=... 是實際耗時
  • rows=X 估計 vs rows=Y 實際——差距大表示統計不準,需要 ANALYZE
  • Buffers: hit=X miss=Y:cache miss 高說明記憶體不夠

explain.dalibo.com:把 EXPLAIN 的 JSON 輸出貼進去,視覺化顯示執行計劃樹。

pg_stat_statements:PostgreSQL extension,記錄所有 query 的執行統計(總執行次數、平均耗時、總 I/O)。

-- 找最慢的查詢
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Migration 工具

Flyway(Java / 多語言 CLI):基於 SQL 文件的 migration,用版本號命名(V1__Create_users.sql)。簡單、有效、支援大多數 DB。適合 Java 生態或想用純 SQL 的團隊。

Liquibase:更複雜但更靈活,支援 XML / YAML / JSON / SQL 格式,有 rollback 支援(Flyway 的 rollback 是 Pro 功能)。適合需要精細 rollback 控制的大型系統。

Prisma(TypeScript / Node.js):現代 ORM + migration 工具,schema 定義在 schema.prismaprisma migrate dev 生成 migration 文件。DX 好,類型安全,適合新的 TypeScript 後端。

Django migrations / ActiveRecord migrations / Alembic(Python):各語言框架的內建 migration 系統,生態內首選。

migration 的基本原則

  1. 所有 schema 變更都透過 migration 檔案管理,不手動在 production 執行 SQL
  2. migration 文件 commit 進 git,和 application code 一起 review
  3. 每個 migration 要有測試過的 rollback
  4. 大表的 schema 變更(加欄位、加索引)用 CONCURRENTLY 避免鎖表
-- 不鎖表加索引(PostgreSQL)
CREATE INDEX CONCURRENTLY idx_orders_user_id ON orders(user_id);

監控工具

pgBadger:分析 PostgreSQL 的 slow query log,生成 HTML 報告,顯示最慢的查詢、最頻繁的查詢、鎖等待。定期跑比實時監控更輕量。

Percona Toolkit(MySQL):一套 MySQL 診斷工具,包含 pt-query-digest(分析 slow log)、pt-online-schema-change(大表 schema 變更不鎖表)。

pg_activity:類似 top 但顯示 PostgreSQL 的實時 query 活動,適合 on-call 時快速診斷。

Grafana + Prometheus + postgres_exporter:把 PostgreSQL 的 metrics(connections、query latency、cache hit rate、vacuum status)導出到 Prometheus,在 Grafana 顯示 dashboard。這是生產環境的完整監控方案。


最小可行的工具清單

  • 日常開發:TablePlus 或 DBeaver(看資料)
  • Query 優化EXPLAIN ANALYZE + explain.dalibo.com(視覺化)
  • Schema 管理:框架內建 migration 工具(Django / Rails / Prisma)
  • 生產監控:pg_stat_statements + Grafana(長期趨勢)+ pgBadger(週期性報告)