48.15. pg_database

pg_database表存储关于可用数据库的信息。数据库是用 CREATE DATABASE创建的。参考第 21 章 获取一些参数的详细含义。

和大多数系统表不同,pg_database是在一个集群里的所有数据库共享的: 每个集群只有一份pg_database拷贝,而不是每个数据库一份。

表 48-15. pg_database 字段

名字类型引用描述
oidoid 行标识符(隐藏属性; 必须明确选择)
datnamename 数据库名字
datdbaoidpg_authid.oid数据库所有人,通常为其创建者
encodingint4 数据库的字符编码方式(pg_encoding_to_char() 能够将这个数字转换为相应的编码名称)
datcollatename 这个数据库的LC_COLLATE
datctypename 这个数据库的LC_CTYPE
datistemplatebool  如果为真,则此数据库可以通过任何用户的CREATEDB 权限克隆;如果为假,那么只有超级用户或者该数据库的所有者可以克隆它。
datallowconnbool  如果为假则没有人可以连接到这个数据库。这个字段用于保护template0数据库不被更改。
datconnlimitint4  设置该数据库上允许的最大并发连接数,-1 表示无限制。
datlastsysoidoid  数据库里最后一个系统 OID ;对pg_dump特别有用。
datfrozenxidxid  该数据库中中所有在这个之前的事务 ID 已经被一个固定的("frozen") 事务 ID 替换。这用于跟踪该数据库是否需要为了防止事务 ID 重叠或者允许收缩 pg_clog而进行清理。它是针对每个表的pg_class.relfrozenxid 中的最小值。
datminmxidxid  该数据库中中所有在这个之前的 multixact ID 已经被一个事务 ID 替换。 这用于跟踪该数据库是否需要为了防止 multixact ID 重叠或者允许收缩 pg_multixact而进行清理。它是针对每个表的pg_class.relfrozenxid 中的最小值。
dattablespaceoidpg_tablespace.oid 该数据库的缺省表空间。在这个数据库里,所有pg_class.reltablespace 为零的表都将保存在这个表空间里;特别要指出的是,所有非共享的系统表也都存放在这里。
dataclaclitem[]  访问权限,参阅GRANTREVOKE获取详细信息。