日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PostgreSQL里面的一些命令小結

近兩天總結了下PostgreSQL的基本操作命令,對PostgreSQL也有了一個基本的認識。

創(chuàng)新互聯(lián)專注于成都網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)頁設計、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務”的宗旨,從客戶的利益和觀點出發(fā),讓客戶在網(wǎng)絡營銷中找到自己的駐足之地。尊重和關懷每一位客戶,用嚴謹?shù)膽B(tài)度對待客戶,用專業(yè)的服務創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

PostgreSQL的功能還是很豐富的,有序列,支持db link,基本Oracle里有的概念它這里也有,目前來看不支持package。

風格和Oracle也類似,沒有MySQL中快捷方便的show create table 這樣的語句。

從我的使用習慣來說,我基本關注以下的一些方面。

  1. 查看數(shù)據(jù)庫的配置

  2. 查看用戶信息

  3. 查看會話連接信息

  4. show tables的類似方法

  5. 用戶的權限查看

  6. 建表語句

  7. 表空間信息

  8. 對象存儲信息

  9. 查看鎖的信息

  10. 查看數(shù)據(jù)庫參數(shù)

  11. 顯示數(shù)據(jù)庫的運行狀態(tài)

  12. 查看數(shù)據(jù)字典的信息

  13. 查看索引的信息

  14. 查看執(zhí)行計劃

  15. 查看存儲過程

  16. 存儲過程的調(diào)度執(zhí)行

  17. 事務隔離級別 

1.查看數(shù)據(jù)庫的配置

可以直接使用\l 選項列出所有的數(shù)據(jù)庫來,字符集,基本的配置都一目了然,有點Oracle 12c中的show pdbs的感覺。

從進程情況來看,PG是多進程多線程的架構設計。

如果查看當前數(shù)據(jù)庫,可以使用current_database()。 

 
 
 
 
  1. postgres=# select current_database();  
  2.  current_database   
  3. ------------------  
  4.  postgres  

2.查看用戶信息

可以使用\dn來得到schema的相關信息,在PG里面的schema和user還是有一些差別,在其他數(shù)據(jù)庫schema基本就是user了。 

 
 
 
 
  1. postgres-# \dn  
  2.   List of schemas  
  3.   Name  |  Owner    
  4. --------+----------  
  5.  public | postgres  

我們創(chuàng)建一個schema,然后使用\dn來查看。 

 
 
 
 
  1. postgres=# create schema jeanron100;  
  2. CREATE SCHEMA  
  3. postgres=# \dn  
  4.     List of schemas  
  5.     Name    |  Owner   
  6. ------------+----------  
  7.  jeanron100 | postgres  
  8.  public     | postgres  

或者使用數(shù)據(jù)字典pg_authid來查看。 

 
 
 
 
  1. postgres=# select *from pg_authid; 

關于schema的概念,我們可以創(chuàng)建一個表test, 

 
 
 
 
  1. postgres=# create table test(id int);  
  2. CREATE TABLE  

可以看到這個是一個public的schema

 
 
 
 
  1. postgres=# \d  
  2.         List of relations  
  3.  Schema | Name | Type  |  Owner     
  4. --------+------+-------+----------  
  5.  public | test | table | postgres 

如果使用\d來查看字段信息,結果如下:

 
 
 
 
  1. postgres=# \d test  
  2.      Table "public.test"  
  3.  Column |  Type   | Modifiers   
  4. --------+---------+-----------  
  5.  id     | integer |  

還可以使用pg_users來查看,比如我創(chuàng)建了一個用戶replica,就會有相應的配置。

 
 
 
 
  1. select *from pg_user;  
  2.  usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig   
  3. ----------+----------+-------------+----------+---------+--------------+----------+----------  
  4.  postgres |       10 | t           | t        | t       | t            | ******** |          |   
  5.  replica  |    16384 | f           | f        | t       | f            | ******** |          |  

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

3.查看會話連接信息

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

如果新增了一個連接,開啟了一個會話,在服務端是會有一個影子進程存在的??梢愿鶕?jù)pid找到對應的會話。包括執(zhí)行的SQL都可以看到,如果有多個會話,就是多條記錄。

 
 
 
 
  1. postgres=# select * from pg_stat_activity;  
  2. -[ RECORD 1 ]----+--------------------------------  
  3. datid            | 13241  
  4. datname          | postgres  
  5. pid              | 20644  
  6. usesysid         | 10 
  7. usename          | postgres  
  8. application_name | psql  
  9. client_addr      |   
  10. client_hostname  |   
  11. client_port      | -1  
  12. backend_start    | 2018-03-25 05:38:16.988057+08  
  13. xact_start       | 2018-03-25 05:48:08.113649+08  
  14. query_start      | 2018-03-25 05:48:08.113649+08  
  15. state_change     | 2018-03-25 05:48:08.113653+08  
  16. waiting          | f  
  17. state            | active  
  18. backend_xid      |   
  19. backend_xmin     | 1753  
  20. query            | select * from pg_stat_activity; 

4.show tables的類似方法

PG里面暫時沒有找到show tables這種的快捷方式,目前發(fā)現(xiàn)有兩類方式。

一種是通過數(shù)據(jù)字典pg_tables來查看,相當于Oracle里面的all_tables

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

 
 
 
 
  1. postgres=# select *from information_schema.tables;  
  2. postgres=# select *from pg_tables; 

PG里面的information_schema比較特別,在數(shù)據(jù)庫中直接\l無法看到,但是確確實實存在,著數(shù)據(jù)字典風格和MySQL很相似。

5.用戶的權限查看

