1 PG数据库架构
1.1 PG数据库主要包含如下结构
日志文件
参数文件
控制文件
数据文件
redo日志(WAL)
后台进程
1.2 PG数据库主要结构图

2 PG数据库日志文件
日志文件种类:
$PGDATA/log 运行日志
$PGDATA/pg_wal 重做日志
/var/log/messages 系统日志(包含pg_auto_failover日志)
3 PG数据库控制文件
pg_controldata可以查看控制文件的内容。
controlfile是很重要的文件记录了数据库运行的一些信息,比如数据库id,是否open,wal的位置,checkpoint的位置等。

4 PG数据库数据文件
4.1 page页
pg数据库中,每个索引和表都是一个单独的文件,pg中叫做page。
默认是每个大于1G的page会被分割pg_class.relfilenode.1这样的文件。
page的大小在initdb的时候指定(--with-segsize)。
4.2 page物理位置(base目录下)

注意事项:truncate表之后relfilenode会变。对应的物理文件名字也会变。

5 PG数据库wal日志
5.1 wal日志位置($PGDATA/pg_wal目录下)

5.2 查看wal日志时间

5.3 切换wal日志
postgres=# select pg_switch_wal();

5.4 pg_waldump查看wal日志具体内容

6 PG数据库后台进程

postgres 主进程
logger 日志进程
checkpointer checkpoint进程
background writer 数据文件写进程
walwriter wal写进程
autovacuum launcher autovacuum进程
stats collector 统计信息收集进程
