PostgreSQL里面的命令有哪些

46次阅读
没有评论

共计 5484 个字符,预计需要花费 14 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 PostgreSQL 里面的命令有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

PostgreSQL 的功能还是很丰富的,有序列,支持 db link,基本 Oracle 里有的概念它这里也有,目前来看不支持 package。

风格和 Oracle 也类似,没有 MySQL 中快捷方便的 show create table 这样的语句。

从我的使用习惯来说,我基本关注以下的一些方面。

查看数据库的配置

可以直接使用 \l 选项列出所有的数据库来,字符集,基本的配置都一目了然,有点 Oracle 12c 中的 show pdbs 的感觉。

从进程情况来看,PG 是多进程多线程的架构设计。

如果查看当前数据库,可以使用 current_database()。

postgres=# select current_database();

 current_database 

——————

 postgres

2. 查看用户信息

可以使用 \dn 来得到 schema 的相关信息,在 PG 里面的 schema 和 user 还是有一些差别,在其他数据库 schema 基本就是 user 了。

postgres-# \dn

  List of schemas

  Name  |  Owner   

——–+———-

 public | postgres

我们创建一个 schema, 然后使用 \dn 来查看。

postgres=# create schema jeanron100;

CREATE SCHEMA

postgres=# \dn

    List of schemas

    Name    |  Owner   

————+———-

 jeanron100 | postgres

 public     | postgres

或者使用数据字典 pg_authid 来查看。

postgres=# select *from pg_authid;

关于 schema 的概念,我们可以创建一个表 test,

postgres=# create table test(id int);

CREATE TABLE

可以看到这个是一个 public 的 schema

postgres=# \d

        List of relations

 Schema | Name | Type  |  Owner   

——–+——+——-+———-

 public | test | table | postgres

如果使用 \d 来查看字段信息,结果如下:

postgres=# \d test

     Table public.test

 Column |  Type   | Modifiers 

——–+———+———–

 id     | integer | 

还可以使用 pg_users 来查看,比如我创建了一个用户 replica,就会有相应的配置。

select *from pg_user;

 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig 

———-+———-+————-+———-+———+————–+———-+———-

 postgres |       10 | t           | t        | t       | t            | ******** |          | 

 replica  |    16384 | f           | f        | t       | f            | ******** |          | 

查看当前的 schema 信息,可以使用 current_schema()

3. 查看会话连接信息

如果查看 PG 中的会话信息,可以使用 select * from pg_stat_activity;

如果新增了一个连接,开启了一个会话,在服务端是会有一个影子进程存在的。可以根据 pid 找到对应的会话。包括执行的 SQL 都可以看到,如果有多个会话,就是多条记录。

postgres=# select * from pg_stat_activity;

-[RECORD 1]—-+——————————–

datid            | 13241

datname          | postgres

pid              | 20644

usesysid         | 10

usename          | postgres

application_name | psql

client_addr      | 

client_hostname  | 

client_port      | -1

backend_start    | 2018-03-25 05:38:16.988057+08

xact_start       | 2018-03-25 05:48:08.113649+08

query_start      | 2018-03-25 05:48:08.113649+08

state_change     | 2018-03-25 05:48:08.113653+08

waiting          | f

state            | active

backend_xid      | 

backend_xmin     | 1753

query            | select * from pg_stat_activity;

4.show tables 的类似方法

PG 里面暂时没有找到 show tables 这种的快捷方式,目前发现有两类方式。

一种是通过数据字典 pg_tables 来查看,相当于 Oracle 里面的 all_tables

或者是使用 information_schema 里面的 tables 来查看。

postgres=# select *from information_schema.tables;

postgres=# select *from pg_tables;

PG 里面的 information_schema 比较特别,在数据库中直接 \l 无法看到,但是确确实实存在,着数据字典风格和 MySQL 很相似。

5. 用户的权限查看

查看权限可以使用 \dp 来完成,或者等价的命令 \z 来实现。

postgres=# \dp

                            Access privileges

 Schema | Name | Type  | Access privileges | Column privileges | Policies 

——–+——+——-+——————-+——————-+———-

 public | test | table |                   |                   | 

