亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

存儲過程中多查詢亂序執(zhí)行的系統(tǒng)和方法與流程

文檔序號:12287931閱讀:268來源:國知局

技術領域
:本發(fā)明涉及數(shù)據(jù)庫查詢處理,在實施例中,尤其涉及用于存儲過程中多查詢亂序執(zhí)行的系統(tǒng)和方法。
背景技術
::在數(shù)據(jù)庫系統(tǒng)中,存儲過程由多個結構化查詢語言(structuredquerylanguage,SQL)語句(這里也稱為查詢)組成,用來計算結果。所述過程可以包括順序執(zhí)行、分支、循環(huán)和對其他存儲過程的調(diào)用。當寫入所述存儲過程時,開發(fā)者采用順序執(zhí)行模型以得到正確的結果。然而,在某些情況下,可能會調(diào)度這些語句以使其并行運行,從而實現(xiàn)最佳響應時間。多個商業(yè)數(shù)據(jù)庫支持內(nèi)部并行查詢,使一個查詢可以分為多個更小的并行部分,以利用更多的資源(例如,處理器核、存儲器)。這在某些情況下有助于傳統(tǒng)的串行執(zhí)行方案。然而,多查詢亂序(outoforder,OOO)執(zhí)行能夠便于某些場景,其中該過程中,查詢或語句是亂序執(zhí)行的。一種用于調(diào)度存儲過程中OOO多查詢的有效方法例如有利于實現(xiàn)響應時間的提升和/或更好的資源利用。技術實現(xiàn)要素:根據(jù)一實施例,一種由數(shù)據(jù)庫處理系統(tǒng)多查詢亂序(outoforder,OOO)執(zhí)行的方法包括:在編譯過程時,檢測多個語句即數(shù)據(jù)庫查詢語言語句之間的依賴關系;在依賴關系表中保持所述語句的依賴關系。所述方法還包括:在執(zhí)行所述過程時,檢測所述語句之間依賴關系的變化;當檢測到所述依賴關系的變化時,在所述依賴關系表中更新所述依賴關系;根據(jù)所述依賴關系表對所述語句進行調(diào)度以進行OOO執(zhí)行。根據(jù)另一實施例,一種由數(shù)據(jù)庫處理系統(tǒng)執(zhí)行OOO多查詢的方法包括:創(chuàng)建依賴關系分析表。在編譯過程時,所述方法包括:檢測包括多個語句的查詢樹中的語句依賴關系;根據(jù)所述語句依賴關系在所述表中插入所述語句的依賴關系信息。在執(zhí)行所述過程時,所述方法包括:對于每個語句,根據(jù)所述表中所述語句的所述依賴關系信息確定是否進行第二語句的OOO執(zhí)行。在執(zhí)行每個語句時,所述方法包括:在所述表中更新所述語句的依賴關系信息和依賴于所述語句的每個其他語句的依賴關系信息。根據(jù)又一實施例,一種支持OOO多查詢執(zhí)行的數(shù)據(jù)庫系統(tǒng)的處理組件包括至少一個處理器和一種用于存儲由所述至少一個處理器執(zhí)行的程序的非瞬時性計算機可讀存儲介質。所述程序包括指令,用于:在編譯過程時,檢測多個語句即數(shù)據(jù)庫查詢語言語句之間的依賴關系;在依賴關系表中保持所述語句的依賴關系。所述程序還包括指令,用于:在執(zhí)行時,當檢測到所述語句之間的依賴關系的變化時,在所述依賴關系表中更新依賴關系。所述程序還包括指令,用于:根據(jù)所述依賴關系表對所述語句進行調(diào)度以進行OOO執(zhí)行。根據(jù)又一實施例,一種計算機可讀介質,用于存儲指令的計算機程序,其中,當處理系統(tǒng)執(zhí)行所述指令時,所述指令使所述系統(tǒng)執(zhí)行一種方法。所述方法包括:在編譯過程時,檢測多個語句即數(shù)據(jù)庫查詢語言語句之間的依賴關系;在依賴關系表中保持所述語句的依賴關系。所述方法還包括:在執(zhí)行所述過程時,檢測所述語句之間依賴關系的變化;當檢測到所述依賴關系的變化時,在所述依賴關系表中更新所述依賴關系;根據(jù)所述依賴關系表對所述語句進行調(diào)度以進行OOO執(zhí)行。根據(jù)又一實施例,一種數(shù)據(jù)庫處理系統(tǒng)的處理組件包括:用于編譯過程時,檢測多個語句即數(shù)據(jù)庫查詢語言語句之間的依賴關系的構件;用于在依賴關系表中保持所述語句的依賴關系的構件;用于在執(zhí)行所述過程時,檢測所述語句之間依賴關系的變化的構件;用于當檢測到所述依賴關系的變化時,在所述依賴關系表中更新所述依賴關系的構件;用于根據(jù)所述依賴關系表對所述語句進行調(diào)度以進行OOO執(zhí)行的構件。根據(jù)又一實施例,所述處理組件可包括其他一個或多個構件(或模塊)來分別執(zhí)行方法實施例中提供的一個或多個步驟。根據(jù)又一實施例,一種數(shù)據(jù)庫處理系統(tǒng)包括:處理系統(tǒng),用于:創(chuàng)建依賴關系分析表;在編譯過程時,檢測包括多個語句的查詢樹中的語句依賴關系;根據(jù)所述語句依賴關系在所述表中插入所述語句的依賴關系信息;在執(zhí)行所述過程時,對于每個語句,根據(jù)所述表中所述語句的所述依賴關系信息確定是否進行第二語句的OOO執(zhí)行;在執(zhí)行每個語句時,在所述表中更新所述語句的依賴關系信息和依賴于所述語句的每個其他語句的依賴關系信息。根據(jù)又一實施例,所述處理系統(tǒng)可包括其他一個或多個構件(或模塊)來分別執(zhí)行方法實施例中提供的一個或多個步驟。上文寬泛地概括了本發(fā)明實施例的特征,以便可以更好地理解以下本發(fā)明詳細描述。下文將對本發(fā)明實施例的其他的特征和優(yōu)勢進行說明,這也構成了本發(fā)明權利要求的主題。本領域的技術人員應當理解,所公開的概念和特定實施例易被用作修改或設計其他實現(xiàn)與本發(fā)明相同的目的的結構或過程的基礎。本領域的技術人員還應當意識到,這種等同構造不脫離所附權利要求書所闡述的本發(fā)明的精神和范圍。附圖說明為了更完整地理解本發(fā)明及其優(yōu)點,現(xiàn)在參考下文結合附圖進行的描述,其中:圖1示出了用于存儲過程的查詢樹的示例。圖2示出了一實施例的用于存儲過程中多查詢亂序調(diào)度的方法。圖3是一種能夠用于執(zhí)行不同實施例的處理系統(tǒng)圖。除非另有指示,否則不同圖中的對應標號和符號通常指代對應部分。繪制各圖是為了清楚地說明實施例的相關方面,因此未必是按比例繪制的。具體實施方式下文將詳細論述當前優(yōu)選實施例的制作和使用。然而,應了解,本發(fā)明提供可在各種具體上下文中體現(xiàn)的許多適用的發(fā)明性概念。所論述的具體實施例僅僅說明用以實施和使用本發(fā)明的具體方式,而不限制本發(fā)明的范圍。一些場景中要求或受益于多查詢亂序(outoforder,OOO)執(zhí)行。例如,由于數(shù)據(jù)傾斜,內(nèi)部并行查詢的中間資源利用率可能會有偏差,造成資源閑置或資源在執(zhí)行時的某些時間段內(nèi)可用。在順序模型中,下一語句必須等待上一語句完成。然而,使用OOO執(zhí)行允許下一語句使用可用的資源,而不用等待。在中央處理器(centralprocessingunit,CPU)內(nèi)集成有多個核的場景中,通過一定程度的并行,可不包括所有處理核,中等大小的查詢可實現(xiàn)更高的CPU效率。這樣,剩下一些可用核。通過OOO執(zhí)行,所述可用核可用于執(zhí)行除了當前查詢外的其他語句,進而提升整體效率。在另一場景中,資源管理器監(jiān)控系統(tǒng),并可以根據(jù)當前資源利用率延遲查詢。然而,若允許所述管理器獲知當前存儲過程中的下一語句,所述監(jiān)控器可調(diào)度一些語句,進而全面利用資源。所述調(diào)度可進一步允許共享所述資源,如緩沖池。這里的實施例提供了存儲過程中的高效OOO多查詢執(zhí)行。所述實施例包括一種系統(tǒng)框架和方法,用于調(diào)度OOO多查詢,實現(xiàn)用于執(zhí)行存儲過程(storedprocedure,SP)語句的更快的響應時間。這里所使用的可互換的術語“查詢”和“語句”是指所述SP中的單個指令。在編譯SP時,解析并分析每個語句中的讀入集(readset,RS)對象和寫入集(writeset,WS)對象以用于依賴關系。分析的結果在系統(tǒng)表中保持。若數(shù)據(jù)定義語言(datadefinitionlanguage,DDL)改變了數(shù)據(jù)庫依賴關系,可重新編譯SP。當(在所述編譯步驟后)運行或執(zhí)行所述SP時,如果需要的話,可找回并進而修改RS/WS對象依賴關系。任何沒有依賴關系的語句可經(jīng)調(diào)度以任何順序運行,例如,若執(zhí)行語句的成本估計表明OOO運行是有益的。數(shù)據(jù)庫系統(tǒng)配備有多個組件,使能調(diào)度存儲過程中的OOO多查詢。所述組件包括一個編譯器,能編譯SP并識別存儲過程中的RS和WS對象。所述系統(tǒng)配備有一個用于追蹤數(shù)據(jù)庫對象的依賴關系的系統(tǒng)表和一個能調(diào)度OOO查詢的查詢調(diào)度器。所述系統(tǒng)編譯器用于解析SP并識別RS/WS對象,使能進行依賴關系分析。在編譯步驟中,如下所述,用于追蹤數(shù)據(jù)庫對象依賴關系的所述系統(tǒng)表用來識別RS/WS中參考的對象。隨后,在運行時間或執(zhí)行中,查詢調(diào)度器進行另一輪的運行時間依賴關系檢查,并相應地調(diào)度OOO查詢(資源利用率)。為了分析數(shù)據(jù)依賴關系,分析存儲過程的語句(或查詢)中的多個特征,其中包括RS/WS對象、數(shù)據(jù)庫對象粒度、隱式數(shù)據(jù)庫依賴關系和查詢粒度。RS對象被識別為查詢需要讀入的任何對象。WS對象被標識為查詢將要更新的任何對象。有兩類RS/WS對象:程序對象和數(shù)據(jù)庫對象。典型地,程序對象可被程序語言識別并處理。數(shù)據(jù)庫對象可能更復雜,若按字面檢查(僅根據(jù)語法)數(shù)據(jù)庫對象,可造成錯誤的依賴關系結果。例如,表1示出了S1和S2這兩個語句以及相應的RS和WS。根據(jù)字面(語法)解讀,T1和V1是不同的對象,因此S1和S2可能互相獨立且可如述調(diào)度。然而,若V1實際上是T1的物化視圖,那么S2依賴于S1。為了重新編譯SP,在系統(tǒng)中保持系統(tǒng)表來追蹤對象的依賴關系。可基于系統(tǒng)表信息來確定S1和S2的RS/WS對象的實際依賴關系。表1:語句以及相應的RS/WS的示例圖1示出了用于存儲過程的查詢樹100的示例。查詢樹100包括多個SQL語句(或查詢),其中包括:UPDATET3…WHEREc=(SELECTCOUNT(*)FROMV1JOINT1ON…)。上述中,視圖V1分解為對象T1和T2。WS={T3},RS={T1,T2}。為識別WS,將UPDATE目標加入WS。不像其他數(shù)據(jù),數(shù)據(jù)庫對象可以具有粒度。例如,表2示出了S1和S2這兩個語句以及對象粒度。盡管S1和S2在表1中有依賴關系,但是這兩個語句實際涉及不同的范圍。因此,S1和S2可單獨調(diào)度。因為SP可將獲取參數(shù)作為用戶輸入,所以運行時間的檢查用于核實不出現(xiàn)在編譯時而是在運行時間內(nèi)出現(xiàn)的依賴關系。表2:語句以及對象粒度的示例語句讀入集寫入集S1@i,V1(c>1)V1S2@jT1(c<1)在隱式數(shù)據(jù)庫依賴關系的示例中,考慮了下列語句:S1:UPDATEtblSETi=1WHEREi=2;S2:GETDIAGNOSTICSvar=ROW_COUNT。上述中,根據(jù)字面(語法)分析,這兩個語句之間沒有依賴關系。然而,根據(jù)執(zhí)行S1的結果,語句S2受到了影響。因此,S2實際上依賴于S1。也有命令能改變隨機種子、改變語言地區(qū)行為或改變造成后面語句中行為變化的其他命令。這種命令,例如,UTILITY命令,可作為界限,查詢不能(在完成所述命令前)越過所述命令調(diào)度。考慮到查詢執(zhí)行支持內(nèi)部并行查詢,根據(jù)查詢粒度,實際上一個查詢可由幾個小查詢組成。因此,如上所述,所述查詢的每個并行片段都可作為一個完整的查詢,并相應地分析依賴關系。例如,表3示出了S1和S2這兩個語句以及查詢粒度。表3:語句以及查詢粒度的示例語句讀入集寫入集S1@i,T1T1S2@jT1,T2表3中,S2依賴于S1的T1。因為S2是T1和T2之間的結合命令,查詢優(yōu)化器能使S2按如下并行:--HashJoin---repartition–T1|-----repartition–T2(buildside)如表4所示,所述并行可改變依賴關系。表4:表3中S2并行后的語句上述中,S2_2得以在S1前面自由運行,但是一直到S1完成前S2_3都被阻止運行。這并不會使能夠進行內(nèi)部并行查詢的查詢優(yōu)化器變得更復雜。識別依賴關系的算法包括兩部分:編譯時間部分和運行時間部分。所述運行時間部分用于驗證參數(shù)和確定任何編譯時間操作中不確定的依賴關系。下列是對數(shù)據(jù)依賴關系分析的算法的示例:DataDependencyAnalysis(SP@sp)/*創(chuàng)建依賴關系表*/Foreachstatement,parsetree@sin@spanalysisdependency:Createanentry(statement,RS{},WS{},DependOn{})independencytableIf@sisaUTILITYcommandInsertabarrierprotectingcurrentsegmentElse/*注意:葉子節(jié)點已將視圖重新寫入基數(shù)關系*/Insertleafnodes,argumentstoRS{}anddestinationnode(includingtriggers)toWS{}/*分析從未越過界限的依賴關系*/ForeachbarrierprotectedsegmentsForeachpair(i,j),i<j,withinthissegmentAdditoj’sDependOn{}if(WS(j)∩RS(i))∪(WS(i)∩RS(j))∪(WS(i)∩WS(j))?。?*保持結果*/MarktheoneswithargumentsDependOn{}=uncertainforruntimeanalysisPersisttheresultstogetherwith@spinasystemtable因為依賴關系分析是基于數(shù)據(jù)庫對象的,若編譯時間內(nèi)任何對象發(fā)生了變化,就要重新編譯查詢或語句并重新計算依賴關系。如上所述,若數(shù)據(jù)庫對象的數(shù)據(jù)發(fā)生變化,可能需要也可能不需要編譯,取決于依賴關系的粒度。當S1和S2之間沒有數(shù)據(jù)依賴關系時,可選擇利用OOO運行語句,可取決于資源調(diào)節(jié)器(或調(diào)度器)。這種情況下,不需要額外邏輯,所述資源調(diào)節(jié)器可簡單地將S1和S2視作新到的查詢。然后,可將解決分支依賴關系延遲至查詢運行時間。下列查詢是處理查詢分支的示例:@i=SELECTCOUNT(*)FROMTWHEREi>9;--S1IF(@i>1000)@j=SELECT…;--S2ELSE@k=SELECT…;--S3對于上述的查詢分支,查詢優(yōu)化器設置概率@p為@i>1000。執(zhí)行時,查詢控制器可監(jiān)控S1的執(zhí)行,相應地調(diào)節(jié)@p,來決定是否調(diào)用S2或S3。實現(xiàn)回環(huán)也可視為分支的一種特殊情況。圖2示出了一實施例的,例如,數(shù)據(jù)庫處理系統(tǒng)調(diào)度存儲過程中OOO多查詢的方法200。步驟210:創(chuàng)建或保持依賴關系分析表。所述表包括下列元素的列:語句標識符、語句的RS、語句的WS和語句的依賴關系。步驟220:在編譯SP中的每個語句時,所述方法開始解析查詢樹來分析依賴關系,并相應地更新依賴關系表。該步驟可包括:確定執(zhí)行每個語句的成本,若所述成本超過預定義的閾值(例如,執(zhí)行時間、內(nèi)存使用率),則對所述語句進行依賴關系分析。否則,可跳過對所述語句的依賴關系分析。步驟230:解析時,對于每個檢測到的UTILITY命令(例如,預定義的UTILITY命令),在語句中插入界限,來保護語句的當前解析片段。步驟240:解析時,將所述樹中每個葉子節(jié)點的參數(shù)插入到解析的語句的表條目中的RS列。步驟250:將目的節(jié)點(包括觸發(fā)器)插入到條目的WS。步驟260:對于每個界限,分析語句之間的依賴關系(如上述實施例所述),對所述表中每個語句的依賴關系信息進行更新以指示依賴關系。在編譯階段初步考慮依賴關系,例如,在運行時間階段會改變的對象。步驟270:在運行時間或執(zhí)行階段,對于每個當前執(zhí)行的語句,通過檢驗所述表中的依賴關系信息以及編譯時插入的界限,資源調(diào)度器考慮其他語句的OOO執(zhí)行。所述步驟可包括:比較在過程順序中上一語句執(zhí)行完成前執(zhí)行語句的成本(例如,時延、內(nèi)存使用)。當根據(jù)所述成本確定OOO執(zhí)行第二語句有益(例如,節(jié)省執(zhí)行時間)時,在上一語句執(zhí)行完成前執(zhí)行所述第二語句。步驟280:在執(zhí)行每個語句時,若需要的話,系統(tǒng)根據(jù)執(zhí)行結果更新語句的依賴關系信息以及所述語句所依賴的語句的依賴關系信息。圖3是處理系統(tǒng)300的方框圖,該處理系統(tǒng)可以用來實現(xiàn)本文公開的實施例和方法。例如,處理系統(tǒng)300可為數(shù)據(jù)庫處理系統(tǒng)或所述系統(tǒng)的一部分,例如,服務器。特定裝置可利用所有所示的組件或所述組件的僅一子集,且裝置之間的集成程度可能不同。此外,設備可以包括部件的多個實例,例如多個處理單元、處理器、存儲器、發(fā)射器、接收器等。處理系統(tǒng)300可以包括配備一個或多個輸入/輸出設備,例如揚聲器、麥克風、鼠標、觸摸屏、按鍵、鍵盤、打印機、顯示器等的處理單元301。處理單元301可以包括中央處理器(CPU)310、存儲器320、大容量存儲器設備330、視頻適配器340以及連接至總線的I/O接口390??偩€可以是任意類型的若干總線架構中的一個或多個,包括存儲總線或存儲控制器、外設總線、視頻總線等等。所述CPU310可包括任何類型的電子數(shù)據(jù)處理器。存儲器320可包括任意類型的系統(tǒng)存儲器,例如靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、同步DRAM(SDRAM)、只讀存儲器(ROM)或其組合等等。在實施例中,存儲器320可包括在開機時使用的ROM以及在執(zhí)行程序時使用的存儲程序和數(shù)據(jù)的DRAM。大容量存儲器設備330可包括任意類型的存儲設備,其用于存儲數(shù)據(jù)、程序和其它信息,并使這些數(shù)據(jù)、程序和其它信息通過總線訪問。大容量存儲器設備330可包括如下項中的一種或多種:固態(tài)磁盤、硬盤驅動器、磁盤驅動器、光盤驅動器等等。視頻適配器340和I/O接口390提供接口以將外部輸入和輸出設備耦合到處理單元301。如圖所示,輸入和輸出設備的示例包括耦合到視頻適配器340的顯示器360和耦合到I/O接口390的鼠標/鍵盤/打印機組合370。其它設備可以耦合到處理器單元301,并且可以使用額外或更少的接口卡。例如,可使用如通用串行總線(USB)(未示出)等串行接口將接口提供給打印機。處理單元301還包括一個或多個網(wǎng)絡接口350,網(wǎng)絡接口350可包括以太網(wǎng)電纜等有線鏈路,和/或到接入節(jié)點或者一個或多個網(wǎng)絡380的無線鏈路。網(wǎng)絡接口350允許處理單元301通過網(wǎng)絡380與遠程單元通信。例如,網(wǎng)絡接口350可以通過一個或多個發(fā)射器/發(fā)射天線以及一個或多個接收器/接收天線提供無線通信。在一個實施例中,處理單元301耦合到局域網(wǎng)或廣域網(wǎng)上以用于數(shù)據(jù)處理以及與遠程裝置通信,所述遠程裝置例如其它處理單元、因特網(wǎng)、遠程存儲設施或其類似者。雖然本發(fā)明中已提供若干實施例,但應理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開的系統(tǒng)和方法可以以許多其他特定形式來體現(xiàn)。本發(fā)明的實例應被視為說明性而非限制性的,且本發(fā)明并不限于本文本所給出的細節(jié)。例如,各種元件或部件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實施。此外,在不脫離本發(fā)明的范圍的情況下,各種實施例中描述和說明為離散或單獨的技術、系統(tǒng)、子系統(tǒng)和方法可以與其它系統(tǒng)、模塊、技術或方法進行組合或合并。展示或論述為彼此耦合或直接耦合或通信的其它項也可以采用電方式、機械方式或其它方式通過某一接口、設備或中間部件間接地耦合或通信。其他變化、替代和改變的示例可以由本領域的技術人員在不脫離本文精神和所公開的范圍的情況下確定。當前第1頁1 2 3 當前第1頁1 2 3 
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1