發(fā)布于:2020-12-19 18:01:30
0
279
0
2019年10月3日,發(fā)布了世界上最先進的開源數(shù)據(jù)庫的新版本。PostgreSQL 12現(xiàn)在可用,對查詢性能(特別是在較大的數(shù)據(jù)集和整體空間利用率方面)進行了顯著改進,還有其他重要功能。
在此博客中,我們將介紹這些新功能,并向您展示如何獲取和安裝此新PostgreSQL 12版本。我們還將探討升級時要考慮的一些注意事項。PostgreSQL 12功能和改進,讓我們開始提及這個新PostgreSQL版本的一些最重要的功能和改進。
索引編制
對B樹索引的空間利用率和讀/寫性能進行了優(yōu)化。
減少創(chuàng)建GiST,GIN和SP-GiST索引的WAL開銷。
您可以使用SP-GiST索引通過距離運算符(<->)執(zhí)行K近鄰查詢。
重建索引時不會通過REINDEX CONCURRENTLY命令阻止對索引的寫操作,從而使用戶可以避免因長時間重建索引而導致停機的情況。
分區(qū)
對分區(qū)表的查詢有了改進,尤其是對于具有數(shù)千個分區(qū)的表,這些表只需要從有限的子集中檢索數(shù)據(jù)。
使用INSERT和COPY向分區(qū)表添加數(shù)據(jù)的性能提高。
您將能夠在不阻止查詢的情況下將新分區(qū)附加到表。
SQL
現(xiàn)在,您可以使用SQL / JSON標準中定義的JSON路徑表達式對JSON文檔運行查詢,并且它們可以利用現(xiàn)有的索引機制對以JSONB格式存儲的文檔進行有效檢索。
PostgreSQL 12現(xiàn)在可以自動內(nèi)聯(lián)WITH查詢(如果它不是遞歸的,沒有任何副作用,并且在查詢的后面部分僅被引用一次),這反過來又可以幫助提高許多現(xiàn)有查詢的性能查詢。
引入“生成的列”。這種類型的列根據(jù)同一表中其他列的內(nèi)容計算其值。還支持在此存儲此計算值。
國際化
PostgreSQL 12通過允許用戶定義“不確定性歸類”來擴展其對ICU歸類的支持,例如,可以允許不區(qū)分大小寫或不區(qū)分重音的比較。
認證方式
引入了客戶端和服務器端加密,以通過GSSAPI接口進行身份驗證。
如果PostgreSQL服務是使用OpenLDAP編譯的,則它能夠發(fā)現(xiàn)LDAP服務器。
使用clientcert = verify-full選項和在pg_hba.conf文件中配置的其他身份驗證方法進行多因素身份驗證。
如果要利用這些新功能和改進,可以轉(zhuǎn)到下載頁面并獲取最新的PostgreSQL版本。如果您需要HA設置,這里是一個博客,向您展示如何為HA安裝和配置PostgreSQL。
如何安裝PostgreSQL 12
在此示例中,我們將使用CentOS7作為操作系統(tǒng)。因此,我們需要轉(zhuǎn)到基于RedHat的OS下載站點并安裝相應的版本。
1個 |
|
它將安裝帶有穩(wěn)定,測試和源代碼包的PostgreSQL存儲庫。
1個 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
然后,安裝客戶端和服務器PostgreSQL12軟件包。它將安裝一些python依賴項。
1個 |
|
現(xiàn)在,您可以初始化新的PostgreSQL 12數(shù)據(jù)庫。
1個 2 3 |
|
并啟用/啟動PostgreSQL服務。
1個 2 3 4 5 |
|
就是這樣。您已啟動并運行新的PostgreSQL版本。
1個 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
現(xiàn)在,您已經(jīng)安裝了最新的PostgreSQL版本,您可以將數(shù)據(jù)遷移到這個新的數(shù)據(jù)庫節(jié)點中。
升級到PostgreSQL 12
如果要將當前的PostgreSQL版本升級到這個新版本,則有三個主要選項可以執(zhí)行此任務。
pg_dump:這是一個邏輯備份工具,可讓您轉(zhuǎn)儲數(shù)據(jù)并將其還原到新的PostgreSQL版本中。在這里,您將有一個停機時間,該停機時間將根據(jù)您的數(shù)據(jù)大小而變化。.您需要停止系統(tǒng)或避免在主節(jié)點中使用新數(shù)據(jù),運行pg_dump,將生成的轉(zhuǎn)儲移至新的數(shù)據(jù)庫節(jié)點并進行還原。在這段時間內(nèi),您無法寫入PostgreSQL主數(shù)據(jù)庫,以避免數(shù)據(jù)不一致。
Pg_upgrade:這是一個PostgreSQL工具,用于就地升級PostgreSQL版本。在生產(chǎn)環(huán)境中可能很危險,因此在這種情況下我們不建議使用此方法。使用這種方法也會有停機時間,但是可能比使用以前的pg_dump方法要少得多。
邏輯復制:從PostgreSQL 10開始,您就可以使用這種復制方法,該方法允許您以零(或幾乎零)的停機時間執(zhí)行主要版本升級。這樣,您可以在最新的PostgreSQL版本中添加一個備用節(jié)點,并且當復制是最新的時,您可以執(zhí)行故障轉(zhuǎn)移過程來升級新的PostgreSQL節(jié)點。
升級到PostgreSQL 12之前的注意事項
通常,對于所有升級過程以及所有技術(shù),都需要考慮以下幾點。讓我們看一些主要的。
刪除了數(shù)據(jù)類型abstime,reltime和tinterval。
recovery.conf設置已包含在postgresql.conf文件中,并且不再使用。如果創(chuàng)建了此文件,則服務器將無法啟動。文件recovery.signal和standby.signal文件現(xiàn)在用于切換到非主要模式。將trigger_file設置重命名為promove_trigger_file,并且刪除了standby_mode設置。
不允許使用多個沖突的recovery_target規(guī)范。
pg_restore中需要指定“ -f”以將轉(zhuǎn)儲內(nèi)容發(fā)送到標準輸出。
B樹索引中的最大索引條目長度減少了八個字節(jié),以改善重復條目的處理。對先前版本的索引pg_upgrade執(zhí)行的REINDEX操作可能會失敗。
如果沒有提供參數(shù)列表并且有多個匹配的對象,則DRIF IF EXISTS FUNCTION / PROCEDURE / AGGREGATE / ROUTINE會產(chǎn)生錯誤。
有關新的PostgreSQL 12功能和遷移之前的注意事項的更多詳細信息,您可以參考官方發(fā)行說明網(wǎng)頁。