企業常用 PostgreSQL 版本推薦
1. PostgreSQL 14(最常見,穩定)
- 目前許多企業仍在使用 PostgreSQL 14,因為它在性能、并發處理、JSON 支持等方面做了較多優化,同時又非常穩定。
- 官方支持時間:
2026 年 11 月
之前提供更新和安全修復。 - 適用于:大多數企業生產環境。
2. PostgreSQL 15(新特性但較新)
- 提供更好的
MERGE
語句支持(類似 SQL Server 的UPSERT
),性能優化更強。 - 適用于愿意升級到較新版本,但又不想冒 PostgreSQL 16 可能存在的新版本風險的企業。
- 官方支持時間:
2027 年 11 月
。
3. PostgreSQL 13(部分老企業仍在使用)
- 仍然有許多老企業使用 PostgreSQL 13,因為它穩定,且比 12 版本有更好的 JSON 處理能力和查詢優化。
- 官方支持時間:
2025 年 11 月
。 - 適用于:已有 PostgreSQL 13 生產環境的企業,短期內不會升級。
4. PostgreSQL 16(最新,但企業少用)
- 2023 年 9 月發布,優化了查詢并行性、工作負載管理,但因為較新,企業采用率還不高。
- 適用于:希望使用最新特性的企業,但不適用于保守的生產環境。
企業推薦版本總結
版本 | 適用場景 | 官方支持時間 | 企業使用率 |
---|---|---|---|
PostgreSQL 14 | 最佳選擇,穩定,性能好 | 2026 年 11 月 | ????? |
PostgreSQL 15 | 適合需要新功能但不想冒險 | 2027 年 11 月 | ???? |
PostgreSQL 13 | 兼容性好,部分企業仍用 | 2025 年 11 月 | ??? |
PostgreSQL 16 | 最新,但企業采用較少 | 2028 年 11 月 | ?? |
企業中常用的 PostgreSQL 鏡像類型
在 docker pull
PostgreSQL 鏡像時,常見的選擇有:
postgres:latest
(最新穩定版)postgres:<版本號>
(指定版本,例如postgres:14
)postgres:<版本號>-alpine
(輕量級 Alpine 版本,例如postgres:14-alpine
)
1. Alpine 版(postgres:<版本>-alpine
)
Alpine 鏡像是什么?
-alpine
版本基于 Alpine Linux,它是一個極小的 Linux 發行版(基礎鏡像通常只有 5MB 左右)。例如:
docker pull postgres:14-alpine
與標準版 postgres:14
相比:
- 體積更小(Alpine 版本約
20MB
,標準版約200MB+
) - 啟動更快,但功能有所取舍
Alpine 版會缺少什么?
- 缺少 GNU 庫(glibc):Alpine 使用
musl
和busybox
,一些依賴glibc
的應用可能無法運行。 - 某些擴展不兼容:
- 一些 PostgreSQL 插件(如
postgis
)可能無法直接安裝,需要手動編譯。 - 可能缺少一些
libpq
相關的工具(可以通過apk add postgresql-client
安裝)。
- 一些 PostgreSQL 插件(如
- 性能略有下降:
- 由于 Alpine 采用
musl
而不是glibc
,某些高并發/高負載場景下的數據庫操作可能比標準版稍慢(但差距不大)。
- 由于 Alpine 采用
2. 企業環境應該選擇哪種鏡像?
鏡像版本 | 體積 | 適用場景 | 是否推薦企業使用 |
---|---|---|---|
postgres:latest | 大(約 200MB+) | 開發/測試/生產 | ? 推薦 |
postgres:14 | 大(約 200MB+) | 企業生產環境(穩定) | ? 強烈推薦 |
postgres:14-alpine | 小(約 20MB) | 輕量化部署,資源受限環境(如 IoT) | ?? 不推薦用于企業生產 |
postgres:14-slim | 適中(約 50MB) | 一般生產環境,無需擴展支持 | ? 可選 |
postgres:14-bullseye | 適中 | 需要 Debian 兼容環境 | ? 推薦(更兼容) |
企業生產環境建議使用 postgres:14
或 postgres:14-slim
,因為它們兼容性更好,功能完整。
3. 什么時候適合用 Alpine 版?
? 適用場景:
- 資源受限的 小型應用,如嵌入式設備、CI/CD 測試環境、Docker Swarm、Kubernetes 輕量化部署。
- 你確定你的應用 不依賴 PostgreSQL 擴展(如
postgis
)。 - 需要 極小的鏡像,減少帶寬和存儲占用。
? 不適用場景:
- 生產環境(特別是企業級數據庫,穩定性比大小更重要)。
- 需要 復雜插件支持,如
postgis
、plpython
等。 - 高負載 的 OLTP/OLAP 系統(可能因
musl
影響而性能略有下降)。
適用于學習場景的pgsql選用----ubuntu22.04
1. 拉取 postgres:15
鏡像
docker pull postgres:15
2. 運行 PostgreSQL 15(Slim 版)
docker run -d \--name my_postgres \-e POSTGRES_USER=root \-e POSTGRES_PASSWORD=123456 \-e POSTGRES_DB=db \-p 5432:5432 \-v pg_data:/var/lib/postgresql/data \postgres:15
- 連接方式:
docker exec -it my_postgres psql -U root -d db
-v pg_data:/var/lib/postgresql/data
參數理解
位置 | 作用 |
---|---|
pg_data | 宿主機上的 Docker 容器卷(實際存儲 PostgreSQL 數據)通常是/var/lib/docker/volumes/pg_data/ |
/var/lib/postgresql/data | 容器內部的數據庫存儲目錄 |
-v pg_data:/var/lib/postgresql/data | 將容器卷 pg_data 綁定到容器 /var/lib/postgresql/data ,實現數據持久化,確保在你docker因為某原因關了之后能在docker的卷里pg_data找到備份 |
- 一般在linux中,先用
docker volume inspect
找到容器卷的掛載點
docker volume inspect pg_data
輸出類似
[{"Name": "pg_data","Driver": "local","Mountpoint": "/var/lib/docker/volumes/pg_data/_data","Scope": "local"}
]
- Mountpoint 指向
/var/lib/docker/volumes/pg_data/_data
,這說明 真實的數據存放在宿主機的這個目錄中。
可以用ls查看是否有數據,
ls /var/lib/docker/volumes/pg_data/_data
https://github.com/0voice