2.pg工具介绍

目录


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 也会有助于应用,因为如果索引标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。

案例

  1. 按照索引 employees_ind 的顺序对 employees 表进行聚簇:

    sql 复制代码
    CLUSTER employees USING employees_ind;
  2. 使用以前用过的同一个索引对 employees 表进行聚簇:

    sql 复制代码
    CLUSTER employees;
  3. 对以前聚簇过的所有表重新聚簇:

    sql 复制代码
    CLUSTER;

查询聚簇索引表

sql 复制代码
SELECT indexname, indexed FROM pg_indexes WHERE tablename = 'ttt';

缺点

CLUSTER 在聚簇的处理过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间,至少是表大小和索引大小的和。


pgbench 简单介绍

pgbench 是 PostgreSQL 附带的一个性能测试工具,它执行一系列相同的 SQL 语句,然后进行一些事务操作,最终计算平均事务,用来衡量数据库性能。同时该工具也支持用户自定义测试脚本。

以下是该工具的一些参数与含义:

  • -i 测试表初始化
  • -s scale,比例因子,该比例因子乘上 10,000,000 为 pgbench_accounts 表中数据数
  • -c 客户端连接数
  • -j pgbench 运行客户端的线程数
  • -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 databases
  • pg_basebackup - take a base backup of a PostgreSQL cluster
  • pgbench - run a benchmark test on PostgreSQL
  • pg_config - retrieve information about the installed version of PostgreSQL
  • pg_dump - extract a PostgreSQL database into a script file or other archive
  • pg_dumpall - extract a PostgreSQL database cluster into a script file
  • pg_isready - check the connection status of a PostgreSQL server
  • pg_receiveval - stream write-ahead logs from a PostgreSQL server
  • pg_recvlogical - control PostgreSQL logical decoding streams
  • pg_restore - restore a PostgreSQL database from an archive file created by
  • pg_verifybackup - verify the integrity of a base backup of a PostgreSQL cluster
  • psql - PostgreSQL interactive terminal
  • reindexdb - reindex a PostgreSQL database
  • vacuumdb - garbage-collect and analyze a PostgreSQL database

相关推荐
林九生4 小时前
【MySQL/PostgreSQL】MySQL 到 PostgreSQL 数据迁移:Docker + pgloader
mysql·docker·postgresql
Mr.徐大人ゞ5 小时前
3.pg重要参数解析
postgresql
数据知道5 小时前
亿级图片链接存入 PostgreSQL,URL链接字段数据类型用哪个最合适?
数据库·postgresql
l1t5 小时前
净化SQL的PL/pgSQL函数
数据库·sql·postgresql
数据知道6 小时前
PostgreSQL实战:详解权限设置与管理全流程
数据库·postgresql
喜欢吃豆6 小时前
PostgreSQL 高维向量存储架构深度解析:架构限制、核心原理与行业解决方案
数据库·人工智能·postgresql·架构·2025博客之星
l1t6 小时前
一个在postgresql中运行很快,但是在duckdb中运行很慢的SQL
数据库·sql·postgresql·duckdb
独自归家的兔7 小时前
深度对比:PostgreSQL与MySQL的核心差异及选型指南
数据库·mysql·postgresql
数据知道8 小时前
PostgreSQL实战:窗口函数详解
数据库·postgresql