想学明白PostgreSQL,得先捋一捋体系架构


哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程,B站及腾讯课堂讲师,直播量破10W
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • ⛳️ 1.物理结构
      • 1.1 目录说明
      • 1.2 告警文件(pg_log)
      • 1.3 在线日志(pg_wal)
      • 1.4 事务提交日志(pg_xact)
      • 1.5 控制文件
    • ⛳️ 2.内存结构
      • 2.1 分类
      • 2.2 共享内存
      • 2.2 本地内存
    • ⛳️ 3.PG学习指引

前言

本文对PostgreSQL的体系架构做了详细的阐述,希望对大家有所帮助

⛳️ 1.物理结构

想学明白PostgreSQL,得先捋一捋体系架构_第1张图片
想学明白PostgreSQL,得先捋一捋体系架构_第2张图片

1.1 目录说明

postgresql.conf:参数文件
pg_hba.conf:黑白名单
PG_VERSION:PG大版本号文件
postgresql.auto.conf:alter system设置的配置参数
postmaster.pid:数据库进程、根目录、端口号等信息
global:数据字典信息的文件
pg_wal:在线日志目录
pg_log:告警日志

1.2 告警文件(pg_log)

作用:记录了数据库的运行日志,告警日志,错误日志
默认情况下是关闭的,如果要配置需在postgresql.conf中配置

##参数文件配置
logging_collector = on
log_directory = ‘pg_log’
log_filename = ‘postgresql-%a.log’
log_truncate_on_rotation = on
##修改在线日志格式
postgres=# alter system set log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’;
注:需要重启数据库
pg_ctl stop
pg_ctl start
postgres=# select name from pg_settings where name
in (‘log_filename’,‘log_directory’,‘logging_collector’);

在这里插入图片描述

1.3 在线日志(pg_wal)

在$PGDATA/pg_wal,单个文件为16M,内部不可读,无法关闭,物理备份时,要备份此文件

##切日志的方式
postgres=# select pg_switch_wal();
 pg_switch_wal 
---------------
 0/15679F0
(1 row)

postgres=# show archive_timeout;
jmedb=# select * from pg_ls_waldir();
位置在:cd $PGDATA/pg_wal

想学明白PostgreSQL,得先捋一捋体系架构_第3张图片

1.4 事务提交日志(pg_xact)

事务提交日志,记录元数据;目录在$PGDATA/pg_xact

1.5 控制文件

/postgresql/pgdata/global/pg_control
查看控制文件信息
[pgsql@pghost02 ~]$ pg_controldata

想学明白PostgreSQL,得先捋一捋体系架构_第4张图片

⛳️ 2.内存结构

2.1 分类

本地内存区域(Local mermory area):每个后端进程分配供自己使用(用户服务)
共享内存区域 (Shared mermory area):服务器所有的进程使用

想学明白PostgreSQL,得先捋一捋体系架构_第5张图片

2.2 共享内存

共享内存区域由PostgreSQL服务器在启动时分配。这个区域也被划分为几个固定大小的子区域。

想学明白PostgreSQL,得先捋一捋体系架构_第6张图片

a.shared buffer pool
磁盘的数据加载到此内存当中,直接操作它们,减少磁盘的IO
快速访问数据
很多用户访问可以共享内存
解决了频繁访问磁盘
b.WAL buffer
变化的数据块缓存到此区域,后期数据库写在线日志,保证了数据不因为服务器故障而丢失数据
c.CommitLog
保存了所有事务的状态,后期用于并发控制
提交状态:committed;未提交状态:in_progress

2.2 本地内存

想学明白PostgreSQL,得先捋一捋体系架构_第7张图片

work_mem:对表排序,或者表的连接(hash join/merge join)
temp_buffers:存储临时表,用户可以访问此区域的缓冲的数据
maintenance_work_mem:做表相关的一些维护工作(重建索引、加外键、收集统计信息)
需要使用这个内存

⛳️ 3.PG学习指引

想学明白PostgreSQL,得先捋一捋体系架构_第8张图片

1.建议阅读《PostgreSQL学习的九层宝塔》:
https://mp.weixin.qq.com/s/i7b6FvY3PYC2JENCgiVxjQ
2.可自主学习阅读PG应用管理基础文档,
本部分内容主要是中国PG分会培训认证PGCA课程的节选,
相关链接:http://www.postgresqlchina.com/tecdoc
3.PG学习的主力站点
PG国际社区:https://www.postgresql.org/

1)PG概要:https://www.postgresql.org/about/
2)PG在线帮助文档(英文版本,多PG版本):
https://www.postgresql.org/docs/
3)也可通过PG中文手册查阅学习,访问地址:
http://www.postgres.cn/docs/10/;
http://www.postgres.cn/docs/11/
4)安装介质下载地址:
https://www.postgresql.org/download/
主要有二进制、源码编译安装两种方式,二进制安装介质对应不同的操作系统。
例外还有一种基于PG的产品发布版本的安装,
可以通过产品的公司官网获得安装介质及安装方法,
譬如阿里POLARDB、亚信ANTDB、腾讯TBase、华为GaussDB、瀚高HGDB等。
5)在线学习资源
https://www.postgresql.org/docs/online-resources/
包含丰富的教程、动手练习资源

你可能感兴趣的:(数据库,PostgreSQL,postgresql,架构,数据库)