PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgreSQL逻辑结构

我们在初始化数据库时会建立cluster,cluster下的每个数据库都是隔离状态,不能跨库访问,除非由第三方插件之类的。在cluster中有一张全局的表,保留了该cluster下所有库的信息。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
随便从哪个库里访问这张表都行,因为是全局的,可以看到有哪些database。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
这个目录相当于cluster,处于最顶级。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
然后连接具体的数据库postgres,然后进入数据库后查看schema,在schema下面就是一些具体的如表,索引等具体对象了。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgreSQL物理结构

表,索引这些东西都会有单独的文件来存,是在./configure。。。后面跟一堆参数时指定,默认是1个G,如果超过一个G会生成新文件,文件名就会依次自动排上序号。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

0号数据块第一条记录。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgreSQL进程结构

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
我这里的2284是父进程,他会启动一堆子进程。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgreSQL系统表

每一条记录都有oid。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
这个命令可以看到系统表。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
来单独分析一下pg_class这张表。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
目录 pg_class 记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见 pg_index )、序列、视图、物化视图、组合类型和TOAST表,参见 relkind 。下面,当我们提及所有这些类型的对象时我们使用“关系”。并非所有列对于所有关系类型都有意义。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
然后我们还可以在pg_am表里看到支持哪些索引。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgreSQL系统视图

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

PostgreSQL管理函数

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

注意,下面这个函数要去配置文件里改东西才能完成在线备份。
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解

数据可靠性

PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
存储控制器那里如果没有断电保护,那么建议关闭,有断电保护就建议打开,硬盘write cache那里通常没有断电保护,建议关闭。postgresql只能保证buffer cache写到存储控制器
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解
PostgerSQL物理,逻辑,进程结构以及系统表系统函数详解