新特性
邏輯復制支持分區表
PostgreSQL 從版本10開始支持邏輯復制,在版本12前邏輯復制僅支持普通表,不支持分區表,如果需要對分區表進行邏輯復制,需單獨對所有分區進行邏輯復制。PostgreSQL 13 版本開始,邏輯復制新增了對分區表的支持,具體包括:1. 可以顯式地發布分區表,自動發布所有分區;2. 從分區表中添加或刪除分區將自動從發布中添加或刪除。
Btree索引優化
PostgreSQL 13 版本的Btree索引在存儲層面引入了一個重要的技術:Deduplication,是指索引項去重技術,因此有效地處理標准數據庫索引B-tree中的重復數據,繼而降低了B-tree索引所需的總體使用空間,同時提高了整體查詢性能。索引的Deduplication選項默認是開啟的,如果想關閉指定索引的Deduplication,需要設置存儲參數deduplicate_items為off。
增量排序
PostgreSQL 13 版本的一個重要特性是支持增量排序(Incremental Sorting),查詢中來自較早步驟的已排序數據可以加快后續步驟的排序。方法是通過enable_incrementalsort參數控制是否開啟增量排序,此參數默認開啟。
並行VACUUM索引
PostgreSQL 13 版本允許VACUUM並行處理表的索引,方法是通過PARALLEL參數控制是否開啟並行vacuum索引。
並行Reindexdb
reindexdb命令用於重建一個或多個庫中表的索引,可以是schema級索引重建,也可以是database級索引重建。reindexdb是REINDEX INDEX命令的的封裝,兩者在本質上沒有區別。PostgreSQL 13 版本前reindexdb不支持並行選項,13 版本此命令新增 -j 選項,支持全庫並行索引重建。
wal_keep_size
PostgreSQL 13 版本將 wal_keep_segments 重新定義為 wal_keep_size,決定了為備庫保留的WAL量。版本13采用字節大小表示,不再采用保留文件的個數,可通過下述公式換算:wal_keep_size = wal_keep_segments * wal_segment_size。