達夢分布式集群DPC_分布式任務執行拆分流程_yxy

達夢分布式集群DPC_分布式執行計劃執行拆分流程

  • 1 DPC任務拆分原理
    • 1.1 分布式架構思想
    • 1.2 DPC如何實現任務拆分?
  • 2 DPC任務拆分完整示例
    • 2.1 單表查詢
      • 2.1.1 創建分區表,存儲在不同BP上
      • 2.1.2 生成sql的最佳執行計劃
      • 2.1.3 代碼生成并執行、拆分
        • 2.1.3.1 任務拆分步驟
        • 2.1.3.2 任務拆分圖示
        • 2.1.3.3 子任務執行詳情查看
    • 2.2 表連接任務拆分
      • 2.2.1 前期準備
      • 2.2.2 任務拆分
      • 2.2.3 任務拆分圖解
      • 2.2.4 子任務執行詳情

1 DPC任務拆分原理

1.1 分布式架構思想

從單機-分布式,最大的變化是表數據從存儲到一個節點(一臺服務器),變化成分散到多個節點(多臺服務器存儲);

例如 當客戶端產生一個任務時,如執行"select *from表"
1.單機的任務執行方式為單線程調度,例如一個人承包一個任務
2.當表數據存儲在多臺服務器,就出現了任務拆分的解決方案,任務拆分為多個部分,每個人負責一部分,最后對結果匯總

通過將大任務分為多個小任務,每個小任務存儲在不同服務器,讓多臺服務器并行執行任務來提升性能

1.2 DPC如何實現任務拆分?

達夢dpc的架構為SP+MP+BP,計算節點+元數據節點+數據存儲節點

1. SP為計算節點:
作用為進行分布式執行計劃的生成,分發子任務到BP,結果集匯總等

例如
SP類似于總控節點,對任務進行拆解,并分發任務給BP

2. MP為元數據節點:
提供數據字典信息,包含數據分布等信息

例如
MP存儲了哪個分區存儲在哪個BP上
可以給SP提供元數據信息,方便SP的任務分發和計劃生成等

3. BP是數據存儲節點
BP是數據存儲節點,一般每臺服務器至少配置1個BP,方便數據拆分,并執行SP分發的任務

例如
建表時通過創建分區表,指定不同的分區存儲在不同BP上,實現數據拆分;

達夢DPC通過這三層架構協同,來解決分布式任務的拆分執行問題

2 DPC任務拆分完整示例

2.1 單表查詢

2.1.1 創建分區表,存儲在不同BP上

create table Y1(A int, B int) partition by hash(A) partitions 3 ;  
--默認會存儲在3個BP上

2.1.2 生成sql的最佳執行計劃

1.sql請求:客戶端連接SP發送sql語句 select *from Y1;2.解析:SP收到請求后,向MP申請Y1表的元數據信息,然后進行語法檢查、語義檢查、共享池檢查3.優化器階段:默認沒有緩存,會進行到優化器階段,生成最佳執行計劃①.優化器會首先生成單機版本的最佳執行計劃(CBO)project[0x1215e4170] n_exp(3) (cost: 0.04461, rows: 1)base table[0x1215e4cc8] (Y1, INDEX47617565, FULL SEARCH) (cost: 0.04461, rows: 1)②生成單機最佳執行計劃后,插入分發操作符(send、recv為分布式操作符)recv[0x1215e6f20]  (cost: 0.04461, rows: 1)send[0x1215e68d8] send_type(DIRECT) sites(5:1,12:1,10:1) gi_polic(UNIT) (cost: 0.04461, rows: 1)project[0x1215e4170] n_exp(3) (cost: 0.04461, rows: 1)base table[0x1215e4cc8] (Y1, INDEX47617565, FULL SEARCH) (cost: 0.04461, rows: 1)最佳執行計劃
1   #NSET2: [1, 1, 20] 
2     #ERECV: [1, 1, 20]; stask_no(-1), l_stask_no(0), n_key(0), in_turn(0), trig(0)
3       #ESEND: [1, 1, 20]; stask_no(0), type(DIRECT), sites(5:1,12:1,10:1), sql_invoke(0), pwj_opt(0), table(-); INFO_BITS(0xc)
4         #GI: [1, 1, 20]; policy(PART_UNIT), gi_unit[0..0], scan_type[0](FULL)
5           #PRJT2: [1, 1, 20]; exp_num(3), is_atom(FALSE) 
6             #CSCN2: [1, 1, 20]; INDEX47617565(Y1); btr_scan(1)

