Catalog和Data Dictionary

pg_catalog schema

除了public和用户创建的schema之外,每个数据库还包含一个 pg_catalog schema,其中包含系统表和所有内置数据类型、函数和运算符。

这些是一组用于存储 PostgreSQL 数据库的动态和静态元数据的表,可以将其视为数据库的“数据字典”。所有系统目录表都以 pg_* 前缀开头,参考:https://www.postgresql.org/docs/11/catalogs-overview.html


在 pgAdmin 中,展开first_database节点,然后展开Catalogs节点,然后展开 PostgreSQL Catalog,然后展开tables,可以看到下面所有的表:

image-20231104235622256

右键单击first_database,然后选择Query Tool

image-20231104235717130

执行以下SQL,以查看pg_catalog

select * from pg_tables where schemaname='pg_catalog';

image-20231104235836320

Statistics Collector Views

Statistics Collector Views也是pg_catalog的一部分,它收集有关数据库实例中当前活动的运行时动态信息。例如,用于确定访问特定表的频率以及是否使用索引扫描或访问该表。

运行此命令:

SELECT * FROM pg_stat_activity WHERE STATE = 'active';

image-20231104235941266

单击first_database。然后单击Dashboard, 查看“database activity”部分中的“Sessions”:

image-20231105000021442

在这里,pgAdmin 向我们显示相同的 pg_stat_activity 信息,它仅关注连接到该特定数据库的那些会话。

Information_schema Catalog

information_schema由一组视图组成,这些视图包含有关当前数据库中定义的对象的信息

运行以下命令:

select * from information_schema.tables;

image-20231105000211886

Session Parameters

参考 https://www.postgresql.org/docs/11/runtime-config.html

在 pgAdmin 中,单击rds-pg-labs,然后单击Dashboard,然后单击Configuration。里面显示了所有 PostgreSQL 参数的当前设置。在搜索框里输入search,这会过滤参数设置列表。:

image-20231105000339433

右键单击first_database,然后选择Query Tool。然后粘贴并运行以下 SQL:

SELECT * FROM pg_settings where context = 'user';

image-20231105000515026

这显示了可以为会话更改的参数会话及其当前设置。

运行以下命令:

image-20231105000546394

SHOW命令是查看会话设置的当前值的另一种方法。

show all

image-20231105000607827

这也是另一种查看会话所有参数的当前值的方法。

设置search_pathh

运行以下SQL

select * from first_table;

这会失败,因为first_table不在当前search_path

image-20231105000641298

运行以下SQL:

SET search_path TO first_schema, public;

再次运行SQL,可以查看到结果,因为我们更新了会话的 search_path 参数设置:

image-20231105000720025