PostgreSQL 初体验

一、PostgreSQL

1. 简介

PostgreSQL 是一个功能强大的开源关系型数据库管理系统(RDBMS),起源于 1986 年的加州大学伯克利分校项目。它支持 SQL 标准并提供丰富的扩展功能,适用于复杂的数据处理场景。

2. 特点
  • 可扩展性:支持自定义数据类型、运算符、函数和索引。
  • 事务完整性:严格遵循 ACID(原子性、一致性、隔离性、持久性)原则。
  • 并发控制:采用多版本并发控制(MVCC)机制,避免读写冲突。
  • 高级功能:支持 JSON、GIS、全文搜索、窗口函数等。
3. 优势
  • 开源免费:遵循 PostgreSQL 许可协议,可自由使用和修改。
  • 兼容性:支持多种编程语言接口(如 Python、Java、C/C++)。
  • 可靠性:提供主从复制、逻辑复制等高可用方案。
  • 社区活跃:拥有庞大的开发者社区和丰富的插件生态。
4. 架构

PostgreSQL 采用多进程架构:

  • 主进程(Postmaster):管理连接和后台进程。
  • 后端进程(Backend):每个客户端连接对应一个独立进程。
  • 辅助进程:包括 WAL 写入器、检查点进程等。
5. 应用场景
  • OLTP 系统:如电商、金融交易系统。
  • 数据分析:支持复杂查询和并行计算。
  • 地理信息系统(GIS):通过 PostGIS 扩展处理空间数据。
  • 文档存储:利用 JSONB 类型高效管理半结构化数据。
6. 结论

PostgreSQL 是兼顾性能、功能与开源灵活性的理想数据库选择,尤其适合需要高度定制化和复杂业务逻辑的场景。

二、安装 PostgreSQL

1. 编译安装

适用于需要自定义配置的场景:

bash 复制代码
# 下载源码
wget https://ftp.postgresql.org/pub/source/v15.5/postgresql-15.5.tar.gz
tar -xzvf postgresql-15.5.tar.gz
cd postgresql-15.5

# 编译安装
./configure --prefix=/opt/pgsql
make
make install

# 初始化数据库
/opt/pgsql/bin/initdb -D /data/pgdata
2. dnf 安装

适用于 CentOS/RHEL 等系统:

bash 复制代码
# 添加官方仓库
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装 PostgreSQL 15
dnf install -y postgresql15-server

# 初始化并启动
/usr/pgsql-15/bin/postgresql-15-setup initdb
systemctl enable postgresql-15
systemctl start postgresql-15

三、PostgreSQL 结构

1. PG 的逻辑结构
  • 数据库(Database):独立的数据容器。
  • 模式(Schema):命名空间,用于组织表、视图等对象。
  • 对象:表(Table)、索引(Index)、函数(Function)等。
2. PG 的物理结构
(1)软件安装目录
  • 二进制文件:/usr/pgsql-15/bin(dnf 安装)或 /opt/pgsql/bin(编译安装)。
  • 配置文件:/var/lib/pgsql/15/data/postgresql.conf
  • 日志文件:/var/lib/pgsql/15/data/log
(2)数据库目录结构

数据目录(如 /var/lib/pgsql/15/data)包含:

  • PG_VERSION:版本信息文件。
  • base:存储数据库的核心数据文件。
  • pg_wal:预写日志(WAL)目录。
(3)基础对象:OID 与表空间
  • OID(对象标识符)

    • 系统内部唯一标识对象的整数,如 pg_class 中存储表 OID。

    • 查询示例:

      sql 复制代码
      SELECT oid, relname FROM pg_class WHERE relkind = 'r';
  • 表空间(Tablespace)

    • 物理存储位置的逻辑映射,允许数据分散存储。

    • 创建表空间:

      sql 复制代码
      CREATE TABLESPACE ts_custom LOCATION '/mnt/ssd_data';
(4)base 的物理布局
  • 目录结构:base/<database_oid>/<table_oid>
    • 每个表对应一个或多个文件(如 1234512345_fsm)。
  • 文件类型:
    • 主文件(.data):存储实际数据。
    • 空闲空间映射(_fsm):记录数据页的空闲空间。
    • 可见性映射(_vm):加速 VACUUM 操作。
(5)表空间与数据库关系总结
特性 表空间 数据库
作用 定义物理存储位置 逻辑数据容器
多对象支持 可包含多个数据库的对象 可跨多个表空间存储对象
依赖关系 独立于数据库存在 依赖表空间存储数据
管理命令 CREATE TABLESPACE CREATE DATABASE

相关推荐
两点王爷1 小时前
PostgreSQL 常用 SQL 语句与 GIS 相关函数详解
数据库·后端
两点王爷1 小时前
PostgreSQL 好用又独特的特性与空间函数
数据库
梦帮科技1 小时前
AI 音乐产品的发布工程:验证门、数据发布、回滚与生产运维纪律
数据结构·数据库·架构·node.js·音视频·动态规划·推荐算法
TDengine (老段)3 小时前
TDengine 常见问题 TOP3
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
螺蛳粉 螺蛳粉6 小时前
MySQL 分布式集群系列 · 第五篇——全方位对比:NDB、MGR、主从复制、分库分表怎么选?
数据库·分布式·mysql
这个DBA有点耶10 小时前
从OLTP到OLAP到HTAP:数据库负载分类的技术演进与选型指南
数据库·mysql·架构
YangYang9YangYan11 小时前
商业数据分析校招项目怎么选,附项目设计与简历包装思路
大数据·数据库·数据分析
李白客11 小时前
数据库培训怎么选?零基础到DBA的学习路线与机构认证对比(2026)
数据库·学习
shark-chili12 小时前
关于AI辅助编程的认知
数据库·人工智能·redis·macos·缓存
SendTomo12 小时前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发