「PostgreSQL 」PostgreSQL 12的8大改進,性能大幅度提升


「PostgreSQL 」PostgreSQL 12的8大改進,性能大幅度提升


PostgreSQL 12專注於性能和優化。此版本的發佈並未考慮到全新的閃亮功能;相反,它是對現有PostgreSQL功能的微調和精心設計的實現。因為PostgreSQL每年都會發布新版本,所以並不是每一個新功能都完全具備。在發佈了幾個版本之後,當該功能有機會從其最初的實現中發展出來時,其性能將得到改善,邊緣情況將得到支持,缺失的功能將得到實現。

這是PostgreSQL 12中發現的八個最重要的改進。

1.分區性能

分區並不是一項新功能,它已經存在了好幾年了,但是分區開銷卻降低了性能。 PostgreSQL 11引入了一些分區性能改進,而PostgreSQL 12提供了完善的實現。對於從具有數千個分區的其他數據庫遷移來的用戶,PostgreSQL 12現在通過提供可同時有效處理數千個分區的功能而帶來性能優勢。分區性能增強可以提高查詢性能,尤其是INSERT和COPY語句的性能。此外,用戶現在可以更改分區表而不會阻止查詢,並可以使用外鍵引用分區表。

2. B樹增強

B-Tree功能是近年來對PostgreSQL添加的最複雜的功能之一。使用B樹的好處是減少了訪問的磁盤塊的數量。考慮到B-Tree技術可以追溯到1970年代,很難對已經存在數十年的可靠功能進行改進。但是PostgreSQL 12團隊致力於提供可自動啟用的重大性能改進,旨在避免某些極端情況和B樹代碼中曾經存在的“病理行為”。現在,通過更有效地利用空間,多列索引大小最多可減少40%,從而節省了磁盤空間。具有重複項(非唯一B樹索引)的索引的性能得以提高,並且從索引中刪除元組(行)的真空運行效率更高。此外,索引更新期間的鎖定要求有所降低。

3.多列最有價值(MCV)統計信息

此更新已經進行了幾年的開發,旨在解決多年來引起投訴的問題:查詢中相關列的邊緣情況。以俄亥俄州辛辛那提為例-您有一個標記為“城市”的字段,另一字段稱為“州”,其中“辛辛那提”位於一列,而俄亥俄州則在另一列。俄亥俄州的辛辛那提市將相當普遍,但亞利桑那州的辛辛那提市卻很少見。在此功能之前,PostgreSQL僅記錄了多個列的單個相關值。從本質上講,它將俄亥俄州的辛辛那提和亞利桑那州的辛辛那提視為同一件事。現在,您可以比較多個列並關聯組合以優化查詢索引。

4.公用表表達式(CTE)

正確實現的另一個過期功能是通用表表達式(帶有查詢內聯)。公用表表達式充當優化障礙,公用表表達式中的查詢首先執行,然後PostgreSQL將在查詢中執行之後的任何操作。一些用戶採用通用表表達式來提高SQL的可讀性和調試,而不是優化SQL的執行。這些用戶不可避免地會遇到優化行為。 PostgreSQL 12使用關鍵字“ MATERIALIZE”實現了一項新功能,該功能允許用戶打開優化圍欄。如果您不使用MATERIALIZE,則不會獲得優化範圍,並且可能會看到更快的查詢。

5.準備好的計劃控制

一項重要的新功能使用戶可以控制PostgreSQL優化器的行為,並有可能提高性能。早期版本的PostgreSQL將使用自定義計劃五次,第六次創建一個通用計劃,並在與自定義計劃一樣好的情況下使用它。現在,可以通過名為“ plan_cache_mode”的新變量手動控制此行為,該變量允許用戶立即強制執行通用計劃。這為那些知道其參數恆定並且知道通用計劃將起作用的用戶帶來了顯著的性能優勢。

6.即時編譯

PostgreSQL 11最初引入的一項功能是現在在PostgreSQL 12中默認啟用即時複雜功能。即時編譯允許處理大量數據的數據倉庫查詢來更有效地運行執行程序。由於許多用戶啟用了此功能,因此該功能現已成為PostgreSQL 12的默認功能。

7.校驗和控制

追溯到2013年,PostgreSQL引入了一種校驗和功能,用於識別數據損壞。首次初始化數據庫時必須打開此功能,否則用戶必須轉儲,打開該功能並重新加載數據。這使得某些用戶幾乎無法使用該功能。在PostgreSQL 12中,通過一個稱為“ pg checksums”的命令(以前稱為pg verify checksum),用戶可以在不轉儲和重新加載數據的情況下將群集從無校驗和更改為校驗和。當前,在此更改期間,群​​集必須處於脫機狀態,但是正在開發聯機校驗和支持。

8.併發重新編制索引

索引併發功能已經存在多年,允許用戶創建索引而又不阻止寫入索引。重新索引不允許您在寫入數據庫時​​創建索引。同時使用reindex,通過在同一位置創建新索引來替換現有索引。同時使用Reindex可以寫入索引並保留原始索引名稱。顯然,當替換索引時,最小的鎖定將發生,直到實現替換為止。長期以來要求的功能很難開發,但最終在PostgreSQL 12中交付。

升級到PostgreSQL 12

這八個功能只是PostgreSQL 12中許多改進中的幾個。從分區改進到公用表表達式的實現,PostgreSQL 12提供了顯著的可用性增強,將使許多新用戶和長期用戶滿意。

Postgres已成為數據庫領域的巨頭。 根據2019年Stack Overflow對近90,000名開發人員的調查,Postgres的部署現在比SQL Server部署得更為普遍。


「PostgreSQL 」PostgreSQL 12的8大改進,性能大幅度提升

原文:https://www.enterprisedb.com/ko/blog/8-major-improvements-postgresql-12

本文:http://jiagoushi.pro/8-major-improvements-postgresql-12

討論:請加入知識星球或者微信圈子【首席架構師圈】


分享到:


相關文章: