新四季網

部分查詢緩存的製作方法

2023-11-02 04:17:22 2

專利名稱:部分查詢緩存的製作方法
技術領域:
本發明涉及處理資料庫命令,並且特別地,涉及緩存查詢的結果集。
背景技術:
本部分所描述的方法是能夠進行的方法,但卻不一定是先前已經設想或進行的方法。因此,除非另加指明,不應僅僅因為本部分所描述的任何方法包含在部分中而認為其是現有技術。類似地,除非另外指名,與方法一起說明的問題不應推測為已被現有技術所認知。
當資料庫伺服器接收了表示執行資料庫操作的請求的語句時,資料庫伺服器可以生成執行計劃。執行計劃定義了資料庫伺服器為了實現請求而執行的步驟和操作。用於請求資料庫操作的語句可以是遵循諸如結構化查詢語言(SQL)等資料庫語言的資料庫命令的形式。
快速返回查詢結果集是理想的。隨著越來越多的人們使用資料庫來獲得他們尋找的信息,針對資料庫所發布的查詢相同的可能性增大。在一些系統中,存儲至少某些查詢的結果集。當接收到查詢時,執行基於文本的搜索以找到先前執行的查詢。如果發現相同的同一查詢(具有相同文本)被第二次提出,並且如果存儲了該查詢的結果集,則系統返回緩存結果集而不是第二次執行查詢。使用該資料庫的人越多,則通過保存查詢的結果集所獲得的性能提高就越大。
但是,許多查詢並不是完全相同而是相似。許多查詢可能處理其結果集中的同一數據的子集。然而,由於查詢並不完全相同,所以不能重新使用可能與期望的結果集具有相同數據子集的緩存結果集,儘管結果集有相似性,但是仍要執行每個相似的查詢。
基於以上所述,仍然需要存儲和重新使用查詢的結果集。


