PostgreSQL System Catalog
효율적인 데이터베이스 관리를 위해 내부적인 catalog를 사용한다.
catalog는 다른 RDBMS에서 data dictionary로 불리기도 한다.
system catalogs list
Catalog Name | Purpose |
ag_graph | graph information |
ag_label | label information |
pg_aggregate | aggregate functions |
pg_am | index access methods |
pg_amop | access method operators |
pg_amproc | access method support procedures |
pg_attrdef | column default values |
pg_attribute | table columns (“attributes”) |
pg_auth_members | authorization identifier membership relationships |
pg_authid | authorization identifiers (roles) |
pg_cast |
casts (data type conversions) |
pg_class | tables, indexes, sequences, views (“relations”) |
pg_collation | collations (locale information) |
pg_constraint | check constraints, unique constraints, primary key constraints, foreign key constraints |
pg_conversion | encoding conversion information |
pg_database | databases within this database cluster |
pg_db_role_setting | per-role and per-database settings |
pg_default_acl | default privileges for object types |
pg_depend | dependencies between database objects |
pg_description | descriptions or comments on database objects |
pg_enum | enum label and value definitions |
pg_event_trigger | event triggers |
pg_extension | installed extensions |
pg_foreign_data_wrapper | foreign-data wrapper definitions |
pg_foreign_server | foreign server definitions |
pg_foreign_table | additional foreign table information |
pg_index | additional index information |
pg_inherits | table inheritance hierarchy |
pg_init_privs | object initial privileges |
pg_language | languages for writing functions |
pg_largeobject | data pages for large objects |
pg_largeobject_metadata | metadata for large objects |
pg_namespace | schemas |
pg_opclass | access method operator classes |
pg_operator | operators |
pg_opfamily | access method operator families |
pg_pltemplate | template data for procedural languages |
pg_policy | row-security policies |
pg_proc | functions and procedures |
pg_range | information about range types |
pg_replication_origin | registered replication origins |
pg_rewrite | query rewrite rules |
pg_seclabel | security labels on database objects |
pg_shdepend | dependencies on shared objects |
pg_shdescription | comments on shared objects |
pg_shseclabel | security labels on shared database objects |
pg_statistic | planner statistics |
pg_tablespace | tablespaces within this database cluster |
pg_transform | transforms (data type to procedural language conversions) |
pg_trigger | triggers |
pg_ts_config | text search configurations |
pg_ts_config_map | text search configurations' token mappings |
pg_ts_dict | text search dictionaries |
pg_ts_parser | text search parsers |
pg_ts_template | text search templates |
pg_type | data types |
pg_user_mapping | mappings of users to foreign servers |
system views list
View Name |
Purpose |
pg_available_extensions |
available extensions |
pg_available_extension_versions |
available versions of extensions |
pg_config |
compile-time configuration parameters |
pg_cursors |
open cursors |
pg_file_settings |
summary of configuration file contents |
pg_group |
groups of database users |
pg_hba_file_rules |
summary of client authentication configuration file contents |
pg_indexes |
indexes |
pg_locks |
locks currently held or awaited |
pg_matviews |
materialized views |
pg_policies |
policies |
pg_prepared_statements |
prepared statements |
pg_prepared_xacts |
prepared transactions |
pg_publication_tables |
publications and their associated tables |
pg_replication_origin_status |
information about replication origins, including replication progress |
pg_replication_slots |
replication slot information |
pg_roles |
database roles |
pg_rules |
rules |
pg_seclabels |
security labels |
pg_sequences |
sequences |
pg_settings |
parameter settings |
pg_shadow |
database users |
pg_stats |
planner statistics |
pg_tables |
tables |
pg_timezone_abbrevs |
time zone abbreviations |
pg_timezone_names |
time zone names |
pg_user |
database users |
pg_user_mappings |
user mappings |
pg_views |
views |
다음은 주로 사용되는 system catalog 및 view에 대한 설명이다.
▶ System Catalogs (시스템 카탈로그)
-
pg_class (\dS)
Table, Index, Sequence, View 에 대한 종합적인 정보를 담고 있다.
Name
Type
References
Description
relname
name
Name of the table, index, view, etc.
relowner
oid
pg_authid.oid
Owner of the relation
relnatts
int2
Number of user columns in the relation (system columns not counted). There must be this many corresponding entries in pg_attribute. See also pg_attribute.attnum. -
pg_constraint
constraint에 대한 정보를 담고 있다.
Name Type References Description conname name Constraint name (not necessarily unique!) contype char c = check constraint, f = foreign key constraint, p = primary key constraint, u = unique constraint, t = constraint trigger, x = exclusion constraint -
pg_database (\l)
해당 클러스터에 속한 database 정보를 담고 있다.
Name Type References Description datname name Database name datdba oid pg_authid.oid Owner of the database, usually the user who created it encoding int4 Character encoding for this database (pg_encoding_to_char() can translate this number to the encoding name) datcollate name LC_COLLATE for this database datctype name LC_CTYPE for this database datacl aclitem[] Access privileges; see GRANT and REVOKE for details -
pg_extension (\dx)
해당 클러스터에 설치된 extension에 대한 정보를 담고 있다.
Name Type References Description extname name Name of the extension extowner oid pg_authid.oid Owner of the extension extversion text Version name for the extension -
pg_namespace (\du)
schema 정보를 담고 있다.
Name Type References Description oid oid Row identifier (hidden attribute; must be explicitly selected) nspname name Name of the namespace nspowner oid pg_authid.oid Owner of the namespace nspacl aclitem[] Access privileges; see GRANT and REVOKE for details -
pg_tablespace (\db)
해당 클러스터에 속한 tablespace에 대한 정보를 담고 있다.
Name Type References Description spcname name Tablespace name spcowner oid pg_authid.oid Owner of the tablespace, usually the user who created it
Name
▶ System Views (시스템 뷰)
-
pg_available_extensions
사용 가능한 extension에 대한 정보를 담고 있다.
Name Type Description name name Extension name default_version text Name of default version, or NULL if none is specified installed_version text Currently installed version of the extension, or NULL if not installed comment text Comment string from the extension's control file -
pg_file_settings
config file에 설정된 내용에 대한 정보를 담고 있다.
Name Type Description sourcefile text Full path name of the configuration file sourceline integer Line number within the configuration file where the entry appears seqno integer Order in which the entries are processed (1..n) name text Configuration parameter name setting text Value to be assigned to the parameter applied boolean True if the value can be applied successfully error text If not null, an error message indicating why this entry could not be applied -
pg_group
데이터베이스 사용자 그룹에 대한 정보를 담고 있다.
Name Type References Description groname name pg_authid.rolname Name of the group grosysid oid pg_authid.oid ID of this group grolist oid[] pg_authid.oid An array containing the IDs of the roles in this group -
pg_indexes
인덱스 정보를 담고 있다.
Name Type References Description schemaname name pg_namespace.nspname Name of schema containing table and index tablename name pg_class.relname Name of table the index is for indexname name pg_class.relname Name of index tablespace name pg_tablespace.spcname Name of tablespace containing index (null if default for database) indexdef text Index definition (a reconstructed CREATE INDEX command) -
Database role에 대한 정보를 담고 있다.
Name Type References Description rolname name Role name rolsuper bool Role has superuser privileges rolinherit bool Role automatically inherits privileges of roles it is a member of rolcreaterole bool Role can create more roles rolcreatedb bool Role can create databases rolcanlogin bool Role can log in. That is, this role can be given as the initial session authorization identifier rolreplication bool Role is a replication role. A replication role can initiate replication connections and create and drop replication slots. rolconnlimit int4 For roles that can log in, this sets maximum number of concurrent connections this role can make. -1 means no limit. rolpassword text Not the password (always reads as ********) rolbypassrls bool Role bypasses every row level security policy oid oid pg_authid.oid ID of role -
pg_settings
config parameter에 대한 정보를 담고 있다.
Name Type Description name text Run-time configuration parameter name setting text Current value of the parameter unit text Implicit unit of the parameter boot_val text Parameter value assumed at server startup if the parameter is not otherwise set reset_val text Value that RESET would reset the parameter to in the current session -
pg_shadow
데이터베이스 사용자에 대한 정보를 담고 있다.
Name Type References Description usename name pg_authid.rolname User name usesysid oid pg_authid.oid ID of this user usecreatedb bool User can create databases usesuper bool User is a superuser userepl bool User can initiate streaming replication and put the system in and out of backup mode. usebypassrls bool User bypasses every row level security policy passwd text Password (possibly encrypted); null if none. See pg_authid for details of how encrypted passwords are stored. -
pg_stats
planner 통계정보를 담고 있다.
Name Type References Description schemaname name pg_namespace.nspname Name of schema containing table tablename name pg_class.relname Name of table attname name pg_attribute.attname Name of the column described by this row inherited bool If true, this row includes inheritance child columns, not just the values in the specified table null_frac real Fraction of column entries that are null avg_width integer Average width in bytes of column's entries n_distinct real If greater than zero, the estimated number of distinct values in the column. If less than zero, the negative of the number of distinct values divided by the number of rows. (The negated form is used when ANALYZE believes that the number of distinct values is likely to increase as the table grows; the positive form is used when the column seems to have a fixed number of possible values.) For example, -1 indicates a unique column in which the number of distinct values is the same as the number of rows. most_common_vals anyarray A list of the most common values in the column. (Null if no values seem to be more common than any others.) most_common_freqs real[] A list of the frequencies of the most common values, i.e., number of occurrences of each divided by total number of rows. (Null when most_common_vals is.) histogram_bounds anyarray A list of values that divide the column's values into groups of approximately equal population. The values in most_common_vals, if present, are omitted from this histogram calculation. (This column is null if the column data type does not have a < operator or if the most_common_vals list accounts for the entire population.) correlation real Statistical correlation between physical row ordering and logical ordering of the column values. This ranges from -1 to +1. When the value is near -1 or +1, an index scan on the column will be estimated to be cheaper than when it is near zero, due to reduction of random access to the disk. (This column is null if the column data type does not have a < operator.) most_common_elems anyarray A list of non-null element values most often appearing within values of the column. (Null for scalar types.) most_common_elem_freqs real[] A list of the frequencies of the most common element values, i.e., the fraction of rows containing at least one instance of the given value. Two or three additional values follow the per-element frequencies; these are the minimum and maximum of the preceding per-element frequencies, and optionally the frequency of null elements. (Null when most_common_elems is.) elem_count_histogram real[] A histogram of the counts of distinct non-null element values within the values of the column, followed by the average number of distinct non-null elements. (Null for scalar types.) -
pg_tables
Table에 대한 정보를 담고 있다.
Name Type References Description schemaname name pg_namespace.nspname Name of schema containing table tablename name pg_class.relname Name of table tableowner name pg_authid.rolname Name of table's owner tablespace name pg_tablespace.spcname Name of tablespace containing table (null if default for database) hasindexes boolean pg_class.relhasindex True if table has (or recently had) any indexes hasrules boolean pg_class.relhasrules True if table has (or once had) rules hastriggers boolean pg_class.relhastriggers True if table has (or once had) triggers rowsecurity boolean pg_class.relrowsecurity True if row security is enabled on the table -
pg_user
데이터베이스 사용자에 대한 정보를 담고 있다.
Name Type Description usename name User name usesysid oid ID of this user usecreatedb bool User can create databases usesuper bool User is a superuser userepl bool User can initiate streaming replication and put the system in and out of backup mode. usebypassrls bool User bypasses every row level security policy passwd text Not the password (always reads as ********) valuntil abstime Password expiry time (only used for password authentication) useconfig text[] Session defaults for run-time configuration variables -
pg_views
View에 대한 정보를 담고 있다.
Name Type References Description schemaname name pg_namespace.nspname Name of schema containing view viewname name pg_class.relname Name of view viewowner name pg_authid.rolname Name of view's owner definition text View definition (a reconstructed SELECT query)