目录
- [psql 介绍](#psql 介绍)
- [clusterdb -- cluster a PostgreSQL database](#clusterdb – cluster a PostgreSQL database)
- [pgbench 简单介绍](#pgbench 简单介绍)
- 其他工具介绍
psql 介绍
psql 是 PostgreSQL 中的一个命令行交互式客户端工具,类似于 MySQL 中的 mysql client 以及 Oracle 中的 sqlplus。
特点
- 使用起来简单,支持很多简便命令。
- 单击 Tab 键自动补全的强大功能。
- 对于初学者来说,也可以使用 PostgreSQL 中图形化客户端工具(如 pgAdmin)来操作 PostgreSQL 数据库。
psql 的常用命令
psql -h 查看如何连接 pg-server。
"h" 命令
使用 psql 工具需要记住的第一个命令是 \h,该命令用于查询 SQL 语句的语法。使用 \h 命令可以查看各种 SQL 语句的语法,非常方便,比如忘记如何创建 user。
"d" 命令
该命令将显示每个匹配 "pattern"(表、视图、索引、序列)的信息,包括对象中所有的列、各列的数据类型、表空间(如果不是默认的)和所有特殊属性(诸如 "NOT NULL" 或默认值等)等。
案例
\d命令后什么都不带,将列出当前数据库中的所有表。\d命令后面跟一个表名,表示显示这个表的结构定义。\d命令也可以用于显示索引信息。\d命令后面的表名或索引名中也可以使用通配符如*或?等。- 使用
\d+命令可以显示比\d命令的执行结果更详细的信息,除了前面介绍的信息,还会显示所有与表的列关联的注释,以及表中出现的 OID。
匹配不同对象类型的 "d" 命令
- 如果只想显示匹配的表,可以使用
\dt命令。 - 如果只想显示索引,可以使用
\di命令。 - 如果只想显示序列,可以使用
\ds命令。 - 如果只想显示视图,可以使用
\dv命令。 - 如果想显示函数,可以使用
\df命令。
其他相关命令
\timing显示执行 SQL 语句的时间。- 要想列出数据库中的所有角色或用户,可以使用
\du或\dg命令。
指定客户端字符集的命令
使用 \encoding utf8; 命令设置客户端的字符编码为 "utf8"。
格式化输出的 \pset 命令
psql 中执行 SQL 语句后输出的内容默认只有内边框。
\pset border 2像 MySQL 一样有内外边框。\pset border 0可以不用边框展示。\o file可以把查询导出到文件。
示例:
sql
\o 111.txt
select * from ttt order by name;
"\x" 命令
使用 \x 命令可以把按行展示的数据变成按列展示。
"\i" 命令
用于执行存储在外部文件中的 SQL 语句或命令,等同于 psql -x -f getrunsql。
输出信息的 "echo" 命令
\echo 命令用于输出一行信息。
示例:
osdba=# \echo hello world
hello world
命令 "e"
可以用于编辑文件,也可用于编辑系统中已存在的函数或视图定义。编辑完成后退出编辑器并回到 psql 中时会立即执行该命令。
其他命令
\? 命令来显示帮助。
clusterdb -- cluster a PostgreSQL database
CLUSTER 指示 PostgreSQL 基于 index_name 指定的索引聚簇由 table_name 指定的表。这个索引必须是表 table_name 上已定义的索引。
用途
如果对某些特定数据的访问较多,而且有一个索引将这些数据分组,那么使用 CLUSTER 会非常有益处。如果从一个表中请求一定索引范围的值,或者是一个索引值对应多行,CLUSTER 也会有助于应用,因为如果索引标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。
案例
-
按照索引
employees_ind的顺序对 employees 表进行聚簇:sqlCLUSTER employees USING employees_ind; -
使用以前用过的同一个索引对 employees 表进行聚簇:
sqlCLUSTER employees; -
对以前聚簇过的所有表重新聚簇:
sqlCLUSTER;
查询聚簇索引表
sql
SELECT indexname, indexed FROM pg_indexes WHERE tablename = 'ttt';
缺点
CLUSTER 在聚簇的处理过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间,至少是表大小和索引大小的和。
pgbench 简单介绍
pgbench 是 PostgreSQL 附带的一个性能测试工具,它执行一系列相同的 SQL 语句,然后进行一些事务操作,最终计算平均事务,用来衡量数据库性能。同时该工具也支持用户自定义测试脚本。
以下是该工具的一些参数与含义:
-i测试表初始化-sscale,比例因子,该比例因子乘上 10,000,000 为 pgbench_accounts 表中数据数-c客户端连接数-jpgbench 运行客户端的线程数-t每个客户端执行的事务数,默认为 10,该参数与-T互斥-T在一定时间内执行测试,度量可执行的事务数,而不是固定事务数,该参数与-t互斥-f采用自定义脚本进行测试
示例测试命令:
bash
pgbench -h 10.172.172.172 -U postgres -s 500 -p 5432 -f mytest -t 10 -c 5000 -j 5000 test
其他工具介绍
pg_amcheck- checks for corruption in one or more PostgreSQL databasespg_basebackup- take a base backup of a PostgreSQL clusterpgbench- run a benchmark test on PostgreSQLpg_config- retrieve information about the installed version of PostgreSQLpg_dump- extract a PostgreSQL database into a script file or other archivepg_dumpall- extract a PostgreSQL database cluster into a script filepg_isready- check the connection status of a PostgreSQL serverpg_receiveval- stream write-ahead logs from a PostgreSQL serverpg_recvlogical- control PostgreSQL logical decoding streamspg_restore- restore a PostgreSQL database from an archive file created bypg_verifybackup- verify the integrity of a base backup of a PostgreSQL clusterpsql- PostgreSQL interactive terminalreindexdb- reindex a PostgreSQL databasevacuumdb- garbage-collect and analyze a PostgreSQL database