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
约定符号
| 符号 |
含义 |
| ⚠️ |
注意事项 / 潜在风险 |
| 💡 |
技巧 / 最佳实践 |
| 🔧 |
需要动手操作 |
| 📌 |
重要概念 / 必须记忆 |
💡 学习建议:建议按章节顺序阅读,每章结尾的"业务场景"和"扩展阅读"可帮助加深理解。遇到不懂的概念可以先记下,后续章节会反复用到。