認識 PostgreSQL
PostgreSQL 的歷史和許可,程序模型、事務與 MVCC,B-tree 和其他索引,執行計畫、約束、JSONB、擴充套件和支援週期。

關於這套簡報
適合剛開始用 PostgreSQL 的開發者,或者想弄清它內部怎樣工作的人。從一個連線對應一個程序講起,到 MVCC 怎樣讓讀寫互不阻塞、索引和執行計畫怎樣決定查詢快慢,最後是 JSONB、擴充套件生態和每個大版本的支援年限。
共 16 頁,standard 風格、cobalt 配色,用 PCafe 的 15 個模板拼成。可以在瀏覽器裡直接播放,也可以下載成 HTML、PowerPoint 或 PDF,或者嵌入到自己的網頁裡。
內容提要
認識 PostgreSQL
從伯克利的研究專案到今天的開源關聯式資料庫:歷史、許可、核心機制和版本節奏。
四十年,三個名字
專案由伯克利的 Michael Stonebraker 主持,1994 年加入 SQL 後才走向今天的樣子。
PostgreSQL 授權:寬鬆的開源許可, 和 BSD、MIT 相近
程式碼由全球開發組(PGDG)維護,不屬於某一家公司。
一個連線,一個後端程序
客戶端先連主程序 postmaster,它為每個連線派生一個獨立的後端程序。
寫入的同時拿回改動前後的值
PostgreSQL 18 起,RETURNING 可以同時引用 OLD 和 NEW。
兩個會話改同一行:後來者等待
預設隔離級別是讀已提交。更新已被別的事務鎖住的行時,要等對方提交或回滾。
更新不覆蓋舊行,而是寫出新版本
每個行版本帶 xmin(建立它的事務)和 xmax(刪除它的事務)。讀者按自己的快照挑可見的版本。
預設索引 B-tree:從根頁走到葉子頁
CREATE INDEX 不指定型別時建的就是 B-tree,適合等值和範圍查詢。
內建六種索引
預設型別。等值、範圍、排序,適合大多數場景。
看最佳化器怎麼執行一條查詢
EXPLAIN 輸出一棵計畫樹:葉子讀資料,上層做連線和排序。下面的計畫是示意。
外部索引鍵讓表之間的引用始終成立
REFERENCES 宣告外部索引鍵:插入不存在的客戶、刪除仍被引用的客戶,都會被拒絕。表結構是示意。
文件存進表裡,也能按路徑查
jsonb 以二進位制分解儲存,支援 GIN 索引。-> 取出 jsonb,->> 取出文本,@> 判斷包含。
一條 CREATE EXTENSION,裝上空間資料庫
擴充套件可以加入新型別、函式、運算子和索引方法。PostGIS 是其中最常見的例子之一。
每年一個大版本,每個支援五年
小版本至少每三個月發布一次,只含修復,升級不需要匯出匯入。
PostgreSQL 19 RC 1已於 2026-10-15 發布, 正式版計畫 11 月 19 日
截至 2026-10-30,目前最新的正式大版本仍是 18。日期以官方公告為準,可能順延。
開源、可擴充套件、按年發布 升級前先看官方版本表和發布說明。
起源於 1986 年的伯克利 POSTGRES 專案,1996 年更名 PostgreSQL,使用類似 BSD 的寬鬆許可。
用到的模板
每個模板都有單獨的說明頁:適合放什麼內容、字數上限和範例程式碼。





