PostgreSQL 数据库由连接管理系统(系统控制器)、编译执行系统、存储管理系统、事务系统和系统表五大部分组成。
2.1系统表
-
数据字典是关系数据库系统管理控制信息的核心
-
在postgreSQL数据库系统中,系统表扮演数据字典的角色
-
存放结构元数据,普通表、视图
-
由SQL命令关联的系统表操作自动维护
-
每一个数据库都有自己的一套系统表,来源于数据库创建时从模板数据库拷贝的,也有少数系统表是数据库共享的,表示的是所有数据库信息
2.1.1主要系统表功能及依赖关系
-
当访问一个对象时,名字空间搜索顺序
-
特殊名字空间,仅用于创建模式
-
临时表的名字空间
-
系统表的名字空间
-
对象标识符(OID),用于整个数据库系统中唯一标识一个数据库对象,包括数据库、表、视图、索引等
-
pg_tablespace由同一个数据集簇内的所有数据共享,并不是每一个数据库都有自己的
2.1.2系统视图
2.2.1initdb的使用
-
initdb用来初始化数据集簇的程序,负责创建数据库目录、系统表、模板数据库
-
语法命令:initdb[option...] --pgdata | -D directory
-
2.3 PostgreSQL进程结构
-
最主要的两个进程是守护进程Postmaster和服务进程Postgres,守护进程负责整个系统的启动和关闭,监听并接受客户端的请求,分配服务进程。服务进程接受并执行客户端发送的命令
-
守护进程启动后台辅助进程:Syslogger(系统日志进程)、PgStat(统计数据收集进程)、AutoVacuum(系统自动清理进程)
-
在守护进程进入循环监听中时启动如下进程:BgWriter(后台写进程)、WalWriter(预写式日志进程)、PgArch(预写式日志归档进程)
-
POstmaster总是监听用户连接请求并未用户分配服务进程Postgres,而Postgres负责为客户端执行各种命令
2.4守护进程Postmaster
2.4.4信号处理函数pmdie
-
Smart shutdown:等待所有子进程完成当前任务后在安全关闭系统,对应sigterm信号
-
fast shutdown:向所有子进程发出sigterm信号,等待子进程接收到这个信号回滚当前事务并退出后再安全关闭系统,对应sigint信号
-
immediate shutdown:向所有子进程发sigout信号,子进程马上退出,系统非正常关闭,对应sigout信号
2.5.1SysLogger系统日志进程
-
log_destination:配置日志输出目标
-
logging_filename:配置日志文件名称命名规则
-
logging_collector:是否开启日志收集器,on表示启动日志功能,否则系统不产生系统日志辅助进程
-
log_dirctory:配置日志输出文件夹
-
log_rotation_size:配置日志文件大小