2.1.3 代碼生成并執行、拆分

當拿到最佳執行計劃后,進行可執行代碼生成后執行

2.1.3.1 任務拆分步驟

①任務分發
NSET2執行根計劃,任務號為stask_no(-1)=-1,往下走遇到了ERECV,這個是分布式的操作符,開始進行任務分割和數據分發,QC(查詢調度總單元)調度發送所有子計劃到BP上;

2     #ERECV: [1, 1, 20]; stask_no(-1), l_stask_no(0), n_key(0), in_turn(0), trig(0)
3       #ESEND: [1, 1, 20]; stask_no(0), type(DIRECT), sites(5:1,12:1,10:1), sql_invoke(0), pwj_opt(0), table(-); INFO_BITS(0xc)--分析
主任務號為stask_no(-1),子任務號為

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917794.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917794.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么免費建立自己的網站步驟

以下是免費建立個人網站的詳細步驟,結合多種方案和工具推薦: 一、零基礎快速建站方案 ?選擇免費建站平臺? PageAdmin CMS?: 1、提供開源模板,模板可以自定義界面和風格,同時支持原創設計和定制。 2、后臺支持自定義…

使用ASIWebPageRequest庫編寫Objective-C下載器程序

全文目錄:開篇語前言為什么選擇ASIWebPageRequest?安裝ASIWebPageRequest庫編寫下載器程序1. 導入必要的庫2. 創建下載任務3. 設置下載保存路徑4. 發起下載請求5. 更新下載進度6. 處理下載完成7. 處理下載失敗完整代碼示例8. 運行程序總結文末開篇語 哈嘍…

mathtype加載項搞崩了word(上)

一、Mathtype更新后word異常 在mathtype更新后,打開word文件時一直報宏的錯: 點擊“取消”: 點擊“確定”: 點擊“確定”: 點擊“確定”: 還有一堆小彈窗,最后還是能打開word文件: …

算法入門第一篇:算法核心:復雜度分析與數組基礎

引言:為什么需要學習算法? 你可能也發現,即使是社招,面試官也時不時會拋出幾道算法題,從簡單的反轉鏈表到復雜的動態規劃。這常常讓人感到困惑:我一個做游戲開發的,寫好 Unity 的 C# 代碼&…

從“聽指令”到“當參謀”,阿里云AnalyticDB GraphRAG如何讓AI開竅

01、背景 在智能客服與醫療問診領域,用戶模糊描述導致的多輪對話斷裂與語義關聯缺失,長期阻礙決策效率提升。傳統 RAG 技術面臨雙重困境: 單輪檢索局限:當用戶僅反饋“空調制冷效果差”、“持續發熱三天”等模糊信息時&#xff…

javascript常用實例

常見字符串操作字符串反轉const reversed hello.split().reverse().join(); console.log(reversed); // olleh檢查回文字符串function isPalindrome(str) {return str str.split().reverse().join(); }數組處理方法數組去重const unique [...new Set([1, 2, 2, 3])]; // [1,…

RK3568下用 Qt Charts 實現曲線數據展示

實際效果: 在工業監控、智能家居等場景中,實時數據可視化是核心需求之一。本文將介紹如何使用 Qt5 的 Charts 模塊,快速實現一個支持溫度、濕度、大氣壓和噪聲四個參數的實時監測系統,包含曲線動態繪制、坐標軸自適應、多窗口布局等實用功能。 項目背景與目標 環境參數監…

