PostgreSQL 13–新特性

jaymarco發表於2020-12-01


PostgreSQL 13 Beta 1已經發布進行測試。

postgres=#   show server_version_num;

server_version_num

--------------------

130000

(1 row)

PostgreSQL 13 新功能

與以前的版本相比, PostgreSQL 13 中已新增了 160 多個新功能。

我將比較 PostgreSQL 12 12.3 )和 PostgreSQL 13 Beta 1 13.0 )之間的主要區別。但是,在這裡我不會描述所有功能,我將列出在 效能改進中起重要作用的功能

用於測試 PostgreSQL 13 新功能的硬體 / 軟體。

§   作業系統: RHEL 6

§   磁碟: SSD

§   PostgreSQL 版本: v12.3 vs v13 Beta 1

新功能 1 :增量排序

PostgreSQL 13在其發行說明中強調了 增量排序PostgreSQL 13的主要新功能之一。

PostgreSQL 13 的增量排序,當已經對從查詢的較早部分排序的資料進行排序時,可以加速對資料的排序。

例如,您在 c1 上有一個索引,並且需要按 c1 c2 對資料集進行排序。然後,增量排序可以為您提供幫助,因為它不會對整個資料集進行排序,而是對具有相同 c1 值的單個組進行排序。當您具有 LIMIT 子句時,增量排序將非常有幫助。

讓我們在 PostgreSQL 12 PostgreSQL 13 Beta 1 中執行以下查詢。

pgbench_accounts 訂單中選擇 * ,按幫助,出價進行;  

這裡的援助有一個指標,而出價沒有一個指標。

PostgreSQL 12.3

[postgres@dbapath06   ~]$ psql

psql (12.3)

Type "help"   for help.

 

postgres=#   SET work_mem TO '64kB';

SET

postgres=#   explain analyze select * from pgbench_accounts order by aid, bid;

                                                                  QUERY   PLAN

----------------------------------------------------------------------------------

 

 Gather Merge  (cost=60150.23..99041.91   rows=333334 width=97)

                             (actual time=494.075..707.664 rows=400000 loops=1)

     Workers Planned: 2

     Workers Launched: 2

     ->  Sort  (cost=59150.20..59566.87 rows=166667 width=97)  

                             (actual time=442.889..470.942 rows=133333 loops=3)

           Sort Key: aid, bid

           Sort Method: external merge  Disk: 16592kB

           Worker 0:  Sort Method: external merge  Disk: 13432kB

           Worker 1:  Sort Method: external merge  Disk: 11936kB

           ->  Parallel Seq Scan on pgbench_accounts  

                    (cost=0.00..8224.67   rows=166667 width=97)

                           (actual time=0.030..37.491 rows=133333 loops=3)

 Planning Time: 0.052 ms

 Execution Time: 724.088 ms

(11 rows)

 


PostgreSQL 13 Beta 1

[postgres@postgreshelp   ~]$ psql

psql (13beta1)

Type "help"   for help.

 

postgres=#   SET work_mem TO '64kB';

SET

postgres=#   explain analyze select * from pgbench_accounts order by aid, bid;

                  QUERY   PLAN

----------------------------------------------------------------------

 Incremental Sort  (cost=0.47..34957.42   rows=400000 width=97)

          (actual   time=0.208..219.769 rows=400000 loops=1)

     Sort Key: aid, bid

     Presorted Key: aid

     Full-sort Groups: 12500  Sort Method: quicksort  Average Memory:   29kB  

     Peak Memory: 29kB

     ->  Index Scan using pgbench_accounts_pkey on pgbench_accounts  

(cost=0.42..16957.42   rows=400000 width=97) (actual time=0.055..146.3

56 rows=400000   loops=1)

 Planning Time: 0.810 ms

 Execution Time: 234.531 ms

(7 rows)

透過不一次對整個表進行排序,而是對塊進行排序,這增加了排序後的塊適合記憶體的機會,並且有可能使用快速排序代替較慢,要求更高的外部排序。

您可以使用以下引數啟用或禁用查詢計劃程式對增量排序步驟的使用。預設值為   on

enable_incrementalsort   boolean


原文連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2738537/,如需轉載,請註明出處,否則將追究法律責任。

相關文章