目录
一、PostgreSQL 核心概述
(一)定义与定位
(二)核心特性与优势
(三)应用场景
二、PostgreSQL 安装实战(基于 OpenEuler 24)
(一)编译安装(以 16.3 版本为例)
1. 环境准备
2. 下载与解压源码
3. 配置编译参数
4. 编译与安装
5. 创建用户与数据目录
6. 配置环境变量
7. 初始化数据库集群
8. 启动与停止服务
9. 登录数据库
(二)DNF 安装(快速部署 15.12 版本)
三、PostgreSQL 逻辑与物理架构解析
(一)逻辑架构
1. 层级结构
2. 核心概念
3. 对象标识符(OID)
(二)物理架构
1. 目录结构
2. 关键文件解析
四、PostgreSQL 核心功能与操作
(一)用户与权限管理
1. 创建用户与角色
2. 权限控制
3. 角色继承
(二)数据类型与表操作
1. 常用数据类型
2. 创建表
3. 索引优化
(三)事务与并发控制
1. 显式事务控制
2. 保存点(Savepoint)
3. 事务隔离级别
五、PostgreSQL 高级特性与扩展
(一)分区表(Partitioning)
1. 范围分区(按时间范围分区)
2. 列表分区(按地区列表分区)
3. 哈希分区(按用户 ID 哈希分区)
(二)扩展应用(Extensions)
1. PostGIS(地理信息处理)
2. TimescaleDB(时间序列数据)
3. Citus(分布式查询)
(三)备份与恢复
1. 逻辑备份(pg_dump)
2. 物理备份(pg_basebackup)
3. 恢复备份
(四)性能优化实战
1. 配置参数调优
2. 查询优化
3. 自动真空(VACUUM)调优
六、高可用性与复制
(一)主从复制(流复制)
1. 主库配置(postgresql.conf)
2. 从库初始化(pg_basebackup)
3. 从库配置(postgresql.conf)
4. 启动从库
(二)逻辑复制
七、安全最佳实践
(一)认证与加密
(二)权限最小化原则
八、日常管理命令速查表
一、PostgreSQL 核心概述
(一)定义与定位
PostgreSQL 是一款开源的对象关系型数据库管理系统(ORDBMS),起源于加州大学伯克利分校,继承了 Ingres 项目的技术精髓。它不仅支持传统的关系型数据模型,还引入了对象特性(如自定义数据类型、函数、操作符等),成为现代数据库领域中功能最全面的开源解决方案之一。
(二)核心特性与优势
特性分类 | 具体内容 |
---|---|
开源与自由 | 遵循 PostgreSQL 许可证,允许用户自由使用、修改和分发,吸引全球开发者贡献插件与解决方案(如 PostGIS 地理扩展、TimescaleDB 时间序列扩展)。 |
标准符合性 | 高度兼容 SQL 标准,支持窗口函数、公共表表达式(CTE)、子查询等高级语法,提升 SQL 代码的可读性与执行效率。 |
数据类型丰富 | 内置类型包括: - 基础类型:整数、浮点数、字符串 - 复杂类型:数组、枚举、范围类型、JSON、地理空间类型(依赖 PostGIS) - 时间类型:精确到纳秒的时间戳 |
事务与并发控制 | 采用 ** 多版本并发控制(MVCC)** 机制,确保高并发下的数据一致性;支持嵌套事务、保存点(Savepoint),满足复杂业务逻辑的事务管理需求。 |
扩展性 | 支持通过插件(Extension)扩展功能,例如: - 自定义数据类型(如网络地址类型) - 索引方法(如 GIN 索引用于全文搜索) - 过程语言(PL/pgSQL、PL/Python 等) |
安全性 | 提供细粒度权限控制(基于角色的访问控制,RBAC)、SSL 加密传输、审计日志(log_statement),符合 GDPR 等数据合规要求。 |
高性能 | 优化手段包括: - 智能查询优化器(基于成本的优化,CBO) - 并行查询(Parallel Query) - 分区表(Range/List/Hash 分区) - 索引优化(B-tree、Hash、GIST 等索引类型) |
高可用性 | 支持主从复制(流复制、逻辑复制)、自动故障转移(需配合 Patroni 等工具),通过 PGDG 生态实现企业级容灾方案。 |
成本效益 | 开源免费,无需支付授权费用;社区提供丰富的文档、教程与技术支持,降低企业技术选型门槛。 |
(三)应用场景
- 企业级应用:ERP、CRM 系统,如海尔集团使用 PostgreSQL 支撑供应链管理系统,处理高并发事务与复杂业务逻辑。
- 数据分析与数据仓库:结合 Citus 扩展实现分布式查询,支持 TB 级数据实时分析,典型案例包括 Airbnb 的实时数据看板。
- 地理信息系统(GIS):通过 PostGIS 扩展存储与分析地理空间数据,被 OpenStreetMap 等项目用于地图数据管理。
- 物联网(IoT):利用 TimescaleDB 扩展存储时间序列数据,适配传感器数据高频写入场景,如智能电网监控系统。
- 金融与交易系统:满足 ACID 事务特性与高可用性要求,被印度 ICICI 银行用于核心交易系统。
二、PostgreSQL 安装实战(基于 OpenEuler 24)
(一)编译安装(以 16.3 版本为例)
1. 环境准备
# 安装编译依赖(GCC、ICU 库、Readline 库等)
[root@localhost ~]# yum -y install gcc gcc-* make libicu libicu-devel readline-devel zlib zlib-devel
2. 下载与解压源码
# 下载 PostgreSQL 16.3 源码包(需提前安装 wget/curl)
[root@localhost ~]# wget https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz
# 解压源码
[root@localhost ~]# tar zxvf postgresql-16.3.tar.gz
[root@localhost ~]# cd postgresql-16.3
3. 配置编译参数
# --prefix 指定安装目录,--with-openssl 启用 SSL 支持
[root@localhost postgresql-16.3]# ./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-libxslt
4. 编译与安装
# 编译(建议多核环境使用 -j 参数加速,如 -j4)
[root@localhost postgresql-16.3]# make && make install
5. 创建用户与数据目录
# 创建数据库专用用户(避免使用 root 运行服务)
[root@localhost ~]# adduser postgres
# 创建数据存储目录
[root@localhost ~]# mkdir -p /usr/local/pgsql/data
# 赋予用户权限
[root@localhost ~]# chown -R postgres:postgres /usr/local/pgsql/data
6. 配置环境变量
# 编辑系统环境变量文件
[root@localhost ~]# vi /etc/profile
# 添加以下内容
export PGHOME=/usr/local/pgsql
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
# 使配置生效
[root@localhost ~]# source /etc/profile
7. 初始化数据库集群
# 切换至 postgres 用户
[root@localhost ~]# su - postgres
# 初始化集群(-D 指定数据目录,-W 启用密码认证)
[postgres@localhost ~]$ initdb -D /usr/local/pgsql/data -U postgres -W
8. 启动与停止服务
# 启动服务(-l 指定日志文件)
[postgres@localhost ~]$ pg_ctl -D /usr/local/pgsql/data -l postgresql.log start
# 停止服务(-m 参数指定停止模式:smart/fast/immediate)
[postgres@localhost ~]$ pg_ctl -D /usr/local/pgsql/data -m fast stop
# 查看服务状态
[postgres@localhost ~]$ pg_ctl -D /usr/local/pgsql/data status
9. 登录数据库
# 使用 psql 客户端登录(默认连接 postgres 数据库)
[postgres@localhost ~]$ psql
psql (16.3)
Type "help" for help.
postgres=# -- 查看数据库列表
postgres=# \l
# 退出客户端
postgres=# \q
(二)DNF 安装(快速部署 15.12 版本)
# 安装官方 YUM 源(可选,若系统自带源版本较低)
[root@localhost ~]# rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -q --queryformat "%{VERSION}" centos-release)-$(arch)/pgdg-redhat-repo-latest.noarch.rpm
# 安装 PostgreSQL 服务器与客户端
[root@localhost ~]# dnf install -y postgresql15-server postgresql15
# 初始化数据库
[root@localhost ~]# /usr/pgsql-15/bin/postgresql-15-setup initdb
# 启动服务并设置开机自启
[root@localhost ~]# systemctl start postgresql-15
[root@localhost ~]# systemctl enable postgresql-15
三、PostgreSQL 逻辑与物理架构解析
(一)逻辑架构
1. 层级结构
PostgreSQL 实例(Instance)
├─ 数据库集群(Database Cluster)
│ ├─ 数据库(Database): postgres(默认管理库)、template0(纯净模板库)、template1(默认模板库)
│ │ ├─ 模式(Schema): public(默认模式)、自定义模式(如 sales_schema)
│ │ │ ├─ 数据库对象(表、视图、索引、函数、序列等)
│ │ ├─ 表空间(Tablespace): pg_default(默认表空间)、pg_global(系统表空间)
│ ├─ 用户(User): postgres(超级用户)、普通角色(如 app_user)
2. 核心概念
- 数据库集群(Cluster):一个 PostgreSQL 服务实例管理的所有数据库的集合,共享系统级配置(如连接池参数)。
- 数据库(Database):逻辑隔离的存储单元,每个数据库包含独立的模式与对象,物理上对应数据目录中的一个子目录。
- 模式(Schema):用于隔离同一数据库内的对象(如不同用户的表),默认模式为
public
,可通过SET search_path TO schema_name;
指定搜索路径。 - 表空间(Tablespace):逻辑存储位置,物理对应文件系统目录,用于分散数据存储路径(如将大表存储在独立磁盘)。
-- 创建自定义表空间 CREATE TABLESPACE my_tablespace OWNER postgres LOCATION '/data/pgsql/tablespace'; -- 创建表时指定表空间 CREATE TABLE large_data (id INT) TABLESPACE my_tablespace;
3. 对象标识符(OID)
- 每个数据库对象(表、索引、用户等)都有唯一的 OID(32 位无符号整数)。
- 通过系统表查询 OID:
-- 查询表的 OID SELECT oid FROM pg_class WHERE relname = 'users'; -- 通过 OID 查询表名 SELECT relname FROM pg_class WHERE oid = 16384;
(二)物理架构
1. 目录结构
/usr/local/pgsql/ # 安装目录(默认由 --prefix 指定)
├─ bin/ # 可执行文件(psql、pg_ctl、initdb 等)
├─ lib/ # 动态库文件(PostgreSQL 核心库、插件库)
├─ share/ # 文档、配置模板、SQL 脚本(如扩展插件的 SQL 文件)
└─ data/ # 数据目录(由 initdb 初始化,需单独备份)
├─ base/ # 存储各数据库的数据文件(每个数据库对应一个子目录,如 base/16384 对应 template1 数据库)
├─ global/ # 存储集群级系统表(如 pg_database、pg_control)
├─ pg_commit_ts/ # 事务提交时间戳(9.5+ 版本)
├─ pg_dynshmem/ # 动态共享内存文件(9.4+ 版本)
├─ pg_logical/ # 逻辑复制状态数据(9.4+ 版本)
├─ pg_multixact/ # 多事务状态数据(处理行级共享锁)
├─ pg_wal/ # 预写日志(WAL)文件(10+ 版本,旧版本为 pg_xlog)
├─ pg_xact/ # 事务提交状态数据(10+ 版本,旧版本为 pg_clog)
├─ postgresql.conf # 主配置文件(参数配置核心文件)
└─ pg_hba.conf # 客户端认证文件(控制用户连接权限)
2. 关键文件解析
-
postgresql.conf:
核心配置参数,常用配置项:listen_addresses = '*' # 监听地址(默认 localhost,生产环境需改为 0.0.0.0) port = 5432 # 端口号 max_connections = 100 # 最大连接数 shared_buffers = 128MB # 共享缓冲区(建议设置为物理内存的 25%) work_mem = 4MB # 单个查询使用的工作内存 wal_level = replica # WAL 日志级别(minimal/replica/full)
-
pg_hba.conf:
定义客户端连接认证规则,格式:# TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 scram-sha-256 # 本地连接使用 SCRAM-SHA-256 认证 host all all ::1/128 scram-sha-256 # IPv6 本地连接 host replication replicator 192.168.1.0/24 md5 # 主从复制使用 MD5 认证
-
WAL 文件(pg_wal/):
预写日志用于保障数据持久化与故障恢复,每个 WAL 段文件固定为 16MB,命名格式为000000010000000000000001
(时间线 + 日志序列号)。
四、PostgreSQL 核心功能与操作
(一)用户与权限管理
1. 创建用户与角色
-- 创建普通用户(密码加密存储)
CREATE USER app_user WITH PASSWORD 'secure_password';
-- 创建超级用户(需谨慎)
CREATE ROLE super_user WITH SUPERUSER LOGIN PASSWORD 'super_secret';
2. 权限控制
-- 授予表查询权限
GRANT SELECT ON TABLE users TO app_user;
-- 授予模式创建权限
GRANT CREATE ON SCHEMA sales TO app_user;
-- 回收权限
REVOKE INSERT ON TABLE orders FROM app_user;
3. 角色继承
-- 创建角色组
CREATE ROLE analysts;
-- 将用户加入角色组
GRANT analysts TO app_user;
-- 授予角色组权限
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO analysts;
(二)数据类型与表操作
1. 常用数据类型
分类 | 数据类型 | 说明 |
---|---|---|
数值类型 | int4, int8, numeric(p,s) | numeric 用于高精度计算(如金融数据) |
字符串类型 | varchar(n), text | text 无长度限制,varchar (n) 限制最大长度 |
时间类型 | timestamp, interval | timestamp 包含日期时间,interval 表示时间间隔(如 '1 day 2 hours') |
数组类型 | int[], varchar(10)[] | 一维 / 多维数组,如 {1,2,3} 或 ARRAY[1,2,3] |
JSON 类型 | json, jsonb | jsonb 支持索引与查询优化,推荐用于存储半结构化数据 |
地理空间类型 | geography, geometry | 需安装 PostGIS 扩展,支持点、线、面等空间对象 |
2. 创建表
-- 创建用户表(含数组与 JSONB 字段)
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
emails TEXT[], -- 邮箱数组
metadata JSONB, -- 扩展元数据
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3. 索引优化
-- 创建 B-tree 索引(默认类型,适用于等值查询)
CREATE INDEX idx_users_name ON users(name);
-- 创建 GIN 索引(适用于数组或 JSONB 全文搜索)
CREATE INDEX idx_users_emails ON users USING GIN(emails);
-- 创建部分索引(仅对符合条件的数据建索引)
CREATE INDEX idx_users_active ON users(id) WHERE status = 'active';
(三)事务与并发控制
1. 显式事务控制
BEGIN; -- 开启事务
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 提交事务(若中间出错则自动回滚)
2. 保存点(Savepoint)
BEGIN;
INSERT INTO orders (order_date) VALUES ('2023-10-01');
SAVEPOINT sp1; -- 设置保存点
INSERT INTO order_items (order_id, product_id) VALUES (1, 101);
-- 回滚到保存点,保留之前的插入操作
ROLLBACK TO sp1;
COMMIT;
3. 事务隔离级别
-- 设置事务隔离级别为可重复读(默认级别)
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 查看当前会话隔离级别
SELECT current_setting('transaction_isolation');
五、PostgreSQL 高级特性与扩展
(一)分区表(Partitioning)
分区表用于将大型表的数据分散到多个物理子表中,提升查询性能与管理效率。PostgreSQL 支持范围分区(Range)、列表分区(List)、** 哈希分区(Hash)** 三种方式。
1. 范围分区(按时间范围分区)
-- 创建主表(声明为分区表)
CREATE TABLE sales (
order_id INT,
order_date DATE,
amount NUMERIC
) PARTITION BY RANGE (order_date);
-- 创建分区函数(定义分区范围)
CREATE OR REPLACE FUNCTION sales_partition_func() RETURNS TRIGGER AS $$
BEGIN
IF NEW.order_date < '2023-01-01' THEN
INSERT INTO sales_2022 VALUES (NEW.*);
ELSIF NEW.order_date < '2024-01-01' THEN
INSERT INTO sales_2023 VALUES (NEW.*);
ELSE
INSERT INTO sales_future VALUES (NEW.*);
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
-- 创建分区表
CREATE TABLE sales_2022 PARTITION OF sales FOR VALUES FROM ('-infinity') TO ('2023-01-01');
CREATE TABLE sales_2023 PARTITION OF sales FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');
CREATE TABLE sales_future PARTITION OF sales FOR VALUES FROM ('2024-01-01') TO ('infinity');
-- 绑定触发器(自动路由数据到对应分区)
CREATE TRIGGER sales_partition_trigger BEFORE INSERT ON sales
FOR EACH ROW EXECUTE FUNCTION sales_partition_func();
2. 列表分区(按地区列表分区)
CREATE TABLE users (
user_id INT,
region TEXT,
email TEXT
) PARTITION BY LIST (region);
CREATE TABLE users_north PARTITION OF users FOR VALUES IN ('north', 'northeast');
CREATE TABLE users_south PARTITION OF users FOR VALUES IN ('south', 'southeast');
CREATE TABLE users_other PARTITION OF users FOR VALUES IN (DEFAULT);
3. 哈希分区(按用户 ID 哈希分区)
CREATE TABLE orders (
order_id INT,
user_id INT,
order_time TIMESTAMP
) PARTITION BY HASH (user_id) PARTITIONS 4; -- 自动创建4个哈希分区
(二)扩展应用(Extensions)
PostgreSQL 通过 CREATE EXTENSION
命令加载扩展,以下是常用扩展示例:
1. PostGIS(地理信息处理)
-- 安装 PostGIS 扩展(需先安装系统包 postgis)
CREATE EXTENSION postgis;
-- 创建地理空间表(存储点坐标)
CREATE TABLE restaurants (
id SERIAL,
name TEXT,
location GEOGRAPHY(POINT) -- 使用地理坐标系(WGS84)
);
-- 插入数据(WKT 格式:POINT(longitude latitude))
INSERT INTO restaurants (name, location) VALUES (
'Pizza Hut',
ST_GeogFromText('POINT(-73.9654 40.7821)')
);
-- 查询半径5公里内的餐厅
SELECT name FROM restaurants
WHERE ST_DWithin(location, ST_GeogFromText('POINT(-73.9847 40.7589)'), 5000);
2. TimescaleDB(时间序列数据)
-- 安装 TimescaleDB 扩展
CREATE EXTENSION timescaledb;
-- 创建时间序列表(自动转换为超表)
CREATE TABLE sensor_data (
time TIMESTAMP NOT NULL,
device_id INT NOT NULL,
temperature FLOAT,
humidity FLOAT
);
SELECT create_hypertable('sensor_data', 'time'); -- 转换为超表
-- 插入数据
INSERT INTO sensor_data (time, device_id, temperature, humidity)
VALUES (NOW(), 1, 25.5, 60.0);
-- 聚合查询(按小时统计平均温度)
SELECT time_bucket('1 hour', time) AS hour, AVG(temperature)
FROM sensor_data
GROUP BY hour
ORDER BY hour;
3. Citus(分布式查询)
# 安装 Citus 扩展(需编译安装或通过包管理器获取)
[root@localhost ~]# dnf install -y postgresql-citus
-- 启用 Citus 扩展
CREATE EXTENSION citus;
-- 创建分布式表(指定分布列)
CREATE TABLE orders (
order_id BIGINT,
customer_id INT,
order_total NUMERIC
);
SELECT create_distributed_table('orders', 'customer_id'); -- 按 customer_id 分布
-- 创建参考表(小表,全节点复制)
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name TEXT
);
SELECT create_reference_table('customers');
(三)备份与恢复
1. 逻辑备份(pg_dump)
# 备份单个数据库(压缩为 SQL 文件)
pg_dump -U postgres -d mydb -f mydb_backup.sql -Z 9
# 备份指定表
pg_dump -U postgres -d mydb -t users -t orders > tables_backup.sql
# 备份整个集群(包含所有数据库,需使用 pg_dumpall)
pg_dumpall -U postgres -f cluster_backup.sql
2. 物理备份(pg_basebackup)
# 全量备份(流复制模式,需开启 wal_level=replica)
pg_basebackup -U postgres -h localhost -D /backup/pg_basebackup \
--wal-method=stream --backup-mode=full --compress=zstd
3. 恢复备份
# 恢复逻辑备份
psql -U postgres -d mydb < mydb_backup.sql
# 恢复物理备份(需停止数据库服务)
systemctl stop postgresql
rm -rf /usr/local/pgsql/data/*
cp -R /backup/pg_basebackup/* /usr/local/pgsql/data/
chown -R postgres:postgres /usr/local/pgsql/data
pg_ctl -D /usr/local/pgsql/data -l logfile start
(四)性能优化实战
1. 配置参数调优
# postgresql.conf 关键参数优化(适用于 16GB 内存服务器)
max_connections = 200 # 根据应用连接数调整
shared_buffers = 4GB # 内存的 25%
work_mem = 32MB # 复杂查询(排序/哈希连接)的工作内存
maintenance_work_mem = 1GB # VACUUM/REINDEX 等维护操作内存
effective_cache_size = 12GB # 内核缓存+共享缓冲区,建议内存的 75%
wal_buffers = 128MB # WAL 缓冲区(默认 128MB,大事务可增大)
random_page_cost = 1.1 # SSD 存储设为 1.1,HDD 设为 4.0
2. 查询优化
-- 分析查询计划(查看执行成本与索引使用情况)
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user@example.com';
-- 强制使用索引(避免全表扫描)
SET enable_seqscan = OFF;
SELECT * FROM large_table WHERE id = 1234;
RESET enable_seqscan;
3. 自动真空(VACUUM)调优
# 调整真空参数(减少长事务阻塞)
autovacuum_vacuum_scale_factor = 0.02 # 当脏页比例超过 2% 时触发真空
autovacuum_vacuum_threshold = 50 # 最小脏页数
vacuum_cost_delay = 20ms # 真空操作延迟(降低 I/O 冲击)
vacuum_cost_limit = 2000 # 真空操作最大成本
六、高可用性与复制
(一)主从复制(流复制)
1. 主库配置(postgresql.conf)
wal_level = replica # 启用复制功能
max_wal_senders = 5 # 最大发送进程数
wal_keep_segments = 32 # 保留 WAL 段数(单位:16MB,用于故障恢复)
listen_addresses = '*' # 监听所有 IP
2. 从库初始化(pg_basebackup)
# 在从库节点执行
pg_basebackup -U postgres -h master_ip -D /usr/local/pgsql/data \
--wal-method=stream --create-slot=slave_slot
3. 从库配置(postgresql.conf)
hot_standby = on # 启用只读模式
primary_conninfo = 'host=master_ip port=5432 user=replica password=replica_password'
4. 启动从库
pg_ctl -D /usr/local/pgsql/data start
# 验证复制状态
psql -c "SELECT * FROM pg_stat_replication;"
(二)逻辑复制
-- 主库创建发布(Publication)
CREATE PUBLICATION my_publication FOR TABLE users, orders;
-- 从库创建订阅(Subscription)
CREATE SUBSCRIPTION my_subscription
CONNECTION 'host=master_ip port=5432 user=replica password=replica_password dbname=mydb'
PUBLICATION my_publication;
七、安全最佳实践
(一)认证与加密
- 使用 SCRAM-SHA-256 认证(pg_hba.conf):
host all all 0.0.0.0/0 scram-sha-256
- 启用 SSL 加密(postgresql.conf):
ssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key' ssl_ca_file = 'root.crt' # 可选,客户端证书验证
(二)权限最小化原则
- 避免使用超级用户执行日常操作,为应用创建专用角色。
- 限制
PUBLIC
模式的权限:REVOKE ALL ON SCHEMA public FROM PUBLIC; GRANT USAGE ON SCHEMA public TO app_user;
八、日常管理命令速查表
操作类型 | 命令示例 |
---|---|
查看数据库列表 | \l |
查看表结构 | \d users |
查看当前用户 | SELECT current_user; |
查看参数配置 | SHOW all; |
清理无效对象 | VACUUM FULL ANALYZE; |
查看慢查询日志 | tail -f /usr/local/pgsql/data/pg_log/postgresql-SLOW-*.log |
监控数据库状态 | pg_stat_statements 扩展(需安装)或 pg_top 工具 |