接口自動化測試用例詳解

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快Post接口自動化測試用例Post方式的接口是上傳接口,需要對接口頭部進行封裝,所以沒有辦法在瀏覽器下直接調用,但是可以用Curl命令…

JavaEE初階第十四期:解鎖多線程,從 “單車道” 到 “高速公路” 的編程升級(十二)

專欄:JavaEE初階起飛計劃 個人主頁:手握風云 目錄 一、JUC的常見類 1.1. Callable接口 1.2. ReentrantLock? 1.3. 信號量Semaphore 1.4. CountDownLatch 二、線程安全的集合類 2.1. 多線程環境使用 ArrayList? 2.2. 多線程環境使用哈希表 一、…

什么是RabbitMQ?

什么是RabbitMQ? 一、什么是RabbitMQ? 二、Rabbitmq 的使用場景? 三、RabbitMQ基本概念 四、RabbitMQ的工作模式 1. **簡單隊列模式(Simple Queue)** 2. **工作隊列模式(Work Queue)** 3. **發布/訂閱模式(Publish/Subscribe)** 4. **路由模式(Routing)** 5. **主題…

DVWA靶場第一關--Brute force 新手入門必看!!!

文中涉及講解burp爆破模塊介紹可能不太準確,請大佬批評指正就dvwa靶場而言,兩個常見漏洞讓我有了新的認知第一個接觸的漏洞為弱口令漏洞,常見情況下,人們口中的弱口令可能為“姓名縮寫”“123456”“生日簡寫等”接觸了dvwa&#…

完美解決Docker pull時報錯:https://registry-1.docker.io/v2/

1、錯誤描述rootubuntu-database:/opt/dify/docker# docker compose up -d [] Running 9/9? api Error context canceled …

用 Python 批量處理 Excel:從重復值清洗到數據可視化

引言日常工作中,經常需要處理多份 Excel 表格:比如合并銷售數據、清洗重復的用戶信息,最后生成可視化圖表。手動操作不僅效率低,還容易出錯。這篇文章分享一套 Python 自動化流程,用pandas和matplotlib搞定從數據清洗到…

4.5 點云表達方式——圖

(一)定義與原理 圖4-5-1 點云圖結構

wordpress菜單調用的幾種常見形式

在WordPress主題開發里,“菜單”在前端頁面中常見的調用/輸出形式可以歸納為5種,按出現頻率從高到低列給你,并給出最簡代碼片段,方便直接復制粘貼。 標準菜單位置調用(99%場景) 后臺“外觀→菜單”里把菜單A指派到菜單位置prima…

linux中pthread_t 的值與top -Hp中線程id值的區別

linux中pthread_t 值與top -Hp中線程id值的區別 #include <stdio.h> #include <pthread.h> #include <thread>void thread_func() {printf("child thread id0x%x\n",pthread_self());while(1){ printf("hello world\n");} }int ma…

Idea集成Jenkins Control插件,在IDEA中觸發Jenkins中項目的構建

IDEA可以下一個這個插件 Jenkins Control&#xff0c;直接在idea中觸發測試環境項目的部署測試環境API-TOKEN&#xff1a;XXXXXXXXXXXXXXXX&#xff08;在jenkins的首頁 - 系統管理 - 管理用戶中獲取&#xff09;配置號后&#xff0c;測試連接&#xff0c;需要是成功的狀態&…

【ARM】CMSIS6 介紹

1、 簡介CMSIS是通用微控制器軟件接口標準(Common Microcontroller Software Interface Standard ) 的簡寫。CMSIS 包括API、軟件組件、工具及工作流程&#xff0c;主要用于簡化軟件重用、縮短開發人員學習曲線&#xff0c;加快項目構建和調試&#xff0c;從而使產品更快上市。…

【含文檔+PPT+源碼】基于SSM的旅游與自然保護平臺開發與實現

項目介紹 本課程演示的是一款&#xff1f;&#xff1f;&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 帶你從零開始部署運行本套系統 該項目附帶的源碼資料…