PostgreSQL
PostgreSQL 是开源的对象关系型数据库管理系统。它以完整事务语义和可扩展类型系统为基础,同时支持复杂查询、JSONB、全文检索、空间数据、分区、并行执行以及物理和逻辑复制。
理解 PostgreSQL 的关键不是记忆 SQL 方言,而是掌握几个相互关联的机制:进程与共享内存如何协作,堆表如何保存多版本行,VACUUM 为什么不可缺少,WAL 如何保证恢复,以及不同索引访问方法如何匹配数据类型和操作符。
文档目录
| 文档 | 内容 |
|---|---|
| 产品特性 | 数据类型、事务、扩展体系和适用边界 |
| 体系结构与物理存储 | 数据库集群、进程、共享内存、PGDATA、页与 Relation Fork |
| MVCC 与 VACUUM | 行版本、快照、可见性、膨胀、冻结和自动清理 |
| WAL 与单机可靠性 | WAL、检查点、崩溃恢复、归档、基础备份和 PITR |
| 索引类型与结构 | B-tree、Hash、GiST、SP-GiST、GIN、BRIN 和索引设计 |
| 复制与高可用 | 物理复制、逻辑复制、同步级别、故障切换和能力边界 |
| 分区与扩展 | 声明式分区、分区裁剪、扩展、JSONB 与 PostGIS |
| 优化器与执行计划 | 统计信息、代价模型、扫描与连接方式、并行执行 |
| SQL 语法入门 | 以 MySQL 为参照的类型、增删改查、分页和 Upsert 差异 |
术语边界
| 术语 | 含义 |
|---|---|
| Instance | 正在运行的一组 PostgreSQL 服务进程及共享内存 |
| Database Cluster | 同一个实例管理、共享一个数据目录的一组数据库,不等于高可用集群 |
| Database | Cluster 内相互隔离的一个数据库,连接建立时必须选择 |
| Schema | 数据库内对象的命名空间 |
| Relation | 表、索引、物化视图等具有存储或关系语义的对象 |
| Extension | 以受管理方式安装的一组类型、函数、操作符、访问方法等对象 |
PostgreSQL 官方文档中的 database cluster 经常被误解为多节点集群。它首先是一个本地数据目录和其中多个数据库的集合;流复制、故障切换属于另一层部署架构。