如果搞一個投票來評選資料庫中最難以理解的模組,那麼非優化器莫屬。

作為資料庫從業者,如果對優化器不夠了解,便如同猛虎沒有了利爪,蒼鷹沒有了翅膀,在對資料庫資料庫調優的過程中往往心有餘而力不足。

從對優化器的掌握程度上來判斷,資料庫從業人員對優化器的理解大致可以分成以下 3 個層次。

層次一:粗淺瞭解,比如知道優化器分為邏輯優化和物理優化,瞭解一些邏輯優化的方法,知道執行計劃的來源,能看懂優化器產生的執行計劃。

層次二:詳細瞭解,在粗淺瞭解的基礎上,能夠根據自己對優化器的瞭解,調整出優化器“喜愛”的 SQL 語句,並且對於產生的執行計劃的優劣一目瞭然,知其然更知其所以然。

層次三:深度瞭解,需要對優化器的每個細節有清楚的認知,在我們寫出一個 SQL 語句之後,可以庖丁解牛式地在腦海中浮現出語句在優化器中的優化過程,清楚地知道每個細節的實現過程。

要想達到層次一隻需要閱讀一些基礎理論即可,通常,資料庫初學者對優化器的瞭解都處於這個層次,但這種瞭解對於實際應用的意義不大。

而要想達到層次三則需要細緻地解讀優化器的原始碼,雖然作為資料庫專家是必須要掌握到這一層的,但這個過程又過於“艱辛”。

而大多數資料庫從業人員遊走在兩者之間,大家的目標無非是在資料庫調優過程中手到擒來地使用優化器查詢,也就是這裡的層次二。

那麼,有沒有辦法在不分析資料庫核心原始碼的情況下,從資料庫使用者的角度出發,結合外在的系統表資訊、引數資訊、執行計劃資訊反向把優化器的原理講清楚,從而確保大家進階到層次二,掌握優秀的資料庫開發人員必備的核心技能優化器呢?

答案是肯定的,通過深入的挖掘資料庫的元資料、引數、執行計劃,再結合資料庫優化器的相關理論,一定能把優化器的實現說清楚。

然而,我們選擇哪種資料庫的優化器實現呢?

答案是 PostgreSQL 資料庫。PostgreSQL 是世界上先進的開源關係資料庫。

2018 年 Stack Overflow 資料庫調查結果顯示,PostgreSQL 流行度排名第三,僅次於 MySQL 和 SQL Server。

PostgreSQL 在過去幾年的發展動力十足。不論是在功能方面還是效能方面,開發人員對產品的滿意度都非常高,越來越多的資料庫開發和運維人員開始使用 PostgreSQL。

而 PostgreSQL 查詢優化器被廣泛認為屬於教科書級實現。

首先,它的實現層次非常清楚,有明確的物理優化和邏輯優化的邊界,各種優化規則也被抽象成完全獨立的小模組,便於分析和理解。

其次,它對各種優化方法的支援也比較完備,對於常用的優化方法,都可以在 PostgreSQL 找到實踐的案例。

另外,PostgreSQL 的優化器處理查詢語句的能力更強,藉助於優化之後的動態規劃方法和遺傳演算法可以支援非常複雜的查詢。

目前,單獨針對優化器的課程很少,而能夠做到深入淺出解讀 PostgreSQL 優化器的課程更是鳳毛麟角。

這裡,非常榮幸地跟大家分享一下 GitChat 新上的《PostgreSQL 優化器入門》課程。

我們邀請到了超過 13 年從業經驗的 Pivotal 資深開發工程師、資料庫核心專家張樹傑老師手把手帶領大家從 0 開始,直至熟練掌握 PostgreSQL 查詢優化器實現全流程。 訂購本課程可獲得專屬海報,分享專屬海報並邀請一位好友購買,即可獲得 25% 的現金返現,多邀多得,上不封頂,立即提現。

提現流程:請在 GitChat 服務號中點選“線上服務-我的邀請返現-提現”進行提現。

課程亮點

  • 資料庫核心專家通俗解讀 PostgreSQL 優化器
  • 無需閱讀分析 PostgreSQL 原始碼即可快速掌握
  • 分析優化器經典實現/資料庫從業人員的核心技能

本課程從一個 SQL 語句的執行開始,逐步分析優化器中涉及的各種優化原則,從引數、系統表、執行計劃開始說明,逐步由表及裡、由外及內,把 PostgreSQL 優化器背後隱藏的優化思想一一列舉出來,最終幫助讀者透徹掌握 PostgreSQL 優化器的實現。

作者介紹

張樹傑,Pivotal 資深開發工程師,資料庫核心專家。擁有超過 13 年 IT 從業經驗,多年從事國產資料庫核心開發工作,近些年尤其專注於研究對分散式資料庫的查詢優化、查詢執行的改進工作。

著有《PostgreSQL 技術內幕:查詢優化深度探索》一書,目前從事 Greenplum 資料庫的核心開發工作。 在這裡插入圖片描述

點此即刻訂閱學習