5月19日,PostgreSQL 15 beta版本已發布,本文參考官方release文檔E.1.2.小節,遷移到版本15的部分兼容性解讀。
官方release文檔鏈接如下:
https://www.postgresql.org/docs/15/release-15.html
1.public模式相關
public模式相關有兩條:
- public模式create權限默認被回收
- public模式owner變為pg_database_owner

從上面的測試截圖可以看到對比區別,如果要保持與舊版本的兼容性,可以修改template1,添加create權限。
2.backup相關
- 刪除了pg_start_backup函數的exclusive參數
- pg_start_backup重命名為pg_backup_start
- pg_stop_backup重命名為pg_backup_stop
- pg_backup_start_time函數被移除
- pg_is_in_backup函數被移除

移除了對排他性備份的支持,以前默認排他性備份的模式下如果數據庫服務器突然停止了,服務器可能會啟動失敗。
3.參數默認值相關
hash_mem_multiplier由1.0增大到2.0

hash_mem_multiplier是pg13增加的參數,用來計算基于hash操作可以使用的最大內存。在13和14里默認值是1,15里默認值由1.0增大到2.0,允許hash操作相比其它操作可以使用雙倍的work_mem。
4.間隔類型與函數輸出相關
Mark the interval output function as stable, not immutable, since it depends on IntervalStyle
下面截圖是IntervalStyle控制間隔類型的輸出,上面描述的功能可能與創建基于函數的索引有關。

5.備份時同步快照相關
synchronized-snapshots功能是9.2版本引入,如果對9.2之前的版本使用并行dump,需要保證與主庫建立連接到最后一個并行進程連接期間不對數據庫做任何修改。那如果對9.2之前的版本使用-j進行備份時需要加-no-synchronized-snapshots選項。

9.2版本已經是比較老的版本,新的版本都支持synchronized-snapshots功能,因而pg_dump功能移除了–no-synchronized-snapshots選項
6.臨時對象schema名稱顯示優化
explain執行計劃里臨時對象的schema名稱固化

臨時表是在一個特殊的schema里,可以看到左邊的執行計劃截圖,實際的schema名稱是一個動態的名稱。新版本執行計劃里顯示臨時對象的schema固定顯示為pg_temp。
7.自定義變量限制
已安裝擴展插件名稱不允許作為自定義變量前綴,否則在擴展插件加載時會自動刪除該變量。

8.移除了stats_temp_directory參數
刪除了stats_temp_directory參數

9.random函數算法優化
random隨機數生成算法發生改變

對比14和15來看,最明顯的長度也是不一樣的。
保持聯系
從2019年12月開始寫第一篇文章,分享的初心一直在堅持,本人現在組建了一個PG樂知樂享交流群,歡迎關注我文章的小伙伴加我微信進群吹牛嘮嗑,交流技術。