6. 建表语句

建表语句,目前还没有发现 show create table 这种快捷的方式,不过可以通过 pg_dump 或者根据数据字典的信息来拼接了。

7. 表空间信息

表空间的部分相对比较清晰,可以直接使用 \db 来完成。

postgres=# \db

       List of tablespaces

    Name    |  Owner   | Location 

————+———-+———-

 pg_default | postgres | 

 pg_global  | postgres | 

或者使用 pg_tablespace

postgres=# select *from pg_tablespace; 

  spcname   | spcowner | spcacl | spcoptions 

————+———-+——–+————

 pg_default |       10 |        | 

 pg_global  |       10 |        | 

8. 对象存储信息

这部分信息可以参考 pg_tables,还有一些更细节的

更多的细节还有待求证和发现。

9. 查看锁的信息

查看锁的信息可以使用 pg_locks 来得到。

postgres=# select *from pg_locks;

-[RECORD 1]——+—————-

locktype           | relation

database           | 13241

relation           | 11673

page               | 

tuple              | 

virtualxid         | 

transactionid      | 

classid            | 

objid              | 

objsubid           | 

virtualtransaction | 4/81

pid                | 20644

mode               | AccessShareLock

granted            | t

fastpath           | t

10. 查看数据库参数

这部分的功能不是很理解,因为没有找到很便捷的方式。

比如查看缓存的设置

postgres=#  show shared_buffers;

-[RECORD 1]–+——

shared_buffers | 128MB

或者根据参数文件 postgresql.conf 来查看。

11. 显示数据库的运行状态

这个信息毫无疑问,建议还是从 pg_stats_activity 来查看。

12. 查看数据字典的信息

这应该是本小节的重点,通过查看视图可以看到,有 100 多个视图。

postgres=# select count(*)from pg_views;

-[RECORD 1]

count | 112

还可以使用 information_schema 中的信息来补充。

13. 查看索引的信息

查看索引的信息,可以使用 \di 来完成,非常快捷。

14. 查看执行计划

查看执行计划一般可以根据 explain 来得到,但是还有几类方法,对结果做格式化处理,比如转化为 json 或者 xml 的格式等。

postgres=# explain select *from test;

-[RECORD 1]——————————————————

QUERY PLAN | Seq Scan on test  (cost=0.00..35.50 rows=2550 width=4)

得到 json 格式的执行计划。

postgres=# explain(format json) select *from test;

-[RECORD 1]——————————

QUERY PLAN | [                             +

           |   {                           +

           |      Plan : {                 +

           |        Node Type : Seq Scan ,+

           |        Relation Name : test ,+

           |        Alias : test ,        +

           |        Startup Cost : 0.00,   +

           |        Total Cost : 35.50,    +

           |        Plan Rows : 2550,      +

           |        Plan Width : 4         +

           |     }                         +

           |   }                           +

           | ]

或者做一些分析,能够得到更细节的执行信息。

postgres=# explain analyze select *from test;

                                            QUERY PLAN                                           

————————————————————————————————–

 Seq Scan on test  (cost=0.00..35.50 rows=2550 width=4) (actual time=0.001..0.001 rows=0 loops=1)

 Planning time: 0.018 ms

 Execution time: 0.009 ms

15. 查看存储过程

查看存储过程就是比较单薄的。可以直接使用 pg_proc 来得到详细的信息。

pg_proc

16. 存储过程的调度执行

目前没有看到很直接的方式,这部分感觉还不够强大。

17. 事务隔离级别

根据公司现状和业务规模的不断扩大,其实技术上也是不断地改进和积累,事务方面的处理也是如此,等规模达到了一定的量级,这部分的要求就会很明确。所以很多开发同学对于锁机制都很感兴趣。

查看事务隔离级别的两种 SQL 语句。

postgres=#  show default_transaction_isolation;

 default_transaction_isolation 

——————————-

 read committed

查看当前的事务隔离级别设置。

postgres=# show transaction_isolation;

 transaction_isolation 

———————–

 read committed

以上是“PostgreSQL 里面的命令有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计5484字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)