通过 20 个引导式动手实验探索 PostgreSQL 进阶能力。你将从基础表操作扩展到关系设计、特殊数据类型、查询规划、事务、数据库可编程逻辑、管理维护、扩展、连接池与复制,并直接使用 SQL 和命令行工具完成操作。
每个实验都在小型本地环境中聚焦一个开发或运维主题。你会检查查询计划、创建 PL/pgSQL 函数与触发器、生成和恢复 SQL 备份、启用 PostGIS、通过 PgBouncer 压测连接,并搭建流复制副本。分步形式降低了复杂功能的学习门槛,同时保留其真实的生产权衡。
你将学到什么
- 使用外键建立关系,并比较内连接与不同外连接
- 查询 JSONB、数组、UUID、日期、时区、CTE、子查询与窗口函数
- 创建索引、使用
EXPLAIN检查计划、分区表,并通过 GIN 实现全文检索 - 管理事务、回滚、隔离级别、锁、视图与物化视图
- 开发存储函数、行触发器、事件触发器和 PL/pgSQL 异常处理
- 控制角色与权限,并执行备份、恢复、
VACUUM、ANALYZE和日志检查 - 启用 PostGIS,执行点、距离、缓冲区和相交查询
- 配置 PgBouncer 连接池,并搭建和验证 PostgreSQL 流复制
本课程适合谁
本课程适合掌握 PostgreSQL 基础、希望在引导下接触广泛进阶功能的 SQL 学习者、应用开发者和数据库管理员入门者。它适合建立实践认知,但这些紧凑实验不能替代生产数据库平台的设计与运营经验。
前置要求: 你应理解基本 SQL 语句、表、键和查询,并能使用 Linux 终端。建议具备 psql 经验,因为许多实验会组合 SQL、服务命令和配置修改。
学习环境: 每个实验提供 Ubuntu 22.04 VNC 桌面、本地 PostgreSQL 服务、终端,以及需要时安装的 PostGIS 或 PgBouncer。管理实验使用本地服务和 sudo,无需云数据库或外部账号。
常见问题
为什么“进阶”课程标为 Beginner?
20 个实验都标为 Beginner,是因为它们提供明确的分步说明;但所覆盖功能本身具有进阶广度,仍需要 SQL 与 PostgreSQL 基础。课程旨在介绍各领域,而不是达到生产级深度。
复制实验会使用多台服务器或实现高可用吗?
不会。实验在同一台 VM 上运行 5432 端口的主库和 5433 端口的只读流复制副本。你会练习 WAL 设置、pg_basebackup、启动、监控和数据传播,但不涉及多主机网络、自动故障切换或灾难恢复。
PostGIS 和 PgBouncer 需要外部基础设施吗?
不需要。二者都在本地安装和配置。空间查询使用小型城市表,PgBouncer 则通过本机 pgbench 与管理统计进行测试。
管理实验与真实生产运维有多接近?
实验在可丢弃的小型数据库上演示命令和概念,包括纯 SQL pg_dump 备份及手工修改配置。容量规划、安全加固、物理备份、时间点恢复、监控系统和生产变更流程不在课程范围内。


