一、psql介绍¶
psql是PostgreSQL中的一个命令行交互式客户端工具,类似于mysql中的 mysql client 以及oralce 中的 sqlplus
1.1 特点¶
- 使用起来简单,支持很多简便命令
- 单击Tab键自动补全的强大功能
对于初学者来说,也可以使用PostgreSQL中图形化客户端工具(如pgAdmin)来操作PostgreSQL数据库
1.2 psql的常用命令¶
psql -h 查看如何连接pg-server
1.2.1 “\h”命令¶
使用psql工具需要记住的第一个命令是“\h”,该命令用于查询SQL语句的语法,使用“\h”命令可以查看各种SQL 语句的语法,非常方便
比如忘记如何创建user
\h create user
1.2.2 “\d”命令¶
该命令将显示每个匹配“pattern”(表、视图、索引、序列)的信息,包括对象中所有的列、各列的数据类型、 表空间(如果不是默认的)和所有特殊属性(诸如“OT NULL”或默认值等)等
案例
- “\d”命令后什么都不带,将列出当前数据库中的所有表
- “\d”命令后面跟一个表名,表示显示这个表的结构定义
- “\d”命令也可以用于显示索引信息
- “\d”命令后面的表名或索引名中也可以使用通配符 如“*”或“?”等
- 使用“\d+”命令可以显示比“\d”命令的执行结果更详细的信息,除了前面介绍的信息,还会显示所有与表的 列关联的注释,以及表中出现的OID
- 匹配不同对象类型的“\d”命令如下
- 如果只想显示匹配的表,可以使用“\dt”命令。 ·
- 如果只想显示索引,可以使用“\di”命令。
- 如果只想显示序列,可以使用“\ds”命令。
- 如果只想显示视图,可以使用“\dv”命令。 ·如果想显示函数,可以使用“\df”命令。
- \timing 显示执行SQL语句的时间
- 要想列出数据库中的所有角色或用户,可以使用“\du”或“\dg”命令
1.2.3 指定客户端字符集的命令¶
使用“\encoding utf8;”命令设置客户端的字符编码为“utf8”
1.2.4 格式化输出的 \pset 命令¶
psql中执行SQL语句后输出的内容是只有内边框
\pset border 2 像mysql一样有内外边框
\pset border 0 可以不用边框展示
\o file 可以把查询导出到文件
\o 111.txt
select * from ttt order by name;
1.3 “\x”命令¶
使用“\x”命令可以把按行展示的数据变成按列展示,
1.4 “\i”命令¶
用于执行存储在外部文件中的 SQL 语句或命令
\i test.sql
等同于
psql -x -f getrunsql
1.5 输出信息的“\echo”命令¶
“\echo”命令用于输出一行信息
osdba=# \echo hello word hello word
1.6 命令“\e”¶
可以用于编辑文件,也可用于编辑系统中已存在的函数或视图定义,下面来举例说明此命令的使用方法 当编辑完成后退出编辑器并回到psql中时会立即执行该命令
1.7 其他命令¶
“\?” 命令来显示帮助
二、clusterdb — cluster a PostgreSQL database¶
CLUSTER指示PostgreSQL基于index_name指定的索引聚簇由table_name指定的表。这个索引必须是表 table_name上已定义的索引。
2.1 用途¶
如果对某些特定数据的访问较多,而且有一个索引将这些数据分组,那么使用CLUSTER会非常有益处。 如果 从一个表中请求一定索引范围的值,或者是一个索引值对应多行,CLUSTER也会有助于应用,因为如果索引 标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时 间,加速了查询。
2.2 案例¶
按照索引employees_ind的顺序对employees表进行聚簇:
CLUSTER employees USING employees_ind;
使用以前用过的同一个索引对employees表进行聚簇:
CLUSTER employees;
对以前聚簇过的所有表重新聚簇:
CLUSTER;
查询现在聚族索引表
SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'ttt';
2.3 缺点¶
CLUSTER在聚簇的处理过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个 索引的临时拷贝。因此,需要磁盘上有足够的剩余空间,至少是表大小和索引大小的和。
三、pgbench 简单介绍¶
pgbench 是 postgreSQL 附带的一个性能测试工具,它执行一系列相同的 SQL 语句,然后进行一些事务操 作,最终计算平均事务,用来衡量数据库性能。同时该工具也支持用户自定义测试脚本,本测试将在内建脚本 上修改进行测试,以下是该工具的一些参数与含义:
- -i 测试表初始化
- -s scale,比例因子,该比例因子乘上 10,000,000 为 pgbench_accounts 表中数据数 -c 客户端连接数
- -j pgbench 运行客户端的线程数
- -t 每个客户端执行的事务数,默认为 10,该参数与 -T 互斥
- -T 在一定时间内执行测试,度量可执行的事务数,而不是固定事务数,该参数与 -t 互斥
- -f 采用自定义脚本进行测试
测试命令
$ pgbench -h 10.172.172.172 -U postgres -s 500 -p 5432 -f mytest -t 10 -c 5000 -j 5000 test
四、其他工具介绍¶
