PostgreSQL安装
·
安装、架构、命令与优化
一、PostgreSQL 是什么
1.1 核心定位
PostgreSQL(简称 PG)是全球最强大的开源对象关系型数据库(ORDBMS),源自伯克利,血统纯正,完全开源、协议宽松、无版权风险。
- 全能型数据库:支持关系型数据、JSON、数组、枚举、GIS、向量(PGVector),一套库搞定业务 + AI+GIS
- 标准合规:高度兼容 SQL 标准,支持窗口函数、CTE、复杂子查询
- 高并发可靠:MVCC 多版本并发,ACID 强事务,适合高并发 OLTP
- 生态爆炸:PostGIS、TimescaleDB、PGVector、Citus 等扩展,覆盖物联网、时序、AI 向量
- 社区与就业:国内大厂、云厂商、金融、政企全面拥抱 PG,岗位需求暴涨
1.3 典型应用场景
- 企业级系统:ERP、CRM、OA
- Web 高并发:电商、社交、SaaS
- 数据分析:数仓、BI、离线计算
- GIS 地理信息:地图、物流、LBS 服务
- 物联网 / 时序:IoT 设备采集、监控数据
- AI 向量检索:大模型特征存储、语义检索
二、PostgreSQL 安装(OpenEuler :源码编译 + DNF 两种方式)
本文以 OpenEuler 24 + PostgreSQL 16.3 为例,提供两种生产常用安装方式,你可根据场景选择。
方式一:源码编译安装
适合需要自定义路径、开启特殊编译参数、控制版本的场景。
1. 安装依赖
bash
运行
yum -y install gcc gcc-* make libicu libicu-devel readline-devel zlib zlib-devel
2. 下载、解压、编译
bash
运行
# 解压源码
tar zxvf postgresql-16.3.tar.gz
cd postgresql-16.3
# 配置安装路径
./configure --prefix=/usr/local/pgsql
# 编译 + 安装
make && make install
3. 创建用户与数据目录
bash
运行
# 创建专用用户(禁止 root 运行 PG)
adduser postgres
# 创建数据目录
mkdir -p /usr/local/pgsql/data
chown postgres:postgres /usr/local/pgsql/data
4. 配置环境变量
bash
运行
cat >> /etc/profile << 'EOF'
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
export PATH=/usr/local/pgsql/bin:$PATH
EOF
source /etc/profile
5. 初始化数据库集群
bash
运行
su - postgres
initdb -D /usr/local/pgsql/data
6. 启动、连接
bash
运行
# 启动
pg_ctl -D /usr/local/pgsql/data -l logfile start
# 连接
psql
方式二:DNF 一键安装
适合快速搭建、不想折腾编译的场景。
bash
运行
# 安装
dnf install -y postgresql-server
# 初始化
postgresql-setup --initdb
# 切换用户登录
su - postgres
psql
✅ 补充
- 修改默认密码
sql
ALTER USER postgres PASSWORD '你的强密码';
- 允许远程连接
- 修改
postgresql.conf
ini
listen_addresses = '*'
port = 5432
- 修改
pg_hba.conf
ini
host all all 0.0.0.0/0 md5
- 设置开机自启(systemd)
bash
运行
# 编译安装需手动写 service,DNF 安装自动注册
systemctl enable postgresql
systemctl start postgresql
三、PostgreSQL 核心架构:逻辑 + 物理
3.1 逻辑架构(从上到下)
plaintext
数据库集簇(Cluster)
└── 多个数据库(Database)
└── 多个模式(Schema)
└── 表、视图、索引、函数、序列等对象
- 集簇:一个 PG 实例管理的所有数据库总称
- 数据库:逻辑隔离单元,不同库之间无法直接跨库查询
- Schema:库内对象隔离,解决同名表冲突,多用户共用库必备
- 对象:表、索引、视图、触发器、函数等
重点:PG 一个实例下多库,库下多 Schema;MySQL 是一个实例下多库,无 Schema 强隔离。
3.2 物理架构(文件到底存在哪)
PG 所有数据都在 $PGDATA 目录,核心目录作用:
| 目录 / 文件 | 作用 |
|---|---|
| base/ | 各数据库真实数据文件(表、索引) |
| global/ | 全局系统表(用户、数据库信息) |
| pg_wal/ | WAL 预写日志(崩溃恢复、主从复制) |
| pg_hba.conf | 客户端访问认证(白名单、密码方式) |
| postgresql.conf | 核心配置(内存、连接、性能) |
| PG_VERSION | PG 主版本号 |
3.3 表空间关系
- Oracle:表空间 ↔ 数据库 一对多
- PG:表空间 ↔ 数据库 多对多
pg_default:默认表空间,用户表默认存放pg_global:系统共享表空间
四、PostgreSQL 最常用命令
4.1 连接命令
bash
运行
# 本地连接
psql -U postgres -d postgres
# 远程连接
psql -h 192.168.x.x -p 5432 -U postgres -d postgres
4.2 psql 元命令
sql
# 查看库
\l
# 切换库
\c dbname
# 查看表
\dt
# 查看表结构
\d tablename
# 查看用户
\du
# 退出
\q
4.3 DDL 基础实战
sql
-- 创建数据库
CREATE DATABASE mydb;
-- 创建 Schema
CREATE SCHEMA user_schema;
-- 创建表(含主键、唯一、非空、默认时间)
CREATE TABLE user_schema.users (
id SERIAL PRIMARY KEY,
username VARCHAR(32) NOT NULL UNIQUE,
email VARCHAR(64) NOT NULL UNIQUE,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入、查询、更新、删除
INSERT INTO user_schema.users (username, email) VALUES ('zhangsan', 'zhangsan@qq.com');
SELECT * FROM user_schema.users;
五、文档外补充:安全、配置、监控、优化
5.1 安全最佳实践
- 禁止
postgres超级用户直连业务 - 业务使用最小权限用户
- 密码复杂度 + 定期更换
pg_hba.conf只放信任 IP,不开放 0.0.0.0/0- 开启 SSL 远程连接
5.2 核心配置优化(8G 内存机器参考)
ini
# 连接
max_connections = 500
listen_addresses = '*'
# 内存
shared_buffers = 2GB # 建议 物理内存 25%
work_mem = 16MB # 单会话排序/哈希内存
maintenance_work_mem = 512MB # 维护操作(VACUUM、CREATE INDEX)
effective_cache_size = 6GB # 优化器可用缓存
# WAL
wal_level = replica
max_wal_size = 8GB
min_wal_size = 1GB
# 并行查询(PG16 增强)
max_parallel_workers = 8
max_parallel_workers_per_gather = 4
5.3 日常监控 SQL
sql
-- 查看当前连接
SELECT pid,usename,datname,client_addr,state FROM pg_stat_activity;
-- 杀死异常连接
SELECT pg_terminate_backend(pid);
-- 查看表大小
SELECT pg_size_pretty(pg_total_relation_size('tablename'));
5.4 PostgreSQL 16 新特性
- 并行能力增强:并行 FULL/RIGHT JOIN、并行聚合
- COPY 性能提升 3 倍 +
- SQL:2023 支持:ANY_VALUE、数字下划线分隔
- EXPLAIN GENERIC_PLAN:通用执行计划,适合参数化查询
- 索引 INCLUDE:覆盖索引,避免回表
六、常见问题与避坑
- 无法远程连接
- 检查
listen_addresses、pg_hba.conf、防火墙端口 5432
- 检查
- 中文乱码
- 初始化时指定
UTF8编码
- 初始化时指定
- 性能差
- 缺少索引、
work_mem太小、未做 VACUUM
- 缺少索引、
- 不能用 root 启动
- PG 强制要求专用用户,提升安全性
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)