【GaussDB----系統表、系統視圖】

1. 示例查詢

1.在PG_TABLES系統表中查看public schema中包含的所有表。

SELECT distinct(tablename) FROM pg_tables WHERE SCHEMANAME = 'public'; 

2.通過PG_USER可以查看數據庫中所有用戶的列表,還可以查看用戶ID(USESYSID)和用戶權限。

SELECT * FROM pg_user; 

3.通過視圖PG_STAT_ACTIVITY可以查看正在運行的查詢語句。
a.當此參數爲on時,數據庫系統纔會收集當前活動查詢的運行信息。

SET track_activities = on;

b.查看正在運行的查詢語句。以查看正在運行的查詢語句所連接的數據庫名、執行查詢的用戶、查詢狀態及查詢對應的PID。

SELECT datname, usename, state,pid FROM pg_stat_activity;

如果state字段顯示爲idle,則表明此連接處於空閒,等待用戶輸入命令。
c.若需要取消運行時間過長的查詢,通過PG_TERMINATE_BACKEND函數,根據線程ID結束會話。

SELECT PG_TERMINATE_BACKEND(139834759993104);

顯示類似如下信息,表示結束會話成功。

PG_TERMINATE_BACKEND
----------------------
 t
(1 row)

顯示類似如下信息,表示用戶執行了結束當前會話的操作。

FATAL:  terminating connection due to administrator command
FATAL:  terminating connection due to administrator command
The connection to the server was lost. Attempting reset: Succeeded.

gsql客戶端使用PG_TERMINATE_BACKEND函數結束當前會話後臺線程時,客戶端不會退出而是自動重連。即還會返回“The connection to the server was lost. Attempting reset: Succeeded.”

2. 系統表和系統視圖概述

一般非管理員無權查看系統表和視圖,用戶應該禁止對系統表進行增刪改等操作,人爲對系統表的修改或破壞可能會導致系統各種異常情況甚至集羣不可用。

3. 常見系統表

1. PG_ATTRDEF
PG_ATTRDEF系統表存儲列的默認值

2. PG_ATTRIBUTE
PG_ATTRIBUTE系統表存儲關於表字段的信息。

3. PG_AUTH_MEMBERS
PG_AUTH_MEMBERS系統表存儲顯示角色之間的成員關係。

4. PG_CLASS
PG_CLASS系統表存儲數據庫對象信息及其之間的關係。

5. PG_CONSTRAINT
PG_CONSTRAINT系統表存儲表上的檢查約束、主鍵、唯一約束和外鍵約束。

6. PG_DATABASE
PG_DATABASE系統表存儲關於可用數據庫的信息。

7. PG_DEFAULT_ACL
PG_DEFAULT_ACL系統表存儲爲新建對象設置的初始權限。

8. PG_EXTENSION
PG_EXTENSION系統表存儲關於所安裝擴展的信息。

9. PG_EXTENSION_DATA_SOURCE
PG_EXTENSION_DATA_SOURCE系統表存儲外部數據源對象的信息。

10. PG_FOREIGN_TABLE
PG_FOREIGN_TABLE系統表存儲外部表的輔助信息。

11. PG_INDEX
PG_INDEX系統表存儲索引的一部分信息,其他的信息大多數在PG_CLASS中。

12. PG_INHERITS
PG_INHERITS系統表記錄關於表繼承層次的信息。數據庫裏每個直接的子系表都有一條記錄。間接的繼承可以通過追溯記錄鏈來判斷。

13. PG_JOB
PG_JOB系統表存儲用戶創建的定時任務的任務詳細信息,定時任務線程定時輪詢pg_job系統表中的時間,當任務到期會觸發任務的執行,並更新pg_job表中的任務狀態。該系統表屬於Shared Relation,所有創建的job記錄對所有數據庫可見。

