PostgreSQL 用户手册

PostgreSQL 用户手册

PostgreSQL 实例(Instance)也叫集群(Cluster),服务多个数据库,集群初始化后默认侦听 5432 端口,自带 template0,template1 和 postgres 数据库,内容一致,对于模版数据库 template1 的改动会被复制到后续新建的数据库,可以指定 template0 新建未被自定义过的数据库用于恢复 pg_dump 备份的数据库。

数据库用名字空间(Namespace),即模式( Schema)结构化管理数据库对象,如:表、函数、触发器、等等。PostgreSQL 数据库对象必属某一模式( Schema)。

数据库用户绑定系统账户,实例范围有效,分普通用户(Normal Users)与超级用户(Superusers)即管理员角色。初始化实例时生成 postgres 数据库及系统用户。

模版数据库

被用作模版的数据库在创建数据库时不应有连接,创建过程中模版数据库也无法被连接,因此 template0 数据库默认无法连接。

pg_database 相关 flags

数据库属性 作用
datistemplate true 可被所有用户用作模版
datallowconn false 禁止新连接

表空间

pg_default、pg_global 为默认表空间,存放于 PGDATA 目录,其他表空间可在 PGDATA 外,通过目录连接保存于 PGDATA/pg_tblspc/ 目录下。

oid2name

巡查 PostgreSQL 对象。

命令 作用
oid2name 查询数据库及 PGDATA/base 下的文件夹名
oid2name -s 查询表空间情况
oid2name -d postgres -Sx 查询数据库 postgres 对象对应的实际文件名

psql

PostgreSQL 原厂命令行客户端,连接 PostgreSQL 实例时默认连接与当前系统用户同名的数据库,数据库名体现在命令行提示符中。psql 接受 postgresql://username@host:port/database 格式的 LibPQ 数据库连接字符串。

命令行参数

参数 作用
-d 指定连接数据库
-l 查询现有数据库
-p 5432 指定需要连接的服务端口
-U username -W password 指定用户名、密码登录

psql 命令

以 \ 开始

命令 作用
\? 查询 psql 命令帮助
\d 查询当前数据库的表
\l 查询现有数据库
\q 退出 psql
SELECT current_date; SELECT current_time; 服务端当前时间

常用查询

表的大小

select schemaname as table_schema,
       relname as table_name,
       pg_size_pretty(pg_relation_size(relid)) as data_size
from pg_catalog.pg_statio_user_tables
order by pg_relation_size(relid) desc;
Author: njun
njun's picture
Updated: 2021/02/04