[發(fā)明專利]并行執(zhí)行計(jì)劃的執(zhí)行方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201710804522.0 | 申請(qǐng)日: | 2017-09-08 |
| 公開(公告)號(hào): | CN107688660B | 公開(公告)日: | 2020-03-13 |
| 發(fā)明(設(shè)計(jì))人: | 郭振崗;王海龍;韓朱忠 | 申請(qǐng)(專利權(quán))人: | 上海達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司 |
| 主分類號(hào): | G06F16/22 | 分類號(hào): | G06F16/22;G06F16/2453;G06F16/28 |
| 代理公司: | 北京品源專利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 201203 上海*** | 國(guó)省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 并行 執(zhí)行 計(jì)劃 方法 裝置 | ||
本發(fā)明公開了一種并行執(zhí)行計(jì)劃的執(zhí)行方法及裝置。該方法包括:在執(zhí)行并行執(zhí)行計(jì)劃的當(dāng)前操作符節(jié)點(diǎn)前,檢查當(dāng)前操作符節(jié)點(diǎn)對(duì)應(yīng)的祖先并行操作符節(jié)點(diǎn)是否接收到并行執(zhí)行計(jì)劃之外的其他操作符節(jié)點(diǎn)發(fā)送來(lái)的數(shù)據(jù);如果接收到,則將當(dāng)前操作符節(jié)點(diǎn)作為回跳指針保存在并行操作符節(jié)點(diǎn)上,并跳轉(zhuǎn)到并行操作符節(jié)點(diǎn);在并行操作符節(jié)點(diǎn)接收到數(shù)據(jù)后,將該數(shù)據(jù)向根節(jié)點(diǎn)的方向傳送;在控制流再次流動(dòng)至所述并行操作符節(jié)點(diǎn)時(shí),根據(jù)并行操作符節(jié)點(diǎn)上的回跳指針,跳轉(zhuǎn)到回跳指針指向的操作符節(jié)點(diǎn),并清空所述回跳指針。本發(fā)明減少了內(nèi)存和磁盤資源的占用,提高了執(zhí)行的輸出效率和資源利用率,避免了引發(fā)執(zhí)行性能的問(wèn)題。
技術(shù)領(lǐng)域
本發(fā)明實(shí)施例涉及數(shù)據(jù)庫(kù)技術(shù),尤其涉及一種并行執(zhí)行計(jì)劃的執(zhí)行方法及裝置。
背景技術(shù)
在數(shù)據(jù)庫(kù)系統(tǒng)中,當(dāng)用戶輸入需要執(zhí)行的SQL(Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)語(yǔ)句時(shí),數(shù)據(jù)庫(kù)中的優(yōu)化器解析該SQL語(yǔ)句,根據(jù)數(shù)據(jù)庫(kù)中預(yù)先存儲(chǔ)的數(shù)據(jù)庫(kù)對(duì)象統(tǒng)計(jì)信息,選擇數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)路徑和執(zhí)行過(guò)程,這個(gè)訪問(wèn)路徑和執(zhí)行過(guò)程就是執(zhí)行計(jì)劃。
當(dāng)前主流的商用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)生成的執(zhí)行計(jì)劃都是樹形結(jié)構(gòu),具有多個(gè)層次,樹的每個(gè)節(jié)點(diǎn)由一個(gè)操作符構(gòu)成。執(zhí)行計(jì)劃執(zhí)行時(shí),數(shù)據(jù)從執(zhí)行計(jì)劃的葉子節(jié)點(diǎn)經(jīng)執(zhí)行計(jì)劃樹各層次節(jié)點(diǎn)的處理,流向根節(jié)點(diǎn);控制流則由根節(jié)點(diǎn)流向葉子節(jié)點(diǎn),根據(jù)每個(gè)操作符節(jié)點(diǎn)的不同,向?qū)?yīng)的孩子節(jié)點(diǎn)獲取數(shù)據(jù)。在這個(gè)過(guò)程中,無(wú)論是數(shù)據(jù)流還是控制流都是逐層進(jìn)行的,不存在跨層傳遞。
執(zhí)行計(jì)劃在執(zhí)行時(shí)控制流與數(shù)據(jù)流的流動(dòng)過(guò)程大致如下:
1)控制流將執(zhí)行計(jì)劃樹的根節(jié)點(diǎn)置為當(dāng)前節(jié)點(diǎn);
2)若當(dāng)前節(jié)點(diǎn)有子節(jié)點(diǎn)且子節(jié)點(diǎn)還沒有執(zhí)行完畢,將控制流當(dāng)前節(jié)點(diǎn)設(shè)置到當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)(若當(dāng)前節(jié)點(diǎn)有兩個(gè)子節(jié)點(diǎn),則根據(jù)當(dāng)前節(jié)點(diǎn)操作符不同,選擇一個(gè)子節(jié)點(diǎn)置為當(dāng)前節(jié)點(diǎn)),轉(zhuǎn)步驟2);
3)若當(dāng)前節(jié)點(diǎn)無(wú)子節(jié)點(diǎn)或所有的子節(jié)點(diǎn)都已執(zhí)行完畢且當(dāng)前節(jié)點(diǎn)不是根節(jié)點(diǎn),執(zhí)行當(dāng)前節(jié)點(diǎn),將當(dāng)前節(jié)點(diǎn)獲取的數(shù)據(jù),按控制流的反序?qū)?shù)據(jù)一層層向根節(jié)點(diǎn)傳遞;
3.1)若數(shù)據(jù)向上傳遞過(guò)程中遇到需要所有數(shù)據(jù)都獲取完全后才能處理的操作符(如排序SORT操作符等),則數(shù)據(jù)緩存在此操作符,控制流將該節(jié)點(diǎn)置為當(dāng)前節(jié)點(diǎn),轉(zhuǎn)步驟2)執(zhí)行;
3.2)若數(shù)據(jù)向上傳遞過(guò)程中沒有遇到需要所有數(shù)據(jù)都獲取完全后才能處理的操作符,則數(shù)據(jù)流將數(shù)據(jù)傳送到根節(jié)點(diǎn),將此批數(shù)據(jù)返回給用戶,并將根節(jié)點(diǎn)置為控制流當(dāng)前節(jié)點(diǎn),轉(zhuǎn)步驟2)執(zhí)行;
4)若當(dāng)前節(jié)點(diǎn)所有的子節(jié)點(diǎn)都已執(zhí)行完畢且當(dāng)前節(jié)點(diǎn)是根節(jié)點(diǎn),執(zhí)行結(jié)束。
在普通的執(zhí)行計(jì)劃中,數(shù)據(jù)流路徑是從葉子節(jié)點(diǎn)流向根節(jié)點(diǎn),不存在跨層流動(dòng),這種機(jī)制在單站點(diǎn)數(shù)據(jù)庫(kù)系統(tǒng)中是適用的。而在包含了具有通訊功能的并行操作符節(jié)點(diǎn)的并行執(zhí)行計(jì)劃中,數(shù)據(jù)的來(lái)源并不單一,除了從本站點(diǎn)的葉子節(jié)點(diǎn)獲取,還可以從其他站點(diǎn)的并行計(jì)劃的并行操作符節(jié)點(diǎn)獲取。例如在附圖1的并行執(zhí)行計(jì)劃中,包含了一個(gè)GATHER并行操作符節(jié)點(diǎn),在執(zhí)行過(guò)程中,其數(shù)據(jù)來(lái)源除了本站點(diǎn)的孩子節(jié)點(diǎn)PROJECT操作符的輸出數(shù)據(jù),還會(huì)從其他并行站點(diǎn)上的GATHER操作符節(jié)點(diǎn)接收數(shù)據(jù)。依照傳統(tǒng)的數(shù)據(jù)逐層傳遞方法,可能站點(diǎn)A還在執(zhí)行SCAN操作符(表掃描)節(jié)點(diǎn)時(shí),其祖先的GATHER操作符節(jié)點(diǎn)已經(jīng)收到了站點(diǎn)B發(fā)來(lái)的數(shù)據(jù)。由于控制流和數(shù)據(jù)流必須逐層傳遞,此時(shí)站點(diǎn)A正在處理葉子節(jié)點(diǎn)的SCAN操作,因此GATHER操作符節(jié)點(diǎn)無(wú)法處理站點(diǎn)B發(fā)來(lái)的數(shù)據(jù),只能等待本站點(diǎn)的控制流和數(shù)據(jù)流處理完SCAN和PROJECT操作符節(jié)點(diǎn)后,處理到GATHER操作符節(jié)點(diǎn)時(shí)才能處理。在并行執(zhí)行計(jì)劃處理中發(fā)生這種情況時(shí),別的站點(diǎn)發(fā)來(lái)的數(shù)據(jù)可能會(huì)產(chǎn)生堆積,數(shù)據(jù)量大時(shí)還需要保存到磁盤,等處理到此并行操作符節(jié)點(diǎn)時(shí)再?gòu)拇疟P讀出,占用大量?jī)?nèi)存或磁盤資源,引發(fā)資源緊張及執(zhí)行性能問(wèn)題。
發(fā)明內(nèi)容
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司,未經(jīng)上海達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710804522.0/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議設(shè)備的數(shù)據(jù)并行采集歸并方法及系統(tǒng)
- 減少EMI的并行數(shù)據(jù)傳輸方法
- 一種多媒體數(shù)據(jù)并行處理系統(tǒng)及方法
- 一種高速并行OQPSK解調(diào)時(shí)鐘的恢復(fù)系統(tǒng)
- 一種海量地震數(shù)據(jù)并行抽道集方法
- 3G協(xié)議的turbo碼并行譯碼方法及裝置
- 并行擴(kuò)展輸入輸出的教學(xué)裝置
- 數(shù)據(jù)的并行處理
- 并行式插件機(jī)
- 一種SPI總線與并行總線的橋接方法、設(shè)備、系統(tǒng)及介質(zhì)
- 以注射方式執(zhí)行死刑的自動(dòng)執(zhí)行車的執(zhí)行床
- 過(guò)程執(zhí)行裝置、過(guò)程執(zhí)行方法以及過(guò)程執(zhí)行程序
- 用以執(zhí)行跳舞電子游戲的執(zhí)行系統(tǒng)及其執(zhí)行方法
- 策略執(zhí)行系統(tǒng)及其執(zhí)行方法
- 腳本執(zhí)行系統(tǒng)和腳本執(zhí)行方法
- 命令執(zhí)行設(shè)備、命令執(zhí)行系統(tǒng)、命令執(zhí)行方法以及命令執(zhí)行程序
- 程序執(zhí)行裝置、程序執(zhí)行系統(tǒng)以及程序執(zhí)行方法
- 處理執(zhí)行設(shè)備和由該處理執(zhí)行設(shè)備執(zhí)行的方法
- 有序任務(wù)的執(zhí)行方法、執(zhí)行裝置和執(zhí)行系統(tǒng)
- 執(zhí)行器(閥門執(zhí)行器)
- 通用航空飛行計(jì)劃管理系統(tǒng)
- 一種計(jì)劃書生成方法及計(jì)劃書生成設(shè)備
- 生產(chǎn)計(jì)劃裝置以及生產(chǎn)計(jì)劃方法
- 一種計(jì)量檢定配送計(jì)劃的自動(dòng)規(guī)劃分配方法
- 計(jì)劃控制方法和裝置
- 一種任務(wù)計(jì)劃的同步展示方法及智能終端
- 一種計(jì)劃的視圖展示方法及智能終端
- 計(jì)劃裝置、計(jì)劃方法以及計(jì)劃程序
- 充電計(jì)劃變更方法、裝置及計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)
- 一種采購(gòu)信息處理方法、裝置、電子設(shè)備及可讀存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