查看權限可以使用\dp來完成,或者等價的命令\z來實現(xiàn)。

 
 
 
 
  1. postgres=# \dp  
  2.                             Access privileges  
  3.  Schema | Name | Type  | Access privileges | Column privileges | Policies   
  4. --------+------+-------+-------------------+-------------------+----------  
  5.  public | test | table |                   |                   |   

6.建表語句

建表語句,目前還沒有發(fā)現(xiàn)show create table這種快捷的方式,不過可以通過pg_dump或者根據(jù)數(shù)據(jù)字典的信息來拼接了。 

7.表空間信息

表空間的部分相對比較清晰,可以直接使用\db來完成。

 
 
 
 
  1. postgres=# \db  
  2.        List of tablespaces  
  3.     Name    |  Owner   | Location   
  4. ------------+----------+----------  
  5.  pg_default | postgres |   
  6.  pg_global  | postgres |  

或者使用pg_tablespace

 
 
 
 
  1. postgres=# select *from pg_tablespace;    
  2.   spcname   | spcowner | spcacl | spcoptions   
  3. ------------+----------+--------+------------  
  4.  pg_default |       10 |        |   
  5.  pg_global  |       10 |        |   

8.對象存儲信息

這部分信息可以參考pg_tables,還有一些更細節(jié)的

更多的細節(jié)還有待求證和發(fā)現(xiàn)。

9.查看鎖的信息

查看鎖的信息可以使用pg_locks來得到。

 
 
 
 
  1. postgres=# select *from pg_locks;  
  2. -[ RECORD 1 ]------+----------------  
  3. locktype           | relation  
  4. database           | 13241  
  5. relation           | 11673  
  6. page               |  
  7. tuple              |   
  8. virtualxid         |   
  9. transactionid      |   
  10. classid            |   
  11. objid              |   
  12. objsubid           |   
  13. virtualtransaction | 4/81  
  14. pid                | 20644  
  15. mode               | AccessShareLock  
  16. granted            | t  
  17. fastpath           | t 

10.查看數(shù)據(jù)庫參數(shù)

這部分的功能不是很理解,因為沒有找到很便捷的方式。

比如查看緩存的設置

 
 
 
 
  1. postgres=#  show shared_buffers;  
  2. -[ RECORD 1 ]--+------  
  3. shared_buffers | 128MB 

或者根據(jù)參數(shù)文件postgresql.conf來查看。

11.顯示數(shù)據(jù)庫的運行狀態(tài)

這個信息毫無疑問,建議還是從pg_stats_activity來查看。 

12.查看數(shù)據(jù)字典的信息

這應該是本小節(jié)的重點,通過查看視圖可以看到,有100多個視圖。

 
 
 
 
  1. postgres=# select count(*)from pg_views;  
  2. -[ RECORD 1 ]  
  3. count | 112 

還可以使用information_schema中的信息來補充。 

13.查看索引的信息

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

14.查看執(zhí)行計劃

查看執(zhí)行計劃一般可以根據(jù)explain來得到,但是還有幾類方法,對結果做格式化處理,比如轉化為json或者xml的格式等。

 
 
 
 
  1. postgres=# explain select *from test;  
  2. -[ RECORD 1 ]------------------------------------------------------  
  3. QUERY PLAN | Seq Scan on test  (cost=0.00..35.50 rows=2550 width=4)  
  4. 得到json格式的執(zhí)行計劃。  
  5. postgres=# explain(format json) select *from test;  
  6. -[ RECORD 1 ]------------------------------  
  7. QUERY PLAN | [                             +  
  8.            |   {                           +  
  9.            |     "Plan": {                 +  
  10.            |       "Node Type": "Seq Scan",+  
  11.            |       "Relation Name": "test",+  
  12.            |       "Alias": "test",        +  
  13.            |       "Startup Cost": 0.00,   +  
  14.            |       "Total Cost": 35.50,    +  
  15.            |       "Plan Rows": 2550,      +  
  16.            |       "Plan Width": 4         +  
  17.            |     }                         +  
  18.            |   }                           +  
  19.            | ] 

或者做一些分析,能夠得到更細節(jié)的執(zhí)行信息。

 
 
 
 
  1. postgres=# explain analyze select *from test;  
  2.                                             QUERY PLAN                                        
  3.  
  4. --------------------------------------------------------------------------------------------------  
  5.  Seq Scan on test  (cost=0.00..35.50 rows=2550 width=4) (actual time=0.001..0.001 rows=0 loops=1)  
  6.  Planning time: 0.018 ms  
  7.  Execution time: 0.009 ms 

15.查看存儲過程

查看存儲過程就是比較單薄的??梢灾苯邮褂胮g_proc來得到詳細的信息。

pg_proc 

16.存儲過程的調(diào)度執(zhí)行

目前沒有看到很直接的方式,這部分感覺還不夠強大。 

17.事務隔離級別

根據(jù)公司現(xiàn)狀和業(yè)務規(guī)模的不斷擴大,其實技術上也是不斷地改進和積累,事務方面的處理也是如此,等規(guī)模達到了一定的量級,這部分的要求就會很明確。所以很多開發(fā)同學對于鎖機制都很感興趣。

查看事務隔離級別的兩種SQL語句。

 
 
 
 
  1. postgres=#  show default_transaction_isolation;  
  2.  default_transaction_isolation   
  3. -------------------------------  
  4.  read committed 

查看當前的事務隔離級別設置。

 
 
 
 
  1. postgres=# show transaction_isolation;  
  2.  transaction_isolation   
  3. -----------------------  
  4.  read committed  

文章名稱:PostgreSQL里面的一些命令小結
網(wǎng)頁地址:http://www.5511xx.com/article/ccdihgc.html