Postgresql system Catalog 中的系统表能告诉你什么 (一)?

2021-01-03 00:00:00 数据 数据库 文件 系统 写入


在数据库中如果说schema 那基本上大部分人都能明白其中含义,而如果说catalog 则不少人会恍惚,到底catalog 是什么,对于postgresql 有什么用


实际上postgresql system catalog 是一个包含了元数据的VIEW 和表的一个schema, 这个system 的catalog 是了解和解决一些基础问题的东西。


如何去从中获取数据以及通过这些数据来去了解系统的运作,是我们必须要做的。那么什么是元数据,metadata,并且这个metadata到底在所有的数据库中起到什么作用。


下面有三个解释对于METADATA 


1 提供关于数据库的系统的信息

2 通过这些数据来了解理解系统的工作的特性和原理以及当前情况

3 元数据可以通过手动的方式创建也可以自动的去获取信息


元数据一般会记录什么样的信息,这里有一个定义


classes general thing , * of things

Instances  information

Relationships amony things

Properties of things

Functions , processes , constraints and rules relating to things.


当然catalog 本身等同于database  的概念

那么如何让我们的postgresql 的 system catalog 展现需要通过

\dS 来进行


那么这些pg_catalog 的有多少个VIEW 或者 表


以 PG12来说目前的表有243个系统表


下面挑选一些systam catalog 通过下面的学习,知道如何快速的了解系统的情况


pg_stat_database 中可以

1 通过 xact_commit  和  xact_rollback 两个值可以获得这个数据库中当前执行的commit 操作和数据库回滚的操作的比。

2 blks_read blks_hist 两个参数可以获得当前数据库的数据有多少是从磁盘中获得的,有多少数据是从内存中获得的。

3  这个数据库中有多少行的插入,更新和删除

4  conflicts 的主要作用是研究作为备库的时候,postgresql到底取消了多少查询

5  deadlocks 这个数据库发生死锁的次数

6  stats_reset 的意思是以上信息生效的时间,也就是这台机器上次重启动或开启的时间。


从统计和分析的角度来说,获取这些数据可以分析出例如升级完毕后系统的稳定性,或者变动的一些特性有助于发现问题。




pg_stat_bgwriter 这个表本身要从 postgresql 写数据开始,PG写数据到磁盘上是有几种不同的路径的,数据在内存中被改变后如何刷入到磁盘文件中,

是有checkpoint 写入的还是通过background wirter 写入的,check_points_timed和checkpoints_req 两个说明,到目前为止进行了多少次checkpoint 以及强制checkpoint。


checkpoint_write_time 时间是从开始到目前为止,一直写入数据的总消耗的时间,单位毫秒。


到这里必然需要说明checkpoint 和 bgwriter的不同


1 bgwriter 是数据库将share buffer中的数据写入实际的表中的负责的进程

2 checkpoint 面对的 wal file,在将数据刷入wal后,才轮到bgwriter将数据刷入到表文件。


两个进程面对的文件不同,要完成的使命也不同,先后顺序也不同


checkpoint 在前 日志写入在前, 数据文件写入在后, 一个是为了防止系统crash后数据产生丢失的问题,一个实际是为了将实体数据写入到表文件中,一个面对的是WAL 文件 一个面对的 数据文件。




相关文章