本發明在附圖中以實例的方式示出,但這並不用於限定本發明,其中,相同的參考標號表示相同的元件,在附圖中圖1是執行計劃的示意圖;圖2是示出根據本發明實施例的執行計劃操作符的方法的流程圖;圖3是示出根據本發明實施例的存儲結果集的方法的流程圖;圖4是示出可以實施本發明實施例的計算機系統的框圖。
具體實施例方式
以下描述了用於部分查詢緩存的方法和裝置。在以下的描述中,為了解釋的目的,描述了多個特定的細節,以提供對本發明的透徹理解。然而,很顯然,在沒有這些特定細節的情況下,也可以實現本發明。在其它的實例中,以框圖形式示出已知的結構和設備,以避免不必要地使本發明不清楚。
下文中描述了可以彼此單獨使用或與其它特徵結合使用的多個特徵。然而,任一單個特徵可能不能處理前文描述的多個問題,或僅僅處理前文描述的多個問題中的一個。上述的一些問題可能不能由本文描述的任一特徵完全處理。雖然提供了標題,但是涉及特定標題但卻未存在於具有該標題的部分中的信息還可以存在於本說明書中的其它地方。
本文描述的方法使用先前被生成用於查詢的結果的至少一部分用於另一查詢的隨後計算。使用被生成用於由執行查詢的計劃定義的操作的結果集作為執行另一查詢的相同或相似操作的結果集。
執行計劃資料庫伺服器生成對於效率而言最優的執行計劃。當確定了在執行計劃中包括什麼步驟以及執行步驟的順序時,資料庫伺服器考慮影響效率的許多因素。例如,查詢可能請求包含第一列中的第一值以及第二列中的第二值的行。如果第一列被索引,則資料庫伺服器可能生成使用該索引以更有效地訪問數據的執行計劃。這樣的執行計劃可能包括按下面指定的順序執行的以下步驟。
1.訪問索引並生成包括第一列中的第一值的行的行ID。
2.獲得由行ID限定的行的集合。
3.以第二列中的第二值過濾行的集合。
查詢執行計劃包括被稱為「計劃操作符」的步驟。計劃操作符定義了一組操作,其在執行計劃中被執行並且可以由資料庫伺服器執行以訪問一個或多個行源。行源可以是存儲在資料庫中的數據(例如,表中的一個或多個行),或者是另一計劃操作符的一個或多個輸出行。在Oracle 8i Concepts(甲骨文(Oracle)公司著,1999年二月)一書的第22-24章中解釋了執行計劃。Oracle 8i Concepts中的內容結合於此作為參考。
執行計劃的示意圖執行計劃可以由執行計劃示意圖表示。圖1為執行計劃示意圖,用於說明包括部分查詢緩存的執行計劃實例的各種特徵。在圖1中,(通過資料庫伺服器)生成執行計劃102用於查詢104。查詢104為以下查詢SELECT t1.col4,t2.col2FROM t1,t2WHERE t1.col1=t2.col2 AND t1.col3=192GROUP BY t1.col4;查詢104包含謂詞105,即,t1.col1=t2.col2和t1.col3=192。謂詞是定義被查詢的表中的行必須滿足的標準的邏輯表達式。
在執行計劃102中,使用框來表示計劃操作符。具體來說,組計劃操作符106、連接計劃操作符108、掃描表和過濾計劃操作符112、掃描表計劃操作符116都是構成執行計劃102的計劃操作符。在父計劃操作符和子計劃操作符之間的樹枝代表從子計劃操作符到父計劃操作符的行的流。因此,子計劃操作符的輸出行是到父計劃操作符的輸入行。計劃操作符在本文被描述為執行計劃操作符本身定義的操作。然而,這僅僅是表示當資料庫伺服器執行計劃操作符時資料庫伺服器正在執行由計劃操作符定義的操作的便利方法。
在執行計劃102中,掃描表和過濾計劃操作符112以及掃描表計劃操作符116分別執行表t1的列col1以及表t2的列col2的掃描。但是,掃描表和過濾計劃操作符112附加地過濾表t1的被掃描的行,以便僅使具有col3=192的行被選擇並由此被包括在掃描表和過濾計劃操作符112的輸出中。連接計劃操作符108連接從掃描表和過濾計劃操作符112以及掃描表計劃操作符116輸出的行,以形成由連接計劃操作符108輸出的行。組計劃操作符106將由連接計劃操作符108創建的行分成組。組計劃操作符106的結果是,輸出中的每一行都代表不同的組(換句話說,輸出中的每個t1.col4都是唯一的)。
功能概述在部分查詢緩存中,計算查詢的各個計劃操作符的結果集並將其存儲在存儲區域中,用於其它查詢的潛在再利用。存儲區域是操作符輸出存儲器區域,將其稱作輸出存儲器。計劃操作符的結果集在此稱為緩存結果集。每個緩存結果集都將具有基於結果集的各個計劃操作符的定義所生成的籤名。具有相同或相似的定義並且進而潛在地具有相同或相似的結果集的計劃操作符將具有相同或相似的籤名。為了計算計劃操作符(即,為其生成結果),生成籤名用於計劃操作符,並用於搜索用於帶有相同籤名的緩存結果集的存儲區域。如果找到了緩存結果集,則可以進一步檢查緩存結果集的計劃操作符,以確定緩存結果集是否可被用作正被計算的計劃操作符的結果集。在另一實施例中,如果找到了給定籤名的緩存結果集,則對計劃操作符不做進一步檢查,並且將緩存結果集用作計劃操作符的結果集。如果沒有找到緩存結果集,則執行計劃操作符。另外,可以將通過執行計劃操作符生成的結果集存儲在輸出區域中,用於另一相應計劃操作符的後續使用。
在一實施例中,首先,通過從結果集中搜索計劃操作符來執行整個查詢的搜索,其中,結果集包括了查詢的執行計劃的所有計劃操作符。如果結果集沒有被存儲用於對應於整個查詢的計劃操作符,則對於構成執行計劃的一個或多個計劃操作符,搜索輸出存儲器,以檢查是否存儲了緩存結果集用於相應的計劃操作符。
在一實施例中,從包括查找的最大部分的計劃操作符(如,包括整個查詢的計劃操作符)進行搜索,然後搜索包括查找的下一最大部分的計劃操作符,其包含在查詢的最大部分的計劃操作符中。換句話說,如果沒有找到父計劃操作符的緩存結果集,則搜索用於作為父計劃操作符的直接孩子的計劃操作符(如果有的話)的緩存結果集。
執行查詢圖2是示出根據本發明實施例的執行計劃操作符的方法200的流程圖。方法200示出了當執行計劃操作符時執行的步驟。在步驟201中,生成用於查詢的計劃操作符。在步驟202中,生成該計劃操作符的籤名。在步驟204中,通過執行計劃操作符生成結果集。在步驟206中,將在步驟204中生成的結果集存儲在輸出存儲器(例如,高速緩存)中。輸出存儲器將在下文中討論。在步驟208中,以籤名(以及可選地,計劃操作符)與緩存結果集相關的方式存儲籤名(以及可選地,計劃操作符)。
圖3是示出根據本發明實施例的利用緩存結果集的方法300的流程圖。在步驟302中,生成計劃操作符用於查詢。在步驟303中,生成籤名用於正被評估的計劃操作符。在步驟304中,從輸出存儲器搜索緩存結果集。在執行搜索的過程中,可以在正被評估的計劃操作符的籤名以及存儲的與緩存結果集相關的籤名之間進行比較。在一實施例中,可能需要嚴格匹配。在可選步驟306中,如果找到匹配,則執行進一步的評估,其中,將存儲的計劃操作符與正被評估的計劃操作符進行比較,以確定緩存結果集是否可用。在步驟308中,如果步驟306包含在方法300中,那麼如果在步驟306中確定緩存結果集可用,則返回緩存結果集(或者返回給用戶作為結果集,或者用作另一計劃操作符的輸入),而不執行計劃操作符。在步驟308中,如果步驟306不包括在方法300中,那麼如果在步驟304中找到匹配(例如,如果發現兩個籤名充分相似),則返回緩存結果集,而不執行計劃操作符。
參照圖1,在實現方法300的過程中,當接收到查詢104時,資料庫伺服器將查詢計劃102公式化。然後,資料庫伺服器檢查計劃操作符輸出存儲器區域,以確定緩存結果集是否被存儲用於構成執行計劃102的計劃操作符。首先搜索構成查詢的較大部分的計劃操作符,這是因為,如果找到了對應於構成較大部分的計劃操作符的結果集,則無需搜索構成包含在較大部分中的較小部分的計劃操作符。
例如,在執行計劃102中,首先,搜索對應於組計劃操作符106的緩存結果集。如果找到了結果集,則將找到的結果集返回給用戶作為查詢104的結果集,而不是第二次執行組計劃操作符106。此外,不需要搜索剩餘的計劃操作符的結果集,這是因為,執行計劃102的剩餘計劃操作符包括在組計劃操作符106中。
然而,如果沒有找到對應於組計劃操作符106的緩存結果集,那麼資料庫伺服器搜索對應於連接計劃操作符108的緩存結果集。如果找到了對應於連接計劃操作符108的緩存結果集,則返回該緩存結果集用作到組計劃操作符106的輸入,並且無需執行執行計劃102的剩餘操作符。在對對應於連接計劃操作符108的緩存結果集執行組計劃操作符106以後,將組計劃操作符106的結果集(基於對應於連接計劃操作符108的緩存結果集)返回給用戶作為查詢104的結果集。在另一查詢包括組計劃操作符106或類似的計劃操作符的情況下,可以將執行組計劃操作符106的結果集存儲在輸出存儲器中。
如果沒有找到對應於連接計劃操作符108的緩存結果集,則資料庫伺服器搜索對應於掃描表和過濾計劃操作符112以及掃描表計劃操作符116的緩存結果集。如果找到了對應於掃描表和過濾計劃操作符112的緩存結果集,則返回該緩存結果集以備連接計劃操作符108使用。如果沒有找到掃描表和過濾計劃操作符112的緩存結果集,則資料庫伺服器執行掃描表和過濾計劃操作符112,並且返回執行掃描表和過濾計劃操作符112的結果集,以備連接計劃操作符108使用。此外,可以存儲掃描表和過濾計劃操作符112的結果集以備後續使用。類似地,如果找到了掃描表計劃操作符116的緩存結果集,則返回緩存結果集以備連接計劃操作符108使用。如果沒有找到用於掃描表計劃操作符116的緩存結果集,則資料庫伺服器執行掃描表計劃操作符116,並且返回執行掃描表計劃操作符116的結果集以備連接計劃操作符108使用。此外,可以存儲掃描表計劃操作符116的結果集以備後續使用。然後對返回的結果集執行連接計劃操作符108,而不管返回的結果集源於執行掃描表和過濾計劃操作符112以及掃描表計劃操作符116,或源於找到對應於掃描表和過濾計劃操作符112以及掃描表計劃操作符116的緩存結果集,還是源於找到用於掃描表和過濾計劃操作符112以及掃描表計劃操作符116二者其中之一的緩存結果集並執行所述這二者中的另一個。使用連接計劃操作符108的結果集來執行下一個組計劃操作符106,並且返回組計劃操作符106的結果集給用戶作為查詢104的結果集。如上所述,在另一查詢包括組計劃操作符106或連接計劃操作符108中的一個的情況下,可以將執行組計劃操作符106和/或連接計劃操作符108的結果集存儲在計劃操作符輸出存儲器中。
在一實施例中,可以不必存儲給定操作符的結果集。相反,可以執行成本收益分析來確定是否存儲給定操作符的結果集,或者是否不存儲結果集並且如果另一查詢包括相同的操作符則第二次執行操作符。可被用於確定是否存儲給定操作符的結果集的一些因素是執行操作符所需的時間和資源以及可用的存儲區域量。例如,如果執行計劃操作符所需的時間小於搜索用於緩存結果集的輸出存儲器所需的預期時間,則可以不存儲結果集。類似地,如果存儲結果集所需的存儲區域大於輸出存儲器中的可用存儲區域(例如,或是因為結果集太大,或是因為存儲區域滿或接近滿了),則也可以不存儲結果集。相反,如果結果集不需要多的存儲區域或者有大量的存儲區域可用,並且計劃操作符需要相當多的時間來執行,則可以存儲結果集。可以用於確定是否存儲新近執行的計劃操作符的結果集的其他因素對於本領域的技術人員來說是顯而易見的。
兩個不同查詢中的每一個都可被不同的資料庫語句集來公式化,但是卻可能具有相同的執行計劃。例如,第一查詢可能包括NATURAL連接,而除了連接關鍵字(JOIN KEY)在USING子句中被顯式命名而不是使用NATURAL連接外,第二查詢可與第一查詢相同。通過公式化執行計劃並搜索執行計劃的結果集,即使兩個查詢由不同的資料庫語句集形成,一個查詢的結果集也可被返回作為另一查詢的結果集。
輸出存儲器可以是任何形式的存儲器,諸如以下在硬體描述部分中說明的那些存儲器。在一實施例中,輸出存儲器是一個或多個臨時或短期存儲裝置(例如,易失性存儲裝置)中的一個或多個存儲區域。在一實施例中,同長期存儲器(例如,硬碟)相比,短期輸出存儲器(例如,快閃記憶體或RAM)可能具有相對較快的訪問時間。在一實施例中,輸出存儲器是一個或多個長期存儲裝置(例如,非易失性存儲裝置)中的一個或多個存儲區域。在一實施例中,輸出存儲器是一個或多個長期存儲裝置以及短期存儲裝置中的一個或多個存儲區域的組合。
計劃操作符的籤名在一實施例中,基於計劃操作符的定義為每個計劃操作符建立籤名。生成籤名使得具備相同或相似定義的計劃操作符具有相同籤名。在一實施例中,籤名可以基於用於定義或描述計劃操作符的數據結構。例如,與計劃操作符相關的數據結構可被用來生成哈希(Hash)值,哈希值可被映射到用於形成被用來組成籤名的序列號的數字值。
計劃操作符的結果集可與計劃操作符的籤名被一起存儲。當接收到新查詢時,通過搜索與具有相同籤名的計劃操作符相關的結果集來搜索與先前執行的計劃操作符相關的結果集。使用籤名可以寫入不同的兩個查詢,但是其各自的執行計劃可以共享帶有相同籤名的計劃操作符。
使用籤名使得資料庫伺服器快速找到可被用於查詢的結果集。在一實施例中,每個計劃操作符都被映射到代表該計劃操作符的恰當描述的籤名。在可選實施例中,每個計劃操作符都被映射到還用於其它計劃操作符的集合和/或排列的籤名,並且與該籤名相關的結果集被用於籤名的集合和/或排列中的每個計劃操作符。在本實施例中,籤名不必然代表計劃操作符的恰當描述。在一實施例中,在找到匹配的籤名之後,比較計劃操作符,以評估來自一個計劃操作符的結果集是否被期望用作其它計劃操作符的結果集。在另一實施例中,如果兩個籤名匹配或充分相似,則使用找到的緩存結果集,而無需進一步檢查產生緩存結果集的計劃操作符。
相似但不完全相同的計劃操作符很多時候,查詢相似但不完全相同。通過搜索對應於不一致的查詢的計劃操作符,可以增加返回查詢的結果集的速度。因此,在一實施例中,當搜索計劃操作符的結果集時,如果發現用於不同計劃操作符的緩存結果集相似,則可以使用相似操作的結果集,而不是執行實際操作。例如,如果生成的用於查詢的計劃操作符涉及查找與2000年11月1日至2004年1月1日之間的日期相關的一組數據,並且發現了用於找到與2000年11月1日至2004年2月23日之間的日期相關的數據的計劃操作符的緩存結果集,則可以使用找到的緩存結果集,而不是執行被生成用於查詢的實際計劃操作符。在一實施例中,找到的緩存結果集被「按原樣(as is)」使用,而沒有進一步修改。在另一實施例中,過濾找到的緩存結果集,以去除緩存結果集中的一些或全部多餘數據。在另一實施例中,評估緩存結果集或緩存結果集的籤名,以確定用戶是否可能注意到接收到的被請求的結果與找到的緩存結果集之間的差異,在此實例中為與2004年1月2日至2004年2月23日之間的日期相關的多餘數據。如果預期到用戶不會注意到此差異,則返回找到的緩存結果集,而不是執行計劃操作符。如果預期到用戶會注意到此差異,則執行計劃操作符,或者過濾緩存結果集以去除2004年1月2日至2004年2月23日之間的多餘數據。
在一實施例中,如果預期到典型用戶不可能關心返回哪個結果集,則可以認為兩個計劃操作符相似。例如,在一實施例中,如果預期到緩存結果集的內容除了有小百分比的行不同外與計劃操作符的內容幾乎相同,則緩存結果集可被用作計劃操作符的結果集。無論是相似但不相同還是不相似,都可以通過用戶輸入來控制可以以這種方式使用的緩存結果集。例如,用戶輸入可以包括指定是否可以返回相似但不同的緩存結果集的查詢中的命令或參數,或者經由應用程式員界面(「API」)被設置為指定是否可以返回相似但不同的緩存結果集的用戶資料庫會話中的變量。參數或變量還可以指定兩個計劃操作符或籤名可能不同的程度,而同時仍然允許一個計劃操作符或籤名的緩存結果集用於另一個計劃操作符或籤名的結果集。
還有,在一實施例中,如果期望第一計劃操作符除了返回一些多餘數據之外還返回第二計劃操作符的所有結果集,並且期望該多餘數據的數量不足以造成混淆對應於第二計劃操作符的結果集的內容,那麼第一計劃操作符的結果集可以被按原樣或在其修改之後被接受作為第二計劃操作符的結果集。類似地,在一實施例中,如果期望第一計劃操作符返回比第二計劃操作符更小的結果集,但是期望所丟失的數據是不重要的或少量的,則第一計劃操作符的結果集可以按原樣或在修改之後被接受作為第二計劃操作符的結果集。
失效的緩存結果集即使給定查詢的計劃操作符可能完全相同,但是由於在不同的時間執行查詢,因此計劃操作符的結果集仍可能不同。在一實施例中,當找到對應於給定計劃操作符的緩存結果集時,執行檢查,以確定找到的緩存結果集是否失效。例如,在一實施例中,根據計劃操作符輸出存儲器中的緩存結果集來存儲計算緩存結果集的時間。如果緩存結果集的年限大於閾值年限,則緩存結果集就不再保存在高速緩存中,或者被用作另一查詢的計劃操作符的結果集。閾值年限可以基於上述的用戶輸入。
硬體描述圖4是示出可以執行本發明的實施例的計算機系統400的框圖。具體而言,計算機系統400可被用作資料庫伺服器和/或可以被編程以實現上述的部分查詢緩存方法。計算機系統400包括總線402或用於傳輸信息的其它通信裝置,以及與總線402連接的用於處理信息的處理器404。計算機系統400還包括連接至總線402的主存儲器406,諸如隨機存取存儲器(RAM)或者其它動態存儲裝置,用於儲存信息和將由處理器404執行的指令。在執行將由處理器404執行的指令期間,主存儲器406還可用於儲存臨時變量或其他中間信息。計算機系統400進一步包括只讀存儲器(ROM)408或連接至總線402的其他靜態存儲裝置,用於存儲靜態信息和處理器404的指令。提供諸如磁碟或光碟的存儲裝置410,並使其連接至總線402用於存儲信息和指令。
計算機系統400可以經由總線402連接至諸如陰極射線管(CRT)的顯示器412,用於向計算機用戶顯示信息。包括字母數字鍵和其他鍵的輸入裝置414連接至總線402,用於將信息和命令選擇傳遞到處理器404。另一種類型的用戶輸入裝置是諸如滑鼠、跟蹤球、或光標方向鍵的光標控制416,用於將方向信息和命令選擇傳遞到處理器404並用於控制顯示器412上的光標移動。輸入裝置通常在兩個軸上(第一個軸(例如X軸)和第二個軸(例如Y軸))具有兩個自由度,使裝置能指定平面上的位置。
計算機系統400可被用於存儲計劃操作符的結果集。根據本發明的一個實施例,響應於執行包括在主存儲器406中的一個或多個指令的一個或多個序列的處理器404,計算機系統400提供計劃操作符的結果集的存儲器並搜索存儲器112中的先前執行的計劃操作符的緩存結果集。這樣的指令可以從諸如存儲裝置410的另一計算機可讀介質讀入主存儲器406。通過執行包括在主存儲器406中的指令序列,使得處理器404執行本文所述的處理步驟。還可以應用多處理布局中的一個或多個處理器,以執行包含在主存儲器406中的指令序列。在可選實施例中,可以使用硬連線電路(hard-wiredcircuitry)來取代軟體指令或者與軟體指令結合來實施該發明。因此,本發明的實施例將不限於硬體電路和軟體的任何特定組合。
這裡使用的術語「計算機可讀介質」是「機器可讀介質」的一個實例,指的是參與向處理器404提供指令用於執行的任何介質。這種介質可以採取多種形式,包括但不限於非易失性介質、易失性介質、和傳輸介質。非易失性介質舉例來說包括光碟或磁碟,諸如存儲裝置410。易失性介質包括動態存儲器,諸如主存儲器406。傳輸介質包括同軸電纜、銅線、和光纖,包括組成總線402的導線。傳輸介質還可採取聲波或光波形式,例如那些在無線電波和紅外線數據通信過程中產生的聲波和光波。
通常形式的機器可讀介質包括如軟盤、軟性盤、硬碟、磁帶,或者任何其它磁性介質、CD-ROM、任何其它光介質、打孔紙、紙帶、或者任何帶孔圖樣的物理介質、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存儲晶片或者盒式磁帶,或者以下提到的載波、或者計算機可讀的任何其他介質。
各種形式的計算機可讀介質可以參與將一個或者多個指令的一個或多個序列承載到處理器404用於執行。例如,指令開始可承載在遠程計算機的磁碟中。遠程計算機可以將指令加載到其動態存儲器中,然後使用數據機通過電話線發送指令。計算機系統400本地的數據機可接收電話線上的數據,並使用紅外發射器將數據轉換成紅外信號。連接到總線402的紅外探測器可以接收紅外信號攜帶的數據,並且將數據放到總線402上。總線402將數據承載到主存儲器406,處理器404從主存儲器取回並執行這些指令。在由處理器404執行這些指令之前或之後,由主存儲器406接收的指令可隨意地存儲在存儲裝置410上。
計算機系統400還包括連接至總線402的通信接口418。提供雙向數據通信的通信接口418,連接到與區域網422連接的網絡鏈路420。例如,通信接口418可以是綜合業務數字網(ISDN)卡或者數據機,用於提供到相應類型的電話線的數據通信連接。又如,通信接口418可以是區域網(LAN)卡,用於提供至兼容區域網(LAN)的數據通信連接。也可以使用無線鏈路。在任何這樣的實施中,通信接口418發送和接收承載表示各種類型的信息的數字數據流的電信號、電磁信號、和光學信號。
網絡鏈路420通常可通過一個或者多個網絡向其它數據裝置提供數據通信。例如,網絡鏈路420可通過區域網422與主機424連接,或者與網際網路服務提供商(ISP)426操作的數據設備連接。ISP426又通過目前通稱為「網際網路」428的全球分組數據通信網絡提供數據通信服務。區域網422和網際網路428都使用承載數字數據流的電信號、電磁信號、或光學信號。通過各種網絡的信號和網絡鏈路420上的信號以及通過通信接口418的信號,都傳送數字數據給計算機系統400或者傳送來自計算機系統的數字數據,是傳輸信息的載波的示例性形式。
計算機系統400能通過網絡、網絡鏈路420、和通信接口418發送消息和接收數據(包括程序代碼)。在網際網路的實例中,伺服器420可通過網際網路428、ISP 426、區域網422、和通信接口418,傳送用於應用程式的所請求的程序代碼。正如在此描述的,根據本發明,一個這樣下載的應用程式提供了與先前執行的輸出存儲器中的計劃操作符相關的結果集的存儲器。
所接收的代碼可以在其被接收時由處理器404執行,和/或存儲在存儲裝置410或者其它非易失性存儲器中用於隨後執行。按照這種方式,計算機系統400可以獲得載波形式的應用代碼。
在以上的說明中,已經參照可以隨著實施的不同而改變的多個特定細節描述了本發明的實施例。因此,本發明的唯一和專有標誌,以及申請人所期望的本發明,即為本申請以公布權利要求的特定形式所陳述的權利要求,包括任何後續修改。被清楚地陳述用於權利要求中所包含的術語的任何定義,都將限定在權利要求中所使用的這些術語的含義。因此,非限制性地,權利要求中沒有明確提到的元件、特性、特徵、優點、或者屬性都不應該以任何方式限制權利要求的範圍。因此,說明書及其附圖是用於示例說明的目的,而不是用於限制本發明。
權利要求
1.一種用於處理對資料庫伺服器的請求的方法,包括在所述資料庫伺服器接收來自用戶的第一查詢;生成用於經由所述資料庫伺服器執行所述第一查詢的第一計劃,其中,所述計劃包括多個第一計劃操作符,所述多個第一計劃操作符至少包括一個輸出第一結果集的第一計劃操作符;存儲所述第一結果集;接收來自用戶的第二查詢;生成用於經由所述資料庫伺服器執行所述第二查詢的第二計劃,其中,所述第二執行計劃包括多個第二計劃操作符,所述多個第二計劃操作符至少包括一個對應於所述第一計劃操作符的第二計劃操作符;確定所述第一結果集中的至少一部分可被用作所述第二操作符的第二結果集;以及基於存儲的所述第一結果集計算所述第二查詢。
2.根據權利要求1所述的方法,其中,存儲所述第一結果集的步驟包括使籤名與所述第一結果集相關。
3.根據權利要求2所述的方法,其中,基於由所述第一計劃操作符執行的操作來生成所述籤名。
4.根據權利要求2所述的方法,其中,所述確定步驟至少包括將所述第二計劃操作符的籤名與多個計劃操作符的被存儲的籤名進行比較,以確定是否所述多個計劃操作符中的每個都是所述第二計劃操作符。
5.根據權利要求1所述的方法,其中,所述第一計劃操作符和所述第二計劃操作符完全相同。
6.根據權利要求1所述的方法,其中,所述第一計劃操作符和所述第二計劃操作符不完全相同。
7.根據權利要求1所述的方法,其中,所述第一計劃操作符和所述第二計劃操作符相似。
8.根據權利要求1所述的方法,其中,所述第一計劃操作符和所述第二計劃操作符完全相同,但是所述第一結果集和所述第二結果集不同。
9.根據權利要求1所述的方法,其中,所述第一執行計劃包括第三計劃操作符,所述方法進一步包括響應於所述第三計劃操作符輸出第三結果集,其中,不存儲所述第三結果集。
10.根據權利要求1所述的方法,其中,所述確定步驟至少包括確定何時計算所述第一結果集。
11.根據權利要求1所述的方法,其中,所述第一計劃操作符和所述第二計劃操作符之間存在差異,並且所述計算步驟至少包括基於所述差異修改所述第一結果集。
12.一種承載有一個或多個指令序列的機器可讀介質,當被一個或多個處理器執行時,使所述一個或多個處理器執行包括以下步驟的方法在所述資料庫伺服器接收來自用戶的第一查詢;生成用於經由所述資料庫伺服器執行所述第一查詢的第一計劃,其中,所述計劃包括多個第一計劃操作符,所述多個第一計劃操作符至少包括一個輸出第一結果集的第一計劃操作符;存儲所述第一結果集;接收來自用戶的第二查詢;生成用於經由所述資料庫伺服器執行所述第二查詢的第二計劃,其中,所述第二執行計劃包括多個第二計劃操作符,所述多個第二計劃操作符至少包括一個對應於所述第一計劃操作符的第二計劃操作符;確定所述第一結果集中的至少一部分可被用作所述第二操作符的第二結果集;以及基於存儲的所述第一結果集計算所述第二查詢。
13.根據權利要求12所述的機器可讀介質,其中,存儲所述第一結果集的步驟包括使籤名與所述第一結果集相關。
14.根據權利要求13所述的機器可讀介質,其中,基於由所述第一計劃操作符執行的操作來生成所述籤名。
15.根據權利要求13所述的機器可讀介質,其中,所述確定步驟至少包括將所述第二計劃操作符的籤名與多個計劃操作符的被存儲的籤名進行比較,以確定是否所述多個計劃操作符中的每個都是所述第二計劃操作符。
16.根據權利要求12所述的機器可讀介質,其中,所述第一計劃操作符和所述第二計劃操作符完全相同。
17.根據權利要求12所述的機器可讀介質,其中,所述第一計劃操作符和所述第二計劃操作符不完全相同。
18.根據權利要求12所述的機器可讀介質,其中,所述第一計劃操作符和所述第二計劃操作符相似。
19.根據權利要求12所述的機器可讀介質,其中,所述第一計劃操作符和所述第二計劃操作符完全相同,但是所述第一結果集和所述第二結果集不同。
20.根據權利要求12所述的機器可讀介質,其中,所述第一執行計劃包括第三計劃操作符,所述方法進一步包括響應於所述第三計劃操作符輸出第三結果集,其中,不存儲所述第三結果集。
21.根據權利要求12所述的機器可讀介質,其中,所述確定步驟至少包括確定何時計算所述第一結果集。
22.根據權利要求12所述的機器可讀介質,其中,所述第一計劃操作符和所述第二計劃操作符之間存在差異,並且所述計算步驟至少包括基於所述差異修改所述第一結果集。
全文摘要
當執行查詢時形成由多個計劃操作符組成的執行計劃。在執行任何給定計劃操作符之前,檢查存儲區域。如果已存儲了對應於計劃操作符的結果集,則使用緩存結果集,而不是執行計劃操作符。如果不存在對應於特定計劃操作符的結果集,則執行計劃操作符,並且可以存儲被輸出的結果集已備另一執行計劃的另一計劃操作符使用。
文檔編號G06F17/30GK1947118SQ200580012505
公開日2007年4月11日 申請日期2005年4月20日 優先權日2004年4月22日
發明者切廷·厄茲通 申請人:甲骨文國際公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