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

2021-04-01 17:09:39 浏览数 (1)

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

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

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

下面有三个解释对于METADATA

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

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

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

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

classes general thing , types 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 文件 一个面对的 数据文件。

0 人点赞