14. PG_JOB_PROC
PG_JOB_PROC系統表對應PG_JOB表中每個任務的作業內容(包括:PL/SQL代碼塊、匿名塊)。將存儲過程信息獨立出來,是因爲Oracle中這個字段是varchar(4000)的,如果放到PG_JOB中,被加載到共享內存的時候,會佔用不必要的空間,所以在使用的時候再進行查詢獲取。

15. PG_NAMESPACE
PG_NAMESPACE系統表存儲名字空間,即存儲schema相關的信息。

16. PG_PARTITION
PG_PARTITION系統表存儲數據庫內所有分區表(partitioned table)、分區(table partition)、分區上toast表和分區索引(index partition)四類對象的信息。分區表索引(partitioned index)的信息不在PG_PARTITION系統表中保存。

17. PG_PROC
PG_PROC系統表存儲函數或過程的信息。

18. PG_RESOURCE_POOL
PG_RESOURCE_POOL系統表提供了數據庫資源池的信息。

19. PG_STATISTIC
PG_STATISTIC系統表存儲有關該數據庫中表和索引列的統計數據。需要有系統管理員權限纔可以訪問此係統表。

20. PG_TABLESPACE
PG_TABLESPACE系統表存儲表空間信息。

21. PG_TRIGGER
PG_TRIGGER系統表存儲觸發器信息。

22. PG_TYPE
PG_TYPE系統表存儲數據類型的相關信息。

23. PG_USER_STATUS
PG_USER_STATUS系統表提供了訪問數據庫用戶的狀態。需要有系統管理員權限纔可以訪問此係統表。

24. PGXC_CLASS
PGXC_CLASS系統表存儲每張表的複製或分佈信息。

25. PGXC_GROUP
PGXC_GROUP系統表存儲節點組信息。

26. PGXC_NODE
PGXC_NODE系統表存儲集羣節點信息。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4. 常見系統視圖

ALL_ALL_TABLES
ALL_ALL_TABLES視圖存儲當前用戶所能訪問的表或視圖。

ALL_CONS_COLUMNS
ALL_CONS_COLUMNS視圖存儲當前用戶可訪問的約束字段的信息。

ALL_COL_COMMENTS
ALL_COL_COMMENTS視圖存儲當前用戶可訪問的表中字段的註釋信息。

ALL_IND_COLUMNS
ALL_IND_COLUMNS視圖存儲了當前用戶可訪問的所有索引的字段信息。

ALL_IND_EXPRESSIONS
ALL_IND_EXPRESSIONS視圖存儲了當前用戶可訪問的表達式索引的信息。

ALL_INDEXES
ALL_INDEXES視圖存儲了當前用戶可訪問的索引信息。

ALL_OBJECTS
ALL_OBJECTS視圖記錄了當前用戶可訪問的數據庫對象。

ALL_PROCEDURES
ALL_PROCEDURES視圖存儲了當前用戶可訪問的所有存儲過程或函數信息。

ALL_SOURCE
ALL_SOURCE視圖存儲當前用戶可訪問的存儲過程或函數信息,且提供存儲過程或函數定義的字段。

ALL_SEQUENCES
ALL_SEQUENCES視圖存儲當前用戶能夠訪問的所有序列。

ALL_TAB_COLUMNS
ALL_TAB_COLUMNS視圖存儲了當前用戶可訪問的表的列的描述信息。

ALL_TAB_COMMENTS
ALL_TAB_COMMENTS視圖存儲當前用戶可訪問的所有表和視圖的註釋信息。

ALL_TABLES
ALL_TABLES視圖存儲當前用戶可訪問的所有表。

ALL_USERS
ALL_USERS視圖存儲記錄數據庫中所有用戶,但不對用戶信息進行詳細的描述。

ALL_VIEWS
ALL_VIEWS視圖存儲了當前用戶可訪問的所有視圖描述信息。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

5. Information Schema

信息模式本身是一個名爲information_schema的模式。這個模式自動存在於所有數據庫中。信息模式由一組視圖構成,它們包含定義在當前數據庫中對象的信息。這個模式的擁有者是初始數據庫用戶,並且該用戶自然地擁有這個模式上的所有特權,包括刪除它的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章