在数据库中如果说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 文件 一个面对的 数据文件。