PostgreSQL學習的九層寶塔

2021-10-23 20:32:02 字數 2759 閱讀 6532

武俠世界,9是個神奇的數字,武學秘籍有《九陽真經》《九陰真經》,凡武功修煉到第九層,闖蕩江湖將獨孤求敗,快意恩仇。以文昌塔為喻,我把學習pg劃分九層,希望可以對玩轉資料江湖的同學,有所參照,逐層遞進,直至達到高手行列,闖蕩職場,游刃有餘。

第一層 初識 pg,開闊心胸。

第二層 安裝使用,動手操練。

第三層 熟悉功能,提綱挈領。

第四層 熟練操作,得心應手。

第五層 ****,**原理。

第六層 問題處理,效能優化。

第七層 讀懂原始碼,快速定位。

第八層 編寫原始碼,完善優化。

第九層 融會貫通,自由馳騁。

資料庫不只有oracle、db2、sqlserver,還有postgresql(簡稱pg),pg是最強大的開源資料庫,pg開源友好,學習pg可以從事dba/應用開發/系統核心開發等工作,而且會有很大的發揮空間,使用pg可以為企業提供有效的資料庫管理,也可以自主可控、節約成本。當今職場,多懂幾個資料庫,會讓我們有更多的機會。

初識pg,主要是學習認知pg的起源發展,主要版本特性,應用領域;了解國際pg社群組織、資源、動態,與中國pg分會、pg社群建立聯絡,積極互動,獲取學習資源,嘗試分享,展示自我。

「安裝部署、服務管理、體系結構、初始化配置、資料庫物件管理」,這是pg的應用管理基礎,dba要會,應用開發也要會。當然兩種角色關注重點稍有不同,譬如dba關注架構部署、執行穩定性和高效性,而應用開發更多的是掌握資料庫物件的建立及管理。

pg作為關係型資料庫承擔著管理企業資料的重任。功能、效能很重要,穩定性更重要,這也是作為dba首要考慮的問題。pg資料庫發展30多年,國際、國內的眾多應用案例表明穩定性可以信賴。關注學習與穩定性相關的知識點,能夠將pg的穩定性發揮的更好:

pg穩定性要點:

記憶體配置

日誌配置

磁碟管理

併發控制

程序控制

……pg的功能強大、繁多,可以系統化、模組化的選擇性學習。譬如pg有地理資訊資料處理功能(gis),暫時用不到可以先放過,除非很有志趣。dba和應用開發人員可以根據工作需要深入學習不同功能要點。

pg功能列表:

安全控制

基準測試

監控功能

審計功能

併發控制

並行處理

臨時表觸發器

函式、儲存過程

執行計畫

物理連線

資料快取

物化檢視

分割槽表主從流複製

邏輯複製

訪問外部資料

……學習了穩定性要點、功能列表後,pg基本可以用來服務於工作了。通過不斷的自我練習,滿足工作業務需求,會看到自己的水平會不斷的進步。

pg功能點繁多,獨特的功能適用於不同的業務場景,而且隨著pg版本的更新迭代,重要的功能點也會不斷得到優化,無論是使用上的便捷性還是效能的增強,無不體現著原始碼核心貢獻著的智慧型與追求:使pg不斷完善,更好的服務於業務。

譬如分割槽表,pg v9版本中是通過表繼承+觸發器的方式實現,因觸發器本身的限制,資料的插入效能並不高;pg v10實現了內建分割槽表,建立的分割槽實質上也是普通的表結構,從而管理分割槽方便,資料插入效率得以提高;pg v11增加雜湊分割槽、預設分割槽、支援更新分割槽鍵等,完善了分割槽的功能。

**原理能從內部機理深入理解,面對問題也能透過現象看本質,發現問題的誘因是使用不當還是系統bug,從而能更好的處理問題。

習得第五層是為了更好的使用pg,遇到問題可以快速定位、分析處理。處理問題需要平時多積累整理,一方面是技術群、**論壇丟擲的問題,主動思考、整理,學習總結,以備不時之需,有些問題平常不經常遇到,但一旦出現,之前沒有處理過會比較棘手;另一方面是工作中的問題,通常會有應急處理辦法,問題處理後,盡量形成問題分析報告,對有些問題選擇深度思考、討論,**根本原因,進而歸檔或分享,這都是寶貴的經驗。

效能優化一直是資料庫大腦的重點,也是運維、開發者工作價值的體現。通過對內幕的探索,能夠撥雲見日,配合相關工具通過配置或sql的優化,來提公升資料庫的訪問效能。

大學計算機相關專業的同學,一般會有c語言的課程,c語言可以算是世界上最偉大的程式語言之一,可以用來編寫unix/linux的核心,也可以實現python/ruby解析器、apache中介軟體等,很多關聯式資料庫都能看到c語言的影子。

pg源**也是用c編寫,嘗試學習原始碼是件有挑戰性的事,就如同駕駛手動擋汽車,如能操作熟練,必能體會其中的樂趣。不用任何解讀,就能快速定位到源**直接理解pg的工作邏輯,幫助我們更好的使用pg。

學習任何技能,最終的境界是融匯貫通,以無招勝有招。

無論大家從事dba、dev或者系統核心開發,通過有效的方法,堅持不懈的積累都可以達到這一層,自由揮灑。

以上內容只是在pg的學習角度做的一些總結,用好pg還需要有良好的系統、資料庫原理知識,這也是基礎,猶如地基,地基穩,寶塔立。pg學習的九層寶塔,是為了更形象具體的描述,學習過程不是說必須按此一層一層進行,大家可以根據自己興趣或工作需要有所選擇的開展學習。

最後,說兩點學習的方法體會:

第一:多交流、多閱讀、多練習。

多與前輩交流,科學問答,多閱讀優秀書籍,自己多做實驗。書是人類進步的階梯,學習最好的夥伴,可以根據學習階段或工作需要選擇閱讀。

參考書目

《postgresql修煉之道-從小工到專家》

《postgresql實戰》

《postgresql指南:內幕探索》

《postgresql伺服器程式設計》

……第二:投資學習,向導師借力。

中國postgre sql分會技術問答社群:

www.pgfans.cn

中國postgre sql分會官方**:

www.postgresqlchina.com

PostgreSQL 學習總結

xy copy 命令用於批量的資料匯入或匯出 c 介面如下 主要為一下三個函式 pres pqexec pconn,strsql.c str pqputcopydata pconn,strbuf.c str strbuf.length pqputcopyend pconn,strerrormsg 其...

CentOS學習日記 PostgreSQL篇

本文記錄postgresql在centos 6.7上安裝 配置 使用等方面的資料以及操作過程。一 準備工作 1 centos 6.7 2 網路ok 二 安裝 使用yum安裝postgresql。1 yuminstallpostgresql 三 初始化 當成功安裝好postgresql後,根據官網說明...

PostgreSQL學習手冊 模式Schema

乙個資料庫包含乙個或多個命名的模式,模式又包含表。模式還包含其它命名的物件,包括資料型別 函式,以及操作符。同乙個物件名可以在不同的模式裡使用而不會導致衝突 比如,schema1和myschema都可以包含叫做mytable的表。和資料庫不同,模式不是嚴格分離的 乙個使用者可以訪問他所連線的資料庫中...