PostgreSQL 現已通過其 TOAST 儲存技術提供壓縮支援,並且在過去的一年裡構建了 LZ4 壓縮支援——用於壓縮 WAL、備份壓縮以及其他用途,現在 PostgreSQL 開發者正準備通過 Zstd 支援進一步擴充套件其壓縮能力。
Zstd (Zstandard) 是由 Facebook 開源的快速無失真壓縮演演算法,主要應用於 zlib 級別的實時壓縮場景,並且具有更好的壓縮比。Zstd 還可以以壓縮速度為代價提供更強的壓縮比,速度與壓縮權衡可通過小增量進行設定。
上週 PostgreSQL 開發者了是否新增 Zstd 作為支援的壓縮演演算法。在討論郵件中,開發者表示 Zstd 有一個顯著的優點——以及其他知名開源專案等廣泛使用。這意味著它不會輕易停止維護,並且降低了涉及法律問題的風險。在技術層面上,Zstd 提供了與 Gzip 相似或更好的壓縮比,但壓縮速度要快得多。此外,Zstd 庫具有內建的多執行緒壓縮,PostgreSQL 可以利用它獲得更好的效能。
討論過程十分順利,目前已建立了相對應的 PostgreSQL Git 倉庫,用於構建引入 Zstd 的 PostgreSQL。
雖然已增加了 --with-zstd 構建時選項,並允許使用 Zstd 壓縮庫進行構建,但目前這並沒有在 PostgreSQL 中啟用 Zstd 的任何實際使用。後續的提交預計很快就會開始允許 PostgreSQL 利用 Zstd 的壓縮能力優勢。
等到 PostgreSQL 15 釋出時,相信會提供 Zstd 支援,以補充目前 PostgreSQL 14 的 LZ4 支援。