專利名稱:在無共享分布式數(shù)據(jù)庫中查詢優(yōu)先級的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明總地涉及數(shù)字?jǐn)?shù)據(jù)存儲和檢索。更具體地,本發(fā)明涉及在無共享分布式數(shù)據(jù)庫中查詢優(yōu)先級。
背景技術(shù):
圖1示出根據(jù)現(xiàn)有技術(shù)使用的無共享網(wǎng)絡(luò)100。無共享網(wǎng)絡(luò)或結(jié)構(gòu)100包括主節(jié)點(diǎn)102和一組無共享節(jié)點(diǎn)104_A到104_N。每個無共享節(jié)點(diǎn)104具有它自己的專有的存儲器、磁盤和輸入輸出設(shè)備,其操作獨(dú)立于結(jié)構(gòu)100中的任何其他節(jié)點(diǎn)。每個節(jié)點(diǎn)都是自給的,通過網(wǎng)絡(luò)不進(jìn)行任何共享。由此,在系統(tǒng)上不存在沖突點(diǎn)并且不共享系統(tǒng)資源。這種結(jié)構(gòu)的優(yōu)點(diǎn)在于其尺寸是高度可變的。在無共享網(wǎng)絡(luò)上實(shí)現(xiàn)了企業(yè)數(shù)據(jù)庫系統(tǒng)。這樣的企業(yè)數(shù)據(jù)庫系統(tǒng)用于支持商業(yè)智能(BI)操作。隨著數(shù)據(jù)倉庫情景中集成的數(shù)據(jù)資源的增大和分析處理的進(jìn)展,查詢工作負(fù)載的經(jīng)典分類,例如在線交易處理(0LTP)、在線分析處理(0LAP)、載入、報告或大量同時發(fā)生的查詢已經(jīng)變得模糊?;旌系墓ぷ髫?fù)載已經(jīng)變?yōu)楝F(xiàn)實(shí),使得今天的數(shù)據(jù)庫管理系統(tǒng)必須能夠同時幫助和支持?;旌瞎ぷ髫?fù)載的處理引起了一系列有意思的問題,因?yàn)楣ぷ髫?fù)載的不同分量根據(jù)資源概況競爭資源,通常彼此負(fù)面影響。這需要允許用戶對不同工作負(fù)載分配優(yōu)先級的機(jī)制,然后通過相應(yīng)地分配資源來實(shí)施優(yōu)先級。下面的列表示出了競爭具有不同優(yōu)先級的工作負(fù)載的最主要情景中的一些:載入vs報告分析處理的質(zhì)量除了別的以外依賴于周期負(fù)載提供的數(shù)據(jù)的新鮮程度。負(fù)載通常以在線形式執(zhí)行,即,數(shù)據(jù)庫系統(tǒng)用于報告同時負(fù)載是激活的。及時完成負(fù)載對于所有進(jìn)一步的分析和處理是關(guān)鍵的。這一情景的變形是夜間發(fā)生的負(fù)載。與報告工作負(fù)載相比,周期的負(fù)載通常被分配更高的優(yōu)先級。戰(zhàn)術(shù)vs策略分析同時發(fā)生的報告可能在合時(timeliness)方面對于商業(yè)的重要性上存在差異,通過報告需要得出商業(yè)決定的結(jié)果。戰(zhàn)術(shù)分析通常對于商業(yè)具有近期影響并且通常與策略分析報告相比被分配更高的優(yōu)先級。操作的工作負(fù)載這個參考操作緊急情況,其中管理者必須快速反應(yīng)進(jìn)行損壞控制,例如校正由于故障負(fù)載過程等引起的數(shù)據(jù)污染。這些工作負(fù)載應(yīng)該比其他進(jìn)行的動作具有優(yōu)先權(quán)。操作安全性通過對臨時用戶的工作負(fù)載分配恰當(dāng)?shù)牡蛢?yōu)先級,管理員可以限制實(shí)驗(yàn)和偶然負(fù)載查詢的影響,而不用必須持續(xù)監(jiān)控系統(tǒng)上的所有動作或者預(yù)防性地拒絕用戶的接入。由此,期望提供一種對數(shù)據(jù)庫查詢自動分配優(yōu)先級的機(jī)制,其中該機(jī)制恰當(dāng)?shù)仄?br>
衡競爭工作負(fù)載
發(fā)明內(nèi)容
無共享分布式數(shù)據(jù)庫系統(tǒng)包括主節(jié)點(diǎn)和一組無共享節(jié)點(diǎn)。每個無共享節(jié)點(diǎn)包括:節(jié)點(diǎn)狀態(tài)表,存儲在存儲器中,所述節(jié)點(diǎn)狀態(tài)表表征不同語句和實(shí)現(xiàn)每個語句的多個進(jìn)程,每個進(jìn)程的目標(biāo)資源消耗率和進(jìn)程活動信息。由中央處理單元執(zhí)行的監(jiān)控器模塊處理節(jié)點(diǎn)狀態(tài)表中的信息,并且根據(jù)指定給予語句的個人用戶優(yōu)先級的優(yōu)先級標(biāo)準(zhǔn)來調(diào)節(jié)節(jié)點(diǎn)狀態(tài)表中的值。根據(jù)優(yōu)先級標(biāo)準(zhǔn)在無共享分布式數(shù)據(jù)庫系統(tǒng)中處理與語句相關(guān)的查詢。一種分布式數(shù)據(jù)庫的節(jié)點(diǎn),包括:節(jié)點(diǎn)狀態(tài)表,存儲在存儲器中,所述節(jié)點(diǎn)狀態(tài)表表征同時發(fā)生的數(shù)據(jù)庫進(jìn)程的運(yùn)行時間統(tǒng)計數(shù)據(jù);以及監(jiān)控器模塊,由中央處理單元執(zhí)行以對于所述同時發(fā)生的數(shù)據(jù)庫進(jìn)程動態(tài)地改變目標(biāo)資源消耗率,其中,每個同時發(fā)生的數(shù)據(jù)庫進(jìn)程周期地比較目標(biāo)資源消耗率和實(shí)際資源消耗率,并且當(dāng)實(shí)際資源消耗率超過目標(biāo)資源消耗率時將資源消耗后退一定量時間。
結(jié)合附圖從下面的具體實(shí)施方式
中可以更完全地理解本發(fā)明,其中:圖1示出了根據(jù)現(xiàn)有技術(shù)實(shí)現(xiàn)分布式數(shù)據(jù)庫的無共享系統(tǒng)結(jié)構(gòu)。圖2示出了根據(jù)本發(fā)明的實(shí)施例中利用的無共享分布式數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)。圖3示出了根據(jù)本發(fā)明的實(shí)施例中利用的無共享分布式數(shù)據(jù)庫系統(tǒng)的無共享節(jié)點(diǎn)。圖4示出了根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)的節(jié)點(diǎn)狀態(tài)表。圖5示出了根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)的與監(jiān)控器模塊相關(guān)的處理。圖6示出了根據(jù)本發(fā)明的實(shí)施例執(zhí)行的作業(yè)處理操作。圖7示出了根據(jù)本發(fā)明的實(shí)施例中利用的更新的節(jié)點(diǎn)狀態(tài)表。在附圖的多個視圖中類似的附圖標(biāo)記指的是對應(yīng)的部件。
具體實(shí)施例方式本發(fā)明提供了基于并發(fā)數(shù)據(jù)庫進(jìn)程的運(yùn)行時間統(tǒng)計數(shù)據(jù)來確定和重新計算并發(fā)數(shù)據(jù)庫進(jìn)程的理想目標(biāo)速度以實(shí)現(xiàn)作業(yè)優(yōu)先級的機(jī)制。每個進(jìn)程使用控制理論原理來自主調(diào)整它的資源消耗。系統(tǒng)的自調(diào)節(jié)和分權(quán)設(shè)計使得即使存在例外情況時也能有效地區(qū)分優(yōu)先級,例外情況包括軟件缺陷或沒有可度量的開心的情況下的不期望/未計劃的查詢終止。通過控制可用于單個查詢CPU時間,機(jī)制根據(jù)優(yōu)先級自動地平和工作負(fù)載之間的資源。技術(shù)杠桿控制理論主要用于實(shí)現(xiàn)后退機(jī)制,在該機(jī)制中,每個參與的進(jìn)程周期地檢查它是否已經(jīng)超過了其資源消耗的當(dāng)前目標(biāo)速率。如果是,通過將CPU釋放特定量的時間來進(jìn)行后退操作。該原理的連續(xù)的應(yīng)用導(dǎo)致實(shí)際和理想資源消耗率之間的快速收斂。圖2示出了用于實(shí)現(xiàn)本發(fā)明的操作的主節(jié)點(diǎn)202。主節(jié)點(diǎn)202包括標(biāo)準(zhǔn)元件,例如一個或多個CPU 210_八到210_1 CPU通過總線214附接于輸入/輸出設(shè)備212。輸入/輸出設(shè)備202可以包括標(biāo)準(zhǔn)元件,例如鍵盤、鼠標(biāo)、顯示器、打印機(jī)等。網(wǎng)絡(luò)接口電路216還連接至總線214,允許主節(jié)點(diǎn)202在聯(lián)網(wǎng)環(huán)境下操作。存儲器220還連接至總線214。存儲器220存儲可執(zhí)行指令以實(shí)現(xiàn)本發(fā)明的實(shí)施例。存儲器存儲查詢解析器222。查詢解析器222包括可執(zhí)行指令以解釋數(shù)據(jù)庫查詢。查詢解析器222通常檢查正確的句法并且建立數(shù)據(jù)結(jié)構(gòu)(例如樹)來表示查詢。存儲器還存儲查詢計劃器或查詢優(yōu)化器224。查詢計劃器224處理查詢解析器的輸出并且研發(fā)查詢計劃以執(zhí)行查詢。查詢計劃制定一組步驟,用于接入或修改與查詢相關(guān)的數(shù)據(jù)。細(xì)節(jié),例如如何接入給定數(shù)據(jù)關(guān)系、以什么順序加入數(shù)據(jù)關(guān)系、排序順序等,可以形成查詢計劃的一部分。對于給定的查詢,可以通過改變查詢計劃的不同構(gòu)成部分,例如接入路徑、加入方法、加入斷言和排序順序,來生成大量查詢計劃。通常的數(shù)據(jù)倉庫查詢可以產(chǎn)生幾億可能的執(zhí)行計劃??梢躁P(guān)于各種參數(shù)對查詢計劃的成本建模,各種參數(shù)包括例如磁盤接入的數(shù)目和取得數(shù)據(jù)所需的響應(yīng)時間。查詢優(yōu)化器對于給定查詢可以評估所有可能的查詢計劃的成本,并且確定執(zhí)行查詢最優(yōu)的,即最有效的計劃。一旦選擇查詢計劃,將其傳給查詢分配器226。查詢分配器226在一組無共享節(jié)點(diǎn)上應(yīng)用查詢計劃。圖3示出了根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)的無共享節(jié)點(diǎn)304。無共享節(jié)點(diǎn)304還包括連接至總線314的標(biāo)準(zhǔn)元件,例如一組CPU 310_八到310_1 —組輸入/輸出設(shè)備312也連接至總線314。也連接至總線314的網(wǎng)絡(luò)接口電路316提供對網(wǎng)絡(luò)的連接。存儲器320也連接至總線314。存儲器320包括數(shù)據(jù)和控制下指令以實(shí)現(xiàn)本發(fā)明的操作。節(jié)點(diǎn)狀態(tài)表322存儲與系統(tǒng)中正在處理的查詢相關(guān)的狀態(tài)信息。監(jiān)視器模塊324包括可執(zhí)行指令以檢查節(jié)點(diǎn)狀態(tài)表322中的信息?;诠?jié)點(diǎn)狀態(tài)表信息的檢查,監(jiān)控器模塊324實(shí)現(xiàn)CPU后退操作以恰當(dāng)?shù)貙?zhí)行查詢分配優(yōu)先級。此外,通過系統(tǒng)狀態(tài)信息和動態(tài)優(yōu)先級調(diào)整,監(jiān)控器模塊324選擇性地改變節(jié)點(diǎn)狀態(tài)表322。圖4提供了可以根據(jù)本發(fā)明的實(shí)施例使用的節(jié)點(diǎn)狀態(tài)表400的例子。節(jié)點(diǎn)狀態(tài)表400包括語句ID列402。語句ID列列出了在特定的無共享節(jié)點(diǎn)上當(dāng)前正在被處理的不同查詢。在這個例子中,兩個查詢Ql和Q2正在被處理。表400還包括進(jìn)程ID列。每個查詢通常被劃分為若干并行進(jìn)程或線程。在這個例子中,進(jìn)程Pl和P2與查詢Ql相關(guān)聯(lián),并且進(jìn)程P3和P4與查詢Q2相關(guān)聯(lián)。在本發(fā)明的一個實(shí)施例中,索引列406用于由領(lǐng)導(dǎo)者將語句分組。在這個例子中,索引值J用于將與查詢Ql相關(guān)的進(jìn)程分組,同時索引值K用于將與查詢Q2相關(guān)的進(jìn)程分組。表400還包括資源消耗率(RCR)列。在該列中的每個條目為給定進(jìn)程指定了目標(biāo)資源消耗率。監(jiān)控器模塊324周期性地改變這些值,如下所述。表400還可以存儲表征最后進(jìn)程更新的信息,如列410所示,這個值可以執(zhí)行進(jìn)程被激活的最后時間。最后,表400包括制定給定進(jìn)程是否處于休眠模式的列412。如下所述,休眠模式用于后退特定進(jìn)程的進(jìn)行中的處理,從而滿足整體處理優(yōu)先級目標(biāo)。在圖4的例子中,問題Q2的進(jìn)程P4處于休眠模式,如值Y (是)指示。圖5示出了與監(jiān)控器模塊324相關(guān)的處理操作。如圖3所示,監(jiān)控器模塊324在無共享節(jié)點(diǎn)上操作。監(jiān)控器模塊324通過接入節(jié)點(diǎn)狀態(tài)表322來進(jìn)行操作,如圖4所示的例子。最初,監(jiān)控器模塊324確定狀態(tài)表是否反映了激活的作業(yè)500。如果是,計算節(jié)點(diǎn)上的計算負(fù)載502。然后重新分配活動和優(yōu)先級504。例如,可以改變RCR值和休眠值。然后進(jìn)行查詢以確定掃描數(shù)量是否恰當(dāng)。掃描速率指定了節(jié)點(diǎn)狀態(tài)表被處理的經(jīng)常程度。由此,掃描速率對于節(jié)點(diǎn)上資源的重新分配提供了精細(xì)控制。在改變掃描速率之后并且在不需要掃描速率調(diào)整的情況下,處理進(jìn)行到塊510,在該塊處理作業(yè)。圖6示出了與塊510相關(guān)的操作。首先,處理有待完成的作業(yè)的一部分或一定量。如果完成作業(yè)(602-是),那么控制返回到圖5的塊500 (610)。如圖5所示,如果在該點(diǎn)沒有作業(yè)是激活的(500-否),則作業(yè)被完成。否則,處理返回至塊502。返回到圖6,如果作業(yè)沒有完成(602-否),那么接入節(jié)點(diǎn)狀態(tài)表604。如果作業(yè)是目標(biāo)之外(over target) (606-是),那么作業(yè)休眠或者退回特定量608。例如,圖7示出了處于休眠模式的問題Q2的進(jìn)程P3。如果作業(yè)不是目標(biāo)之外(606-否),則在塊600處理另一定量的作業(yè)。然后控制進(jìn)行至塊602。通過下面的描述更完全地理解本發(fā)明的操作。為了清楚的公開,假設(shè)查詢總是對應(yīng)于單個進(jìn)程或線程。這指示一系列查詢的執(zhí)行。為了表示查詢的重要性,我們引入查詢權(quán)重的概念,或者簡單來說權(quán)重??紤]下面的例子,Ql和Q2分別是權(quán)重 wl和《2的兩個查詢。當(dāng)各自執(zhí)行時,期望執(zhí)行器進(jìn)程對應(yīng)于這些查詢以實(shí)現(xiàn)100%的CPU利用率。如果Wl等于W2,它們在重疊的時間間隔T上每個占據(jù)50%的CPU。如果Ql的重要性是Q2的兩倍,S卩,wl = 2Xw2,期望在該間隔中Ql占用66.66%的利用率,并且Q2占用33.33%的CPU利用率。不失普遍性,我們將主要使用查詢重疊的數(shù)據(jù)結(jié)構(gòu)T來進(jìn)行推理。關(guān)于查詢的確切開始時間不進(jìn)行假設(shè)。對上述例子進(jìn)行概況,在某個數(shù)據(jù)結(jié)構(gòu)T中同時執(zhí)行一組帶有權(quán)重Iw1, W2,…的查詢{Qi,Q2,…Qn}。查詢Qi消耗的CPU時間應(yīng)該是
權(quán)利要求
1.一種無共享分布式數(shù)據(jù)庫系統(tǒng),包括: 主節(jié)點(diǎn);和 多個無共享節(jié)點(diǎn),其中每個無共享節(jié)點(diǎn)包括: 節(jié)點(diǎn)狀態(tài)表,存儲在存儲器中,所述節(jié)點(diǎn)狀態(tài)表表征不同語句和實(shí)現(xiàn)每個語句的多個進(jìn)程,每個進(jìn)程的目標(biāo)資源消耗率和進(jìn)程活動信息,和 監(jiān)控器模塊,由中央處理單元執(zhí)行以處理節(jié)點(diǎn)狀態(tài)表中的信息,并且根據(jù)指定給予語句的個人用戶優(yōu)先級的優(yōu)先級標(biāo)準(zhǔn)來調(diào)節(jié)節(jié)點(diǎn)狀態(tài)表中的值,使得根據(jù)優(yōu)先級標(biāo)準(zhǔn)在無共享分布式數(shù)據(jù)庫系統(tǒng)中處理與語句相關(guān)的查詢。
2.根據(jù)權(quán)利要求1所述的無共享分布式數(shù)據(jù)庫系統(tǒng),其中,進(jìn)程活動信息包括時間戳信息。
3.根據(jù)權(quán)利要求1所述的無共享分布式數(shù)據(jù)庫系統(tǒng),其中,進(jìn)程活動信息包括休眠狀態(tài)。
4.根據(jù)權(quán)利要求1所述的無共享分布式數(shù)據(jù)庫系統(tǒng),其中,監(jiān)控器模塊計算中央處理單元負(fù)載。
5.根據(jù)權(quán)利要求1所述的無共享分布式數(shù)據(jù)庫系統(tǒng),其中,監(jiān)控器模塊改變進(jìn)程目標(biāo)資源消耗率。
6.根據(jù)權(quán)利要求1所述的無共享分布式數(shù)據(jù)庫系統(tǒng),其中,監(jiān)控器模塊具有可配置的掃描頻率,用于限定節(jié)點(diǎn)狀態(tài)表被處理的頻率。
7.根據(jù)權(quán)利要求1所述的無共享分布式數(shù)據(jù)庫系統(tǒng),其中,個人用戶優(yōu)先級是個人的等級管理狀態(tài)的函數(shù)。
8.一種分布式數(shù)據(jù)庫的節(jié)點(diǎn),包括: 節(jié)點(diǎn)狀態(tài)表,存儲在存儲器中,所述節(jié)點(diǎn)狀態(tài)表表征同時發(fā)生的數(shù)據(jù)庫進(jìn)程的運(yùn)行時間統(tǒng)計數(shù)據(jù);以及 監(jiān)控器模塊,由中央處理單元執(zhí)行以對于所述同時發(fā)生的數(shù)據(jù)庫進(jìn)程動態(tài)地改變目標(biāo)資源消耗率,其中,每個同時發(fā)生的數(shù)據(jù)庫進(jìn)程周期地比較目標(biāo)資源消耗率和實(shí)際資源消耗率,并且當(dāng)實(shí)際資源消耗率超過目標(biāo)資源消耗率時將資源消耗后退一定量時間。
9.根據(jù)權(quán)利要求8所述的節(jié)點(diǎn),其中,監(jiān)控器模塊將目標(biāo)資源消耗率計算為查詢的權(quán)重的函數(shù)。
10.根據(jù)權(quán)利要求8所述的節(jié)點(diǎn),其中,監(jiān)控器模塊計算目標(biāo)資源消耗率以最大化中央處理單元的利用率。
11.根據(jù)權(quán)利要求8所述的節(jié)點(diǎn),其中,監(jiān)控器模塊計算在共享中央處理單元中具有成比例的公平的目標(biāo)資源消耗率。
12.根據(jù)權(quán)利要求8所述的節(jié)點(diǎn),其中,監(jiān)控器模塊使用資源休眠時間的輸入、實(shí)際資源利用率的系統(tǒng)變量和期望資源利用率的參考來實(shí)現(xiàn)控制機(jī)制。
13.根據(jù)權(quán)利要求12所述的節(jié)點(diǎn),其中,所述資源是中央處理單元利用率。
全文摘要
無共享分布式數(shù)據(jù)庫系統(tǒng)包括主節(jié)點(diǎn)和一組無共享節(jié)點(diǎn)。每個無共享節(jié)點(diǎn)包括存儲在存儲器中的節(jié)點(diǎn)狀態(tài)表,其表征不同語句和實(shí)現(xiàn)每個語句的多個進(jìn)程,每個進(jìn)程的目標(biāo)資源消耗率和進(jìn)程活動信息,和監(jiān)控器模塊,由中央處理單元執(zhí)行以處理節(jié)點(diǎn)狀態(tài)表中的信息,并且根據(jù)指定給予語句的個人用戶優(yōu)先級的優(yōu)先級標(biāo)準(zhǔn)來調(diào)節(jié)節(jié)點(diǎn)狀態(tài)表中的值,使得根據(jù)優(yōu)先級標(biāo)準(zhǔn)在無共享分布式數(shù)據(jù)庫系統(tǒng)中處理與語句相關(guān)的查詢。
文檔編號G06F15/16GK103098041SQ201180017542
公開日2013年5月8日 申請日期2011年3月17日 優(yōu)先權(quán)日2010年3月31日
發(fā)明者西瓦芮馬里旭南·納拉亞南, 邁克爾·F·瓦斯 申請人:伊姆西公司