近两天总结了下PostgreSQL的基本操作命令,对PostgreSQL也有了一个基本的认识。
创新互联专注于成都网站设计、成都做网站、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
PostgreSQL的功能还是很丰富的,有序列,支持db link,基本Oracle里有的概念它这里也有,目前来看不支持package。
风格和Oracle也类似,没有MySQL中快捷方便的show create table 这样的语句。
从我的使用习惯来说,我基本关注以下的一些方面。
查看数据库的配置
查看用户信息
查看会话连接信息
show tables的类似方法
用户的权限查看
建表语句
表空间信息
对象存储信息
查看锁的信息
查看数据库参数
显示数据库的运行状态
查看数据字典的信息
查看索引的信息
查看执行计划
查看存储过程
存储过程的调度执行
事务隔离级别
1.查看数据库的配置
可以直接使用\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里面的一些命令小结
路径分享:http://www.gawzjz.com/qtweb/news17/166967.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联