成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PostgreSQL里面的一些命令小結

數據庫 其他數據庫 PostgreSQL
近兩天總結了下PostgreSQL的基本操作命令,對PostgreSQL也有了一個基本的認識。PostgreSQL的功能還是很豐富的,有序列,支持db link,基本Oracle里有的概念它這里也有,目前來看不支持package。

[[223726]]

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

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

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

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

  1. 查看數據庫的配置

  2. 查看用戶信息

  3. 查看會話連接信息

  4. show tables的類似方法

  5. 用戶的權限查看

  6. 建表語句

  7. 表空間信息

  8. 對象存儲信息

  9. 查看鎖的信息

  10. 查看數據庫參數

  11. 顯示數據庫的運行狀態

  12. 查看數據字典的信息

  13. 查看索引的信息

  14. 查看執行計劃

  15. 查看存儲過程

  16. 存儲過程的調度執行

  17. 事務隔離級別 

1.查看數據庫的配置

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

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

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

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

2.查看用戶信息

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

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

我們創建一個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  

或者使用數據字典pg_authid來查看。 

  1. postgres=# select *from pg_authid; 

關于schema的概念,我們可以創建一個表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來查看,比如我創建了一個用戶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;

如果新增了一個連接,開啟了一個會話,在服務端是會有一個影子進程存在的。可以根據pid找到對應的會話。包括執行的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這種的快捷方式,目前發現有兩類方式。

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

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

 

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

 

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

5.用戶的權限查看

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

 

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

6.建表語句

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

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,還有一些更細節的

更多的細節還有待求證和發現。

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.查看數據庫參數

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

比如查看緩存的設置

 

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

 

或者根據參數文件postgresql.conf來查看。

11.顯示數據庫的運行狀態

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

12.查看數據字典的信息

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

 

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

 

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

13.查看索引的信息

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

14.查看執行計劃

查看執行計劃一般可以根據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格式的執行計劃。  
  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.            | ] 

 

或者做一些分析,能夠得到更細節的執行信息。

 

  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.查看存儲過程

查看存儲過程就是比較單薄的。可以直接使用pg_proc來得到詳細的信息。

pg_proc 

16.存儲過程的調度執行

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

17.事務隔離級別

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

查看事務隔離級別的兩種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  

 

責任編輯:龐桂玉 來源: 楊建榮的學習筆記
相關推薦

2010-04-07 16:55:14

Unix命令

2012-06-14 13:20:44

MySQL網站架構

2023-09-04 16:55:18

2010-01-15 10:34:59

Linux命令行操作

2010-05-12 15:41:21

MySQL數據庫

2013-06-26 14:00:40

routeros軟路由routero

2025-01-15 09:00:20

2010-03-11 14:16:16

Linux route

2022-11-09 19:02:10

Linux

2021-09-15 10:31:52

網絡安全網絡攻擊網絡威脅

2021-12-04 14:51:38

隱私數據安全網絡安全

2014-05-04 11:17:39

Unix命令Linux命令

2009-11-23 10:14:10

Linuxroute命令輸出信息

2022-01-12 17:35:50

Linux命令命令行工具

2009-06-18 14:54:52

Spring AOP

2009-07-15 16:16:22

JDBC下載

2009-09-21 17:46:25

Hibernate數據

2011-06-01 16:50:21

JAVA

2012-09-25 10:03:56

JavaJava封面Java開發

2013-07-02 09:43:02

編程策略
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕高清免费日韩视频在线 | 国产成人久久 | 91伦理片 | 成人不卡在线 | 日本三级日产三级国产三级 | 久久视频精品 | 欧美日韩视频 | jlzzjlzz国产精品久久 | 在线观看日韩精品视频 | 在线观看中文视频 | 天天躁日日躁狠狠躁白人 | 日韩精品一区二区三区四区 | 国产精品区二区三区日本 | 国产欧美精品 | 欧美黄色大片在线观看 | 午夜欧美| 亚洲欧美中文日韩在线v日本 | 日韩不卡在线观看 | 一级毛片成人免费看a | 亚洲美女在线视频 | 欧美日韩国产一区二区 | 99久久夜色精品国产亚洲96 | 91 视频网站| 999免费观看视频 | 99热这里都是精品 | 金莲网| 午夜在线视频一区二区三区 | 日韩av一区二区在线观看 | 国产网站在线 | 精品久久久久久久人人人人传媒 | 亚洲视频在线一区 | 91短视频网址 | 亚洲综合伊人 | 国产精品毛片一区二区在线看 | 亚洲风情在线观看 | 亚洲免费在线 | 日韩精品一区二区三区中文字幕 | 国产成人精品久久二区二区91 | 99精品久久久 | 美女视频黄色片 | 国产成人小视频 |