PostgreSQL 完全指南
PostgreSQL 完全指南
“The world’s most advanced open source database.”
PostgreSQL(简称 PG)是一款拥有超过 35 年历史的对象-关系型数据库管理系统,以其可靠性(Reliability)、**功能丰富性(Feature Robustness)和性能(Performance)**闻名于世。本教程从基础到高级,系统性地覆盖 PostgreSQL 的方方面面,适合初学者入门,也适合有经验的 DBA 进阶。
教程结构
本教程共 23 章,按照由浅入深的顺序编排:
第一部分:入门基础
| 章节 | 标题 | 核心内容 |
|---|
| 01 | 简介 | PG 历史、特性优势、适用场景、与 MySQL 对比 |
| 02 | 安装部署 | 各平台安装、Docker 快速启动、初始化配置 |
| 03 | 架构原理 | 进程模型、MVCC、WAL、Shared Buffers |
| 04 | SQL 基础 | DDL、DML、DQL、数据类型 |
第二部分:核心能力
| 章节 | 标题 | 核心内容 |
|---|
| 05 | SQL 进阶 | CTE、窗口函数、LATERAL、JSON/JSONB |
| 06 | 数据类型详解 | SERIAL vs IDENTITY、数组、Range、自定义类型 |
| 07 | 索引详解 | B-Tree、Hash、GiST、GIN、BRIN、部分索引 |
| 08 | 查询优化 | EXPLAIN ANALYZE、统计信息、并行查询 |
| 09 | 表设计 | 范式、继承、分区表、表空间 |
| 10 | 事务与锁 | ACID、隔离级别、MVCC、SSI、死锁处理 |
第三部分:高级特性
| 章节 | 标题 | 核心内容 |
|---|
| 11 | 函数与过程 | PL/pgSQL、触发器、事件触发器 |
| 12 | 复制机制 | 流复制、逻辑复制、发布订阅 |
| 13 | 备份恢复 | pg_dump、pg_basebackup、WAL 归档、PITR |
| 14 | 安全加固 | 权限系统、RLS、加密、审计、SQL 注入防护 |
| 15 | 监控诊断 | pg_stat、pg_stat_statements、Prometheus |
| 16 | 高可用架构 | Patroni、pgpool-II、PgBouncer、读写分离 |
| 17 | 扩展生态 | PostGIS、pg_trgm、pgcrypto、FDW |
第四部分:工程实践
| 章节 | 标题 | 核心内容 |
|---|
| 18 | 容器化部署 | Docker、Docker Compose、K8s StatefulSet |
| 19 | 数据迁移 | 版本升级、Oracle→PG、pgloader |
| 20 | 性能测试 | pgbench、压测方法论、连接池对比 |
| 21 | 排错指南 | 常见错误、连接问题、锁、WAL 堆积 |
| 22 | 最佳实践 | 连接池、SQL 规范、VACUUM 策略 |
| 23 | 实战场景 | 时序数据、地理数据、全文搜索、多租户 |
环境要求
在开始之前,请确保你的开发环境满足以下条件:
| 软件 | 最低版本 | 推荐版本 |
|---|
| PostgreSQL | 14 | 17 |
| Docker | 20.10 | 26.x |
| 操作系统 | Ubuntu 20.04 / CentOS 7 | Ubuntu 22.04 / Debian 12 |
速查:常用命令
-- 启动 / 停止
pg_ctlcluster 17 main start
pg_ctlcluster 17 main stop
-- 连接数据库
psql -U postgres -d mydb
-- 查看版本
SELECT version();
-- 列出所有数据库
\l
-- 切换数据库
\c mydb
-- 列出当前库所有表
\dt
-- 查看表结构
\d+ tablename
约定符号
| 符号 | 含义 |
|---|
| ⚠️ | 注意事项 / 潜在风险 |
| 💡 | 技巧 / 最佳实践 |
| 🔧 | 需要动手操作 |
| 📌 | 重要概念 / 必须记忆 |
💡 学习建议:建议按章节顺序阅读,每章结尾的"业务场景"和"扩展阅读"可帮助加深理解。遇到不懂的概念可以先记下,后续章节会反复用到。