【云圖說】第132期 小云妹帶您快速玩轉RDS實例操作(2)——刪除與退訂
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
PostgreSQL 云數據庫 PostgreSQL 數據復制服務 DRS 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。