并行查询
更新时间:
复制 MD 格式
云原生数据仓库AnalyticDB PostgreSQL版提供了单表查询的并行查询功能。在低并发场景下,开启并行查询,对大数据量单表聚合查询,能够减少约50%的查询时间。
功能说明
如果您的实例Segment节点是4核及以上规格,单表查询将自动开启并行查询,提升多核并发能力、降低查询时间。系统会通过当前并发数、Segment配置和SQL信息,自动选择并行度,在检测到当前系统负载较大时会关闭并行查询。
说明
请确保您的实例内核小版本为6.3.4.0及以上版本,如何升级小版本,请参见版本升级。
并行查询适用于4核及以上规格的实例。
测试示例
用于测试的AnalyticDB PostgreSQL实例规格如下:
Segment节点规格:4C32G
Segment节点数量:4
在数据库中导入10 GB测试数据,并行加速前后的单表查询时间耗时如下:
并行加速前
postgres=# select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order from lineitem where l_shipdate <= date '1998-12-01' - interval '90' day group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus; l_returnflag | l_linestatus | sum_qty | sum_base_price | sum_disc_price | sum_charge | avg_qty | avg_price | avg_disc | count_order --------------+--------------+-----------+-----------------+---------------------+----------------------+----------------------+---------------------+--------------------------+------------ A | F | 377518399 | 566065727797.25 | 537759104278.0656 | 559276670892.116819 | 25.5009751030070973 | 38237.151008958546 | 0.05000065745402432046 3 | 14804077 N | F | 9851614 | 14767438399.17 | 14028805792.2114 | 14590490998.366737 | 25.5224483028409474 | 38257.810660081140 | 0.04997336773765667183 0 | 385998 N | O | 743124873 | 1114302286901.88| 1058580922144.9638 | 1100937000170.591854 | 25.4980758706893147 | 38233.902923481810 | 0.05000081182131310603 3 | 29144351 R | F | 377732830 | 566431054976.00 | 538110922664.7677 | 559634780885.086257 | 25.5083847896801383 | 38251.219273559761 | 0.04999967923140874204 5 | 14808183 (4 rows) Time: 17456.066 ms并行加速后
postgres=# select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order from lineitem where l_shipdate <= date '1998-12-01' - interval '90' day group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus; l_returnflag | l_linestatus | sum_qty | sum_base_price | sum_disc_price | sum_charge | avg_qty | avg_price | avg_disc | count_order --------------+--------------+-----------+------------------+--------------------+---------------------+--------------------+--------------------+------------------------+------------- A | F | 377518399 | 566065727797.25 | 537759104278.0656 | 559276670892.116819 | 25.5009751030070973 | 38237.151008958546 | 0.050000657454024320463 | 14804077 N | F | 9851614 | 14767438399.17 | 14028805792.2114 | 14590490998.366737 | 25.5224483028409474 | 38257.810660081140 | 0.049973367737656567180 | 385998 N | O | 743124873 | 1114302286901.88 | 1058580922144.9638 | 1100937000170.591854 | 25.4980758706893147 | 38233.902923481810 | 0.05000081182113130603 | 29144351 R | F | 377732830 | 566431054976.00 | 538110922664.7677 | 559634780885.086257 | 25.5083847896801383 | 38251.219273559761 | 0.04999679231408742045 | 14808183 (4 rows) Time: 9407.291 ms
并行加速前 | 并行加速后 |
17456.066ms | 9407.291ms |
该文章对您有帮助吗?