PostgreSQL13新特性:
PostgreSQL 全球開發組於 2020-05-21 宣佈了 PostgreSQL 13 的第一個 beta 版本,目前已經提供了下載。雖然細節可能會有所改變,但是該版本包含了 PostgreSQL 13 最終正式版中的所有新特性的預覽,讓我們趕緊一睹爲快吧!
PostgreSQL 13 增加了許多改進效能的新特性,同時使得應用程式的開發更加容易。
PostgreSQL 繼續改進了安全相關的功能,引入了 PostgreSQL 安全部署相關的特性:
PostgreSQL12 新特性:
1. PG 12.1 Beta發佈了!
PostgreSQL全球開發組宣佈,PostgreSQL 12的第一個測試版(PG 12.1 Beta)現已開放下載。該版本中可預覽的所有特性都將延續至PG 12的最終版本中,不過在最終版本發佈之前,一些細節仍可能發生變動。
本着PG社羣的開源精神,我們強烈呼籲大家在自己的數據庫系統中測試PG 12的新特性,從而幫助我們更多地消除可能存在的任何bug以及問題。當然,我們並不是建議您在自己的生產環境中應用PG 12.1 Beta,而是希望您尋找一種可以利用您現有的經典應用對該版本進行測試的一種方法。
PG 12秉承了我們的一直以來爲世界最先進的開源關係型數據庫提供穩定可靠版本的標準。因此爲了幫助我們確保這一點,我們非常需要您積極的測試及反饋。
2. PG 12特性概覽
2.1 索引的效能、功能性以及管理
PG 12通過改善索引的空間管理,進而提升了標準B樹索引的總體效能。除了效能上的提升,這些改進也提供了對頻繁修改的索引所佔用空間的縮減。
此外,PG 12增加了線上重建索引的功能,該功能可以讓您的REINDEX操作不再阻塞任何對索引的寫入。當您在生產環境中管理PG數據庫時,該功能可以有效解決由於漫長地重建索引而導致的迫不得已的業務中斷。
PG 12對一些特定的索引機制 機製的功能進行了擴充套件。例如在PG 11中引入的用於建立覆蓋索引(covering index)的include子句,在PG 12中將同樣適用於建立GiST索引。SP-GiST索引現在支援對支援距離(<->)操作的數據型別使用k近鄰法(K-nearest neighbor K-NN)查詢。
在PG 12中,建立一個GiST、GIN或是 SP-GiST索引所產生的日誌先行(write-ahead log --WAL)的消耗將大大減少。這也爲PG叢集對磁碟的利用,以及一些像連續歸檔(continuous archiving)、流複製(streaming replication)這樣的功能,提供了諸多益處。
2.2 內嵌WITH查詢(Common table expressions)
公用表表達式(Common table expressions),亦被稱爲WITH查詢,現在可以自動內嵌到一個查詢語句中。但這些WITH查詢须符合如下條件:
不是遞回的
沒有任何副作用
在整條sql語句的後續部分中只會被參照一次
這將移除從PG 8.4引入WITH子句時就已存在的"optimization fence"。
如果有需要,可以使用MATERIALIZED子句來強制使一個WITH查詢物化。如下:
WITH c AS MATERIALIZED ( SELECT * FROM a WHERE a.x % 4 = 0 ) SELECT * FROM c JOIN d ON d.y = a.x;
2.3 分割區
對擁有上千個分割區的表中檢索一小部分分割區的操作的處理,PG 12進行了效能上的優化。
PG 12也對分割區表進行INSERT以及COPY操作時的效能進行了改善。PG 12中執行ATTACH PARTITION操作將不再阻塞對分割區表併發查詢。此外,PG 12中將允許建立關聯到分割區表的外來鍵。
2.4 JSON path queries per SQL/JSON specification
PG12現在支援SQL:2016標準中的每一個SQL/JSON規範的JSON path查詢。就像查詢XML使用的Xpath一樣,JSON path表達式可以讓您除了對json文件中的值進行比較以外,還可以讓您計算多種多樣的算術表達式和函數。
這些表達式中的一部分還可以使用GIN索引來提高計算效率,從而高效的對JSON數據集進行檢索。
2.5 校對
PG 12現在支援對ICU提供的排序規則進行不區分大小寫(case-insensitive)、不區分口音(accent-insensitive)的比較,亦被稱爲非確定性校對(nondeterministic collations)。
當該特性被使用時,這些collation可以爲排序和比較提供便利,但同時可能會因爲對字串額外的檢查,而導致額外的效能損失。
2.6 Most-common Value Extended Statistics
在PG 10中引入的CREATE STATISTICS,是爲了在多列上收集更復雜的統計資訊,從而幫助產生更準確的執行計劃。在PG 12中,收集統計資訊支援most-common value statistics。這將進一步提升當數據分佈不均勻時產生的執行計劃的準羣性。
2.7 被生成的列(Generated Columns)
PG 12允許建立生成列(就是Oracle的虛擬列)。這是一種列值是由其他列的值計算得出的列。該特性允許建立可儲存的(stored)生成列,即在insert或update時計算出生成列的列值並儲存於物理磁碟上。虛擬的(Virtual)生成列,是隻有在其作爲查詢的一部分時才生成,目前該功能尚未實現。
注:生成列分爲倆種stored和virtual,stored型別是寫入是計算的得到,而virtual型別是隻有讀時才計算。
2.8 可插拔的表儲存介面(Pluggable Table Storage Interface)
PG 12引入可插拔表儲存介面(pluggable table storage interface),允許建立和使用不同的表儲存方法。新的存取方法可以通過使用CREATE ACCESS METHOD的指令被新增到PG叢集中,並且隨後可以使用CREATE TABLE的新子句—USING,將新的存取方法新增的具體的表中。
一個表儲存介面可以通過建立一個新的表存取方法來定義。
在PG 12中預設使用的儲存介面是堆存取方法(heap access method),該方法是目前唯一的內建方法。
2.9 塊校驗和(Page Checksums)
pg_verify_checkums這條指令現在更名爲pg_checksums,並且可以在一個離線的PG叢集中進行啓用和禁用。在之前的版本,該功能只能在使用initdb對叢集初始化時啓用。
2.10 身份認證以及連線安全(Authentication & Connection Security)
GSSAPI現在支援用戶端和伺服器端加密,該功能可以在pg_hba.conf 中使用hostgssenc和hostnogssenc這倆中記錄型別進行指定。
如果PG 12是使用OpenLDAP進行編譯的,那麼PG 12還可以發現基於DNS SRV記錄的LDAP servers。
3. 行爲變更注意事項
PG 12中引入一些改變,這將對您慣用的管理時進行的操作和行爲有一定影響。下面 下麪會列舉這些變化中的一小部分,更多的其他改變的相關資訊,可以從Release Notes的"Migrating to Version 12"部分中獲取(https://www.postgresql.org/docs/devel/release-12.html)
1. recovery.conf這個參數檔案現在已經合併到postgresql.conf檔案中了。如果PG檢測到有recovery.conf的存在,PG將不會成功啓動。如果想讓PG處於非主(non-primary)模式,您可以使用recovery.signal和standby.signal這兩個檔案。
您可以通過下面 下麪的連線獲得更多的歸檔恢復(archive recovery)的資訊:https://www.postgresql.org/docs/devel/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY
1. Just-in-Time (JIT)編譯現在時預設開啓的。
2. PG 12將不再允許使用WITH OIDs子句將OIDs新增到使用者建立的表中。對於已經存在的使用WITH OIDs子句建立的表(例如列名是OID)的操作需要及時進行調整。
3. PG12中查詢系統表時執行select *的指令,也會輸出系統表的行的OID,而不再需要像之前的版本進行顯示的指定OID列。
4. 其他特性
許多其他的新特性和改進已經被新增到PG 12中,其中一些特性和改變對於特定的使用者來說,可能比上面提到的特性還重要。所以完整的新特性和新改進的請您檢視Release Notes:https://www.postgresql.org/docs/devel/release-12.html。
5. BUG和相容性的測試
每一個PG版本的穩定性,都非常依賴於您和您的團隊使用您們的工作負載和測試工具對即將到來的版本進行不斷的測試,從而幫助我們在PG 12公共版本發佈之前找出更多的BUG和功能退步的地方。
由於這是一個測試版本,所以可能存在對於數據庫行爲、一些特性的細節以及各種介面(APIs)的一些細小的改變。您的反饋和測試將幫助我們最終確定該對新特性進行怎樣的微調,所以懇請您儘快將其投入測試。使用者測試的品質將幫助我們確定最終版本該合適發佈。
一系列開放性問題已在PostgreSQL wiki對您公開。您可以使用如下的格式將bug在PG官網上告知我們:https://www.postgresql.org/account/submitbug/
6. 測試版本發佈計劃
這是PG 12的第一個測試版本,2019年年底發佈最終版本之前,我們PG專案組將陸續根據測試需求發佈更多的測試版本。
更進一步的詳情請到如下網址瞭解:https://www.postgresql.org/developer/beta/
轉自: