亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL中系統目錄表的示例分析

發布時間:2021-12-30 14:39:03 來源:億速云 閱讀:138 作者:小新 欄目:大數據

這篇文章主要介紹了PostgreSQL中系統目錄表的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

PostgreSQL 的system catalogs 對我們來說主要的作用有那些,這里主要的作用可以歸結為,讓一些數據庫的事務更加的便捷和自動的處理,例如找到沒有索引的表,發現數據庫中的objects 之間的依賴關系,對數據庫進行一些健康的檢查,和信息收集的工作,這也就提供了一些數據庫系統監控的解決方案和相關信息的供給。

OK 目的明確,所以學習這段知識,可以幫助我們達到什么目的我們在總結一下

1  解決DBA 的一些常見的問題的查找和系統運行中的缺陷的問題

2  對于POSTGRESQL的系統的性能和問題的監控,提供了明確的數值和指示

3  對于應用系統建立后,系統中的一些OBJECTS 之間的關聯性的問題解決

書中提到,通過理解和熟悉存在在pg_catalog中的信息,來了解系統中的各個objects 如,tables , veiws ,functions indexes, foreign data wrapper (FDWs), triggers ,constratins ,rules , users , groups 等等這些信息,統稱我們叫他數據庫元信息。

我們以PG12為例, 新安裝的PG12中 pg_catalog的objects 共有63個。

PostgreSQL中系統目錄表的示例分析

當然還有一些信息,夾雜在information_schema中

PostgreSQL中系統目錄表的示例分析


其中pg_class 是極其重要的一張表,其中存儲了系統的一些object 信息,表,索引,視圖,序列,物化視圖,組合的類型,Toast tables 等等

PostgreSQL中系統目錄表的示例分析

而在pg_class中通過一個字母來標記,當前的object 到底屬于哪個上面的類型

PostgreSQL中系統目錄表的示例分析

通過pg_class中的 relkind字段可以了解到每個object的實際的類型

PostgreSQL中系統目錄表的示例分析

這里就牽扯出另一個問題,如果這些objects 需要在pg_class中進行記錄,則需要一個主鍵,PG中的pg_class是怎么通過主鍵來標記每個objects 

PostgreSQL中系統目錄表的示例分析

這也就是oid信息,pg_class中的主鍵就是 oid, 這里就需要進行一個延展,在我知道表名,但不知道OID的情況怎么解決。下圖中就引入了另一個PG的信息轉換的方式 regclass

PostgreSQL中系統目錄表的示例分析

通過select 語句,我們將已經知曉的OBJECT 名字用對應的方式來體現,例如是文本,就加單引號,是數字就不需要加任何符合, 后面通過 ::regclass:: 作為中介符號,最后oid 則是你要轉換后的信息的類型。

PostgreSQL中系統目錄表的示例分析

注:通過上面的操作我們掌握了一種信息轉換的方式。

SELECT c.oid FROM pg_class c join pg_namespace n ON

(c.relnamespace = n.oid) WHERE relname ='表名';

當然通過其他的方式也可以查到相關的信息。

SELECT relname, case relkind when 'r' then 'table' WHEN 'v' THEN 'VIEW' END as type FROM pg_class WHERE relname like 'pg_sta%' AND relkind IN ('r','v');

同時系統中有關于表、索引、列、序列等的統計信息,通過這些統計信息也可以更深層次的了解系統的中一些情況。

PostgreSQL中系統目錄表的示例分析

下面會通過一些命令和案例,來表明怎么使用這些系統表或那些函數命令可以幫助我們或許什么樣的信息。

1  終止當前所有和test數據庫有關的執行的query, 例如當前需要有效的進行vacuum,所以現在需要對某些長時間無法完成的query,進行清理。

這里我們會用到 pg_stat_activity ,通過這樣表可以查看當前與PG有關的連接,但實際上在測試中,通過Python 連接到數據庫中,通過死循環執行一些較簡單的語句,語句很快執行完畢,在pg_stat_activity中并沒有展示,所以pg_stat_activity 還是比較適合較長的運行的語句的發現和分析。

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname =

current_database() AND pid <> pg_backend_pid() and usename = 'admin';

下圖是死循環中的查詢,在執行完這條語句后,就被終止了,因為SESSION 被切斷了。 這里需要強調一點  pid <> pg_backend_pid() 是必須要添加的,防止切斷系統中的關鍵的

PostgreSQL中系統目錄表的示例分析

例如下面畫紅線的位置的一些進程。

PostgreSQL中系統目錄表的示例分析

所以了解和理解系統的表,并加以利用可以解決很多我們面臨的一些系統的問題。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“PostgreSQL中系統目錄表的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恭城| 剑河县| 固始县| 巴楚县| 平定县| 泰宁县| 轮台县| 甘德县| 沙河市| 陵水| 彭山县| 河池市| 茂名市| 田阳县| 吉林市| 黄大仙区| 贵州省| 咸宁市| 平安县| 星子县| 德保县| 阜平县| 舞钢市| 耿马| 安丘市| 临西县| 泗水县| 英德市| 白朗县| 清苑县| 突泉县| 新河县| 两当县| 会东县| 新兴县| 建德市| 安图县| 奇台县| 大足县| 泰兴市| 阿合奇县|