網站首頁 編程語言 正文
一、優化器并行計算的并行度計算方法
1、總worker進程數
postgres=# show ; max_worker_processes ---------------------- 128 (1 row)
2、所有會話,在同一時刻的QUERY,并行計算最大允許開啟的WORKER數。
max_parallel_workers
3、單條QUERY中,每個node最多允許開啟的并行計算WORKER數
postgres=# show max_parallel_workers_per_gather ; max_parallel_workers_per_gather --------------------------------- 0 (1 row)
4、單個query, node的并行度
Min(parallel_workers(表級設置,沒有設置則,根據表大小計算得到), max_parallel_workers_per_gather)
5、表級并行度參數,默認不設置,從表大小計算。
postgres=# alter table pa set (parallel_workers =32); ALTER TABLE
6、真實并行度算法
min (max_worker_processes - 已運行workers , max_parallel_workers - 其他會話當前真實啟用的并行度 , Min(parallel_workers(表級設置,沒有設置則,根據表大小計算得到), max_parallel_workers_per_gather) )
二、優化器是否選擇并行計算
優化器是否使用并行計算,取決于CBO,選擇成本最低的方法,并行計算成本估算,成本因子參數如下:
postgres=# show parallel_tuple_cost ; parallel_tuple_cost --------------------- 0 (1 row) postgres=# show parallel_setup_cost ; parallel_setup_cost --------------------- 0 (1 row)
如果非并行計算的執行計劃成本低于并行計算的成本,則不使用并行計算。
三、優化器是否忽略并行計算
如果表掃描或索引掃描的表或索引低于設置的閾值,這個表掃描或索引掃描則不啟用并行計算。
postgres=# show min_parallel_table_scan_size ; min_parallel_table_scan_size ------------------------------ 0 (1 row) postgres=# show min_parallel_index_scan_size ; min_parallel_index_scan_size ------------------------------ 0 (1 row)
四、優化器強制選擇并行計算參數
#force_parallel_mode = on
五、并行計算相關參數
1、創建索引,CREATE TABLE AS,SELECT INTO 的并行度
postgres=# show max_parallel_maintenance_workers ; max_parallel_maintenance_workers ---------------------------------- 24 (1 row)
2、并行分區表JOIN
#enable_partitionwise_join = on
3、并行分區表分區聚合
#enable_partitionwise_aggregate = on
4、并行HASH計算
#enable_parallel_hash = on
5、LEADER主動獲取并行WORKER的返回結果
parallel_leader_participation = on
6、并行APPEND(分區表),UNION ALL查詢
#enable_parallel_append = on
六、強行并行
強制并行度24
1、總的可開啟的WORKER足夠大 postgres=# show max_worker_processes ; max_worker_processes ---------------------- 128 (1 row) 2、所有會話同時執行并行計算的并行度足夠大 postgres=# set max_parallel_workers=64; SET 3、單個QUERY中并行計算NODE開啟的WORKER=24 postgres=# set max_parallel_workers_per_gather =24; 4、所有表和索引掃描允許并行 postgres=# set min_parallel_table_scan_size =0; postgres=# set min_parallel_index_scan_size =0; 5、并行計算優化器成本設置為0 postgres=# set parallel_tuple_cost =0; postgres=# set parallel_setup_cost =0; 6、設置表級并行度為24 postgres=# alter table pa set (parallel_workers =24); ALTER TABLE 7、效果,強制24并行。 postgres=# explain (analyze) select count(*) from pa; QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate (cost=1615.89..1615.89 rows=1 width=8) (actual time=81.711..81.711 rows=1 loops=1) -> Gather (cost=1615.83..1615.83 rows=24 width=8) (actual time=81.572..90.278 rows=25 loops=1) Workers Planned: 24 Workers Launched: 24 -> Partial Aggregate (cost=1615.83..1615.83 rows=1 width=8) (actual time=58.411..58.411 rows=1 loops=25) -> Parallel Seq Scan on pa (cost=0.00..712.71 rows=416667 width=0) (actual time=0.012..35.428 rows=400000 loops=25) Planning Time: 0.449 ms Execution Time: 90.335 ms (8 rows)
七、函數并行
1、并行函數
create or replace function ftest(int) returns boolean as $$ select $1<1000; $$ language sql strict parallel safe; -- parallel safe 語法
2、并行聚合函數
combinefunc
原文鏈接:https://www.cnblogs.com/zhenren001/p/16106443.html
相關推薦
- 2022-11-28 ContentProvider客戶端處理provider邏輯分析_Android
- 2022-08-23 .net?core中的System.Buffers命名空間_基礎應用
- 2022-11-11 利用Python程序讀取Excel創建折線圖_python
- 2022-10-14 Transformer解讀之:Transformer 中的 Attention 機制
- 2023-03-03 AJAX亂碼與異步同步以及封裝jQuery庫實現步驟詳解_AJAX相關
- 2022-11-06 Android實現圓形圖片小工具_Android
- 2021-12-13 C語言數據結構與算法之圖的遍歷(一)_C 語言
- 2023-05-19 Kotlin?Suspend掛起函數的使用詳解_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支