PostgreSQL13 新特性介紹

      網友投稿 1071 2025-04-02

      postgresql 13.0版本已于2020-09-24發行,目前最新版為postgresql 13.1。PostgreSQL 13版本中包含了令人欣喜的新特性和優化,其中典型的有:


      Btree索引優化(引入Deduplication技術)

      支持增量排序

      支持并行vacuum index

      支持可信插件

      支持擴展統計信息

      支持hash aggregation使用磁盤存儲

      本文我們將選取幾個PostgreSQL 13中的重點新特性進行介紹,讓讀者先睹為快。

      1.?????? Btree索引優化

      如果一張表的某些列值不是唯一的,那么將會存在很多重復值,一旦該列上建有索引的話,那么索引也會有很多重復的索引項。在PostgreSQL 13中引入了deduplicate功能,該功能將會定期的將重復的索引項合并,有效地減少了索引的存儲空間。隨著索引項的減少,重建索引、vacuum索引的速度都將獲得提升,查詢的效率也會得到提升。

      下面我們分別在PostgreSQL 12?和?13?版本中創建唯一索引和包含大量重復項的索引,比較一下效果。測試腳本如下:

      CREATE TABLE test_tbl (id int4, str varchar(64), time timestamp without time zone); INSERT INTO test_tbl (id, str, time) SELECT round(100000000*random()), 'test_tbl_000' || num, '2020-12-31 24:00:00' FROM generate_series(1,6000000) num; CREATE UNIQUE INDEX idx_on_str ON test_tbl USING BTREE(str); CREATE INDEX idx_on_time ON test_tbl USING BTREE(time);

      idx_on_str是唯一索引;idx_on_time是非唯一索引,存儲的索引項都一樣。

      PostgreSQL 12.2?查看索引大小,如下:

      在PostgreSQL 13?中查看索引大小:

      根據以上信息可以看出,創建索引后,唯一索引在12版本13版本大小一致,都是232MB;但是非唯一索引的差別較大,13版本的非唯一索引大小約為12版本的1/3不到,減小了很多存儲空間。

      2.?????? 增量排序

      增量排序用在多列排序的場景下來加快排序速度。例如,下面的SQL:

      SELECT * FROM table ORDER BY c1, c2 LIMIT 10;

      如果c1已經排好序,那么只需要在此基礎上對c2進行增量排序即可。PostgreSQL 13?版本新增了enable_incrementalsort參數控制是否開啟增量排序,此參數默認開啟,可以通過set enable_incremental_sort = off?關閉。

      下面我們在100萬條數據的表上測試一下增量排序的效果:

      未打開增量排序:

      打開增量排序:

      未打開增量排序前,sql執行時間為222ms,打開增量排序之后,執行時間變為0.213ms,性能相比未開啟增量排序時提升了好幾個數量級。

      3.?????? 支持并行VACUUM

      PostgreSQL 13支持了對索引的并行VACUUM,可以通過指定parallel選項打開該功能。使用該功能存在如下限制:

      目前僅限于索引的并行vacuum,每個索引會分配一個vacuum worker。

      不支持在加上FULL選項后使用。

      只有在至少包含有2個及以上索引的表上使用parallel選項才有效。

      索引的大小超過min_parallel_index_scan_size

      下面我們準備一張包含300萬條數據的表,表上建了兩個索引,在PostgreSQL 13上對比下正常vacuum和并行vacuum的效果:

      先看在PostgreSQL 13正常vacuum的情況:

      再看下在pg13下并行vacuum的執行情況:

      從上圖比較可以看到,啟用并行vacuum之后時間由356ms減少到42ms,提升了8倍多。

      4.? ? ?可信插件

      PostgreSQL 13允許?非superuser安裝一些被指定為可信的插件到自己的數據庫中,只要該用戶擁有?CREATE?權限即可。之前的版本是當用戶想安裝一個插件的時候,必須具有superuser權限。在pg13里將不需要這樣了:只要某個插件被標記為“trusted”,那么就不再需要superuser權限了。插件是否可信,取決于插件的control文件,只要在control文件里設置了trusted = true,那么該插件就是可信的。

      我們創建一個普通用戶,然后用該用戶登錄數據庫去創建插件會失敗:

      然后我們在pg_stat_statements.control文件里加上trusted = true之后再去嘗試就成功了:

      5.?????? 總結

      PostgreSQL 13帶來了很多令人欣喜的新特性和優化,本文限于篇幅只介紹了其中4個。包括邏輯復制支持分區表,擴展統計信息,跟蹤wal使用信息等很多很有意思的功能讀者可以自行探索。

      詳細說明請參考社區官方Release Notes:https://www.postgresql.org/docs/13/release-13.html

      PostgreSQL13 新特性介紹

      PostgreSQL 云數據庫 PostgreSQL 數據復制服務 DRS 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:公式解讀: 如果C列完成數量單元格內填入了數據(公式的理解)
      下一篇:JavaThreadLocal
      相關文章
      国产亚洲人成A在线V网站| 18禁亚洲深夜福利人口| 亚洲婷婷国产精品电影人久久| 亚洲制服在线观看| 亚洲高清不卡视频| 亚洲伊人tv综合网色| 久久av无码专区亚洲av桃花岛| 亚洲精品自在在线观看| 亚洲成a人片在线播放| 亚洲高清国产拍精品熟女| 亚洲人成网站999久久久综合| 亚洲熟女www一区二区三区| 亚洲国产高清美女在线观看| 亚洲av日韩av无码av| 亚洲男人天堂2018av| 亚洲一区二区观看播放| 亚洲国产成人久久精品软件 | 亚洲情A成黄在线观看动漫软件 | 久久久久亚洲av无码尤物| 亚洲人成依人成综合网| 朝桐光亚洲专区在线中文字幕| 亚洲人成网7777777国产| 国产亚洲精品仙踪林在线播放| 亚洲色欲色欲www在线丝| 亚洲精品久久无码av片俺去也| 亚洲av无码av在线播放| 亚洲日本在线观看视频| 亚洲小说图片视频| 国产亚洲欧洲Aⅴ综合一区| 男人的天堂亚洲一区二区三区| 亚洲午夜久久影院| 亚洲免费在线观看视频| 亚洲精品无码不卡| 亚洲色大成网站www永久一区| 亚洲精品国产福利一二区| 亚洲精品久久久久无码AV片软件| 亚洲成人福利在线观看| 亚洲一区二区三区免费视频 | 亚洲中文字幕无码爆乳app| 337p欧洲亚洲大胆艺术| 亚洲国产成人片在线观看|