admin管理员组

文章数量:1639245

今天讨论Postgres中两个重要的系统Schema:information_schema与pg_catalog

首先,我们通过查看pg_catalog.pg_namespace来查看当前数据库中全部的Schema

qingping=> select oid,* from pg_catalog.pg_namespace;
  oid  |      nspname       | nspowner |         nspacl          
-------+--------------------+----------+-------------------------
    99 | pg_toast           |       10 | 
 11736 | pg_temp_1          |       10 | 
 11737 | pg_toast_temp_1    |       10 | 
    11 | pg_catalog         |       10 | {root=UC/root,=U/root}
  2200 | public             |       10 | {root=UC/root,=UC/root}
 12921 | information_schema |       10 | {root=UC/root,=U/root}
 16386 | qingping           |    16384 | 
 16396 | yaron              |    16390 | 
(8 rows)

今天重点分析Postgres数据库中最为常用的两个系统Schema:information_schema和pg_catalog。
其中information_schema是方便用户查看表/视图/函数信息提供的,它大多是视图,MySQL,SQL Server同样有information_schema这个schema。
pg_catalog是系统Schema,包含了系统的自带函数/数据类型定义等,pg_catalog是保障postgres正常运转的重要基石。

-- 查看information_schema提供的视图和表
qingping=> select relname, relkind from pg_catalog.pg_class where relnamespace=12921 order by 1;
                relname                | relkind 
---------------------------------------+---------
 _pg_foreign_data_wrappers             | v
 _pg_foreign_serve

本文标签: schemaPostgrespgcataloginformationschema