核心特点
1. 开源与社区驱动
BSD 许可证:自由使用、修改、商用,无 Oracle/MySQL 那样的版权争议
活跃的开源社区,持续迭代 30 多年(始于 1986 年加州大学伯克利分校)
2. 高度兼容 SQL 标准
对 SQL 标准的支持最全面之一
支持复杂查询、窗口函数、CTE(公用表表达式)、递归查询等现代 SQL 特性
3. 丰富的数据类型

4. 强大的扩展性
扩展(Extensions):无需修改内核即可增加功能
PostGIS:地理空间数据(GIS)支持
pg_stat_statements:SQL 性能分析
pg_trgm:模糊搜索、相似度匹配
TimescaleDB:时序数据库扩展
Citus:分布式 PostgreSQL
自定义函数/存储过程:支持 PL/pgSQL、PL/Python、PL/Perl、C 等多种语言
5. 高级特性

架构层次
PostgreSQL 服务器实例(Cluster)├── 数据库 myapp_prod ← 连接时必须指定一个│ ├── Schema public│ │ ├── 表 users│ │ └── 索引 idx_users_email│ ├── Schema analytics│ │ └── 视图 monthly_report│ └── 存储过程、触发器、自定义类型...│├── 数据库 myapp_test│ └── Schema public│└── 共享资源:配置文件、WAL 日志、后台进程
与 MySQL 的核心对比

适用场景

版本与生态
当前稳定版:17.x(每年发一个大版本,支持 5 年)
流行工具:
pgAdmin:官方图形化管理工具
psql:命令行客户端(功能极强大)
DBeaver/Navicat:通用数据库管理工具
ORM:SQLAlchemy(Python)、Hibernate(Java)、Prisma(Node.js)等都对 PG 支持最好
一句话总结
PostgreSQL 是一个"全能型"数据库:既能像 MySQL 一样做 OLTP 事务处理,又能像 Oracle 一样做复杂分析,还能像 MongoDB 一样处理 JSON 文档,同时保持开源免费。
docker.1ms.run/timescale/timescaledb-ha:pg16midir conf data init-scripts
version: '3.8'services:postgres:# 使用指定的镜像(国内加速镜像)image: docker.1ms.run/timescale/timescaledb-ha:pg16container_name: postgresqlrestart: always# 端口映射:宿主机端口:容器端口ports:- "5432:5432"# 环境变量environment:POSTGRES_PASSWORD: 123456 # 【必填】设置超级用户密码POSTGRES_USER: postgres # 可选,设置超级用名,默认为 postgresPOSTGRES_DB: postgres # 可选,默认创建同名数据库TZ: Asia/Shanghai # 设置容器时区# 挂载卷:数据持久化 + 自定义配置文件volumes:# 数据目录映射(将容器数据持久化到宿主机的 ./data 目录)- ./data:/var/lib/postgresql/data# 自定义配置文件挂载(只读),需要提前在宿主机准备 postgresql.conf- ./conf/postgresql.conf:/etc/postgresql/postgresql.conf:ro# 可选:初始化脚本目录(首次启动时自动执行 .sql/.sh 文件)- ./init-scripts:/docker-entrypoint-initdb.d:ro# 启动命令:指定使用自定义配置文件command: >postgres-c config_file=/etc/postgresql/postgresql.conf# 资源限制(CPU / 内存)deploy:resources:limits:cpus: '2' # 最多使用 2 个 CPU 核心memory: 4G # 最多使用 4GB 内存reservations:cpus: '1' # 预留 1 个 CPU 核心memory: 2G # 预留 2GB 内存# 可选:设置共享内存大小(PostgreSQL 推荐至少 64MB,默认 64MB)# shm_size: 256mb
docker compose up -d

夜雨聆风