今天本文主要从日志文件、参数文件、控制文件、数据文件、redo日志(WAL)、后台进程这六个方面来介绍一下PostgreSQL的架构。
化州网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联建站2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
架构
PostgreSQL的主要架构如下:
一、日志文件
1. 日志文件种类
2. 运行日志
运行日志主要相关的参数如下,默认没有开启的话没有log目录,开启后会自动生成。
3. 事务日志pg_xact
pg_xact是事务提交日志,记录了事务的元数据。默认开启。内容一般不能直接读。
4. 服务器日志
如果用pg_ctl启动的时候没有指定-l参数来指定服务器日志,错误可能会输出到cmd前台。服务器日志记录了数据库的重要信息。
lsof或许可以过滤出在写的日志文件
- $lsof -c postgres| grep REG | grep -v /usr | grep -v /dev | grep -v /SYS
二、参数文件
1. postgresql.conf
pg的主要参数文件,有很详细的说明和注释,和Oracle的pfile,MySQL的my.cnf类似。默认在$PGDATA下。很多参数修改后都需要重启。9.6之后支持了alter system来修改,修改后的会存在$PGDATA/postgresql.auto.conf下,可以reload或者 restart来使之生效。
主要的参数如下:
2. pg_hba.conf
这个是黑白名单的设置。文件里有详细的参数说明,默认参数如下:
3. pg_ident.conf
pg_ident.con是用户映射配置文件。结合pg_hba.connf中,method为ident可以用特定的操作系统用户和指定的数据库用户登录数据库。如下:
pg_ident.conf如下:
pg_hba.conf如下:
三、控制文件
1. 控制文件位置
- $PGDATA/global/pg_control
控制文件在数据库目录的global目录下。控制文件记录了数据库的重要信息。
2. 查看控制文件
pg_controldata可以查看控制文件的内容
- $ pg_controldata $PGDATA
- pg_control version number: 1100
- Catalog version number: 201809051
- Database system identifier: 6684270596680436587 #dbid
- Database cluster state: in production # primary
- pg_control last modified: Thu 16 May 2019 02:26:37 PM CST
- Latest checkpoint location: 0/48812A0
- Latest checkpoint's REDO location: 0/4881268 #redo 位置
- Latest checkpoint's REDO WAL file: 000000010000000000000001 #wal文件号
- Latest checkpoint's TimeLineID: 1
- Latest checkpoint's PrevTimeLineID: 1
- Latest checkpoint's full_page_writes: on
- Latest checkpoint's NextXID: 0:572 #下一个事务id
- Latest checkpoint's NextOID: 16388 #下一个OID
- .....
controlfile记录了数据库运行的一些信息,比如数据库id,是否open,wal的位置,checkpoint的位置,等等。controlfile是很重要的文件,数据库部署和调整。
四、数据文件
1. page
pg中,每个索引和表都是一个单独的文件,pg中叫做page。默认是每个大于1G的page会被分割pg_class.relfilenode.1这样的文件。
Page默认大小为8KB,最大32KB,一个数据块中可存放多行的数据。块中的结构如下图:
块头记录了如下信息:
行指针中表示行内容的偏移量是15bit,能表示的最大偏移量是2^15=32768,因此块的最大大小是32768,即32KB。
2. page物理位置
page的物理位置在$PGDATA/BASE/DATABASE_OID/PG_CLASS.RELFILENODE
需要注意的是,pg_class.relfilenode类似dba_objects.data_object_id,truncate表之后relfilenode会变。对应的物理文件名字也会变。
五、WAL日志
1. wal位置
wal在$PGDATA/pg_wal下。10之前为pg_xlog
2. wal命名格式
文件名称为16进制的24个字符组成,每8个字符一组,每组的意义如下
3. 手动切换WAL日志的命令
在PG10之前:
- highgo=# select pg_switch_xlog();
- pg_switch_xlog
- ----------------
- 0/B000C48
- (1 row)
在PG10之后:
- highgo=# select pg_switch_wal();
- pg_switch_wal
- ----------------
- 0/B000C48
- (1 row)
六、后台进程
pg后台进程说明如下:
当前题目:面试官:谈谈你对PG体系结构的理解?
网站路径:http://www.shufengxianlan.com/qtweb/news33/299933.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联