欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于診斷執(zhí)行問題的數(shù)據(jù)庫查詢執(zhí)行跟蹤和數(shù)據(jù)生成的制作方法

文檔序號:11333825閱讀:199來源:國知局
用于診斷執(zhí)行問題的數(shù)據(jù)庫查詢執(zhí)行跟蹤和數(shù)據(jù)生成的制造方法與工藝
本發(fā)明一般地涉及數(shù)據(jù)庫開發(fā)和管理。具體地說,它提供適合于數(shù)據(jù)庫跟蹤的方法和系統(tǒng)。
背景技術(shù)
:在開發(fā)和管理數(shù)據(jù)庫環(huán)境中,必須標(biāo)識數(shù)據(jù)庫查詢執(zhí)行問題。這些問題可能與數(shù)據(jù)相關(guān),并且可能包括由于查詢執(zhí)行、內(nèi)部/外部錯誤、錯誤結(jié)果、非確定性結(jié)果、以及性能下降導(dǎo)致的數(shù)據(jù)庫崩潰。這些問題在復(fù)雜數(shù)據(jù)庫環(huán)境中的處置更具挑戰(zhàn)性,復(fù)雜數(shù)據(jù)庫環(huán)境可能包括云計算、大數(shù)據(jù)和業(yè)務(wù)分析工具。這些環(huán)境往往涉及具有耦合到大型快速存儲系統(tǒng)的強(qiáng)大計算機(jī)的系統(tǒng)。因此,本領(lǐng)域需要解決上述問題。技術(shù)實現(xiàn)要素:從第一方面看,本發(fā)明提供一種用于數(shù)據(jù)庫跟蹤的方法,所述方法包括:接收針對第一查詢在第一輸入數(shù)據(jù)上的執(zhí)行而捕獲的蹤跡數(shù)據(jù),其中所述蹤跡數(shù)據(jù)將所述查詢的子句與所述執(zhí)行期間產(chǎn)生的相應(yīng)求值(evaluation)狀態(tài)相關(guān)聯(lián);在不訪問所述第一輸入數(shù)據(jù)的情況下從所述蹤跡數(shù)據(jù)生成第二輸入數(shù)據(jù),以使得所述第一輸入數(shù)據(jù)保持私有;以及實現(xiàn)第二查詢在所述第二輸入數(shù)據(jù)上的執(zhí)行,其中實現(xiàn)所述第二查詢在所述第二輸入數(shù)據(jù)上的執(zhí)行再現(xiàn)來自所述第一查詢在所述第一輸入數(shù)據(jù)上的執(zhí)行的求值狀態(tài)。從另一方面看,本發(fā)明提供一種用于數(shù)據(jù)庫跟蹤的系統(tǒng),所述系統(tǒng)包括:處理器;以及計算機(jī)可讀存儲介質(zhì),其連接到所述處理器,其中所述計算機(jī)可讀存儲介質(zhì)具有存儲在其上的用于控制所述處理器的程序,并且其中所述處理器與所述程序一起操作以執(zhí)行所述程序以便:接收針對第一查詢在第一輸入數(shù)據(jù)上的執(zhí)行而捕獲的蹤跡數(shù)據(jù),其中所述蹤跡數(shù)據(jù)將所述查詢的子句與所述執(zhí)行期間產(chǎn)生的相應(yīng)求值狀態(tài)相關(guān)聯(lián);在不訪問所述第一輸入數(shù)據(jù)的情況下從所述蹤跡數(shù)據(jù)生成第二輸入數(shù)據(jù),以使得所述第一輸入數(shù)據(jù)保持私有;以及實現(xiàn)第二查詢在所述第二輸入數(shù)據(jù)上的執(zhí)行,其中實現(xiàn)所述第二查詢在所述第二輸入數(shù)據(jù)上的執(zhí)行再現(xiàn)來自所述第一查詢在所述第一輸入數(shù)據(jù)上的執(zhí)行的求值狀態(tài)。從另一方面看,本發(fā)明提供一種用于數(shù)據(jù)庫跟蹤的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)可由處理電路讀取并存儲指令,所述指令用于由所述處理電路執(zhí)行以執(zhí)行一種用于執(zhí)行本發(fā)明的步驟的方法。從另一方面看,本發(fā)明提供一種計算機(jī)程序,其存儲在計算機(jī)可讀介質(zhì)上并且可加載到數(shù)字計算機(jī)的內(nèi)部存儲器中,所述計算機(jī)程序包括軟件代碼部分,當(dāng)所述程序在計算機(jī)上運(yùn)行時,所述軟件代碼部分用于執(zhí)行本發(fā)明的步驟。根據(jù)本發(fā)明的實施例,一種方法包括接收針對第一查詢在第一輸入數(shù)據(jù)上的執(zhí)行而捕獲的蹤跡數(shù)據(jù)。所述蹤跡數(shù)據(jù)將所述第一查詢的子句與所述執(zhí)行期間產(chǎn)生的相應(yīng)求值狀態(tài)相關(guān)聯(lián)。在不訪問所述第一輸入數(shù)據(jù)的情況下從所述蹤跡數(shù)據(jù)生成第二輸入數(shù)據(jù)。實現(xiàn)第二查詢在所述第二輸入數(shù)據(jù)上的執(zhí)行,其中實現(xiàn)所述第二查詢在所述第二輸入數(shù)據(jù)上的執(zhí)行再現(xiàn)來自所述第一查詢在所述第一輸入數(shù)據(jù)上的執(zhí)行的求值狀態(tài)。在此還描述和要求保護(hù)與以上概述的方法相關(guān)的系統(tǒng)和計算機(jī)程序產(chǎn)品。附圖說明從以下將結(jié)合附圖閱讀的對本發(fā)明的示例性實施例的詳細(xì)說明,本發(fā)明的上述方面和其它方面,包括目標(biāo)、形式、特性和優(yōu)點(diǎn),將變得更顯而易見。附圖未按比例并且為了清晰起見與詳細(xì)說明一起促進(jìn)相關(guān)領(lǐng)域的技術(shù)人員的理解。在附圖中:圖1示出根據(jù)本發(fā)明的一個優(yōu)選實施例的網(wǎng)絡(luò)計算機(jī)環(huán)境;圖2是根據(jù)本發(fā)明的一個優(yōu)選實施例的圖1中所示的設(shè)備的框圖;圖3示出根據(jù)本發(fā)明的一個優(yōu)選實施例的聯(lián)接(join)處理的某些方面;圖4示出根據(jù)本發(fā)明的一個優(yōu)選實施例的聯(lián)接處理的其它方面。具體實施方式在此公開本發(fā)明的詳細(xì)實施例以便例示要求保護(hù)的結(jié)構(gòu)和方法。但是,本發(fā)明可以以多種不同的形式體現(xiàn),并且不應(yīng)被解釋為限于在此公開的示例性實施例。相反,提供這些示例性實施例以使得本公開詳盡并完整,并且將本發(fā)明的范圍完全傳達(dá)給所屬
技術(shù)領(lǐng)域
的技術(shù)人員。在描述中,可以省略公知特性和技術(shù)的細(xì)節(jié)以便避免不必要地使提供的實施例變得模糊不清。為了使開發(fā)和支持團(tuán)隊在合理的時間范圍內(nèi)簡單地再現(xiàn)目標(biāo)數(shù)據(jù)庫的查詢執(zhí)行問題,他們可以在類似于原始執(zhí)行中使用的規(guī)模上使用數(shù)據(jù)、計算和存儲資源。甚至除了這呈現(xiàn)的計算和存儲資源挑戰(zhàn)之外,數(shù)據(jù)庫管理員可能不愿意與開發(fā)和支持團(tuán)隊完全共享目標(biāo)數(shù)據(jù)庫數(shù)據(jù)(例如由于隱私問題),盡管管理員通常將共享數(shù)據(jù)庫的模式(schema)。根據(jù)本發(fā)明的實施例,開發(fā)或支持團(tuán)隊可以生成用于故障排除的備選輸入數(shù)據(jù),其中備選輸入數(shù)據(jù)基于目標(biāo)數(shù)據(jù)庫模式。在暴力方法中,生成將滿足查詢謂詞的所有排列的數(shù)據(jù)。對于具有三個謂詞的查詢,例如,其中每個謂詞具有兩個可能的求值狀態(tài),即真或假,存在謂詞的2^3=8個組合,即,(ttt)(ttf)(tft)(ftt)(fft)(tff)(ftf)(fff)。因此,暴力數(shù)據(jù)生成將涉及針對這八個組合中的每一者生成數(shù)據(jù)以便用于模擬查詢執(zhí)行。備選地或此外,開發(fā)人員可以通過機(jī)器生成的查詢手動解析,并且嘗試通過使用他們的經(jīng)驗進(jìn)行簡化,這可以包括查看在原始執(zhí)行環(huán)境中捕獲的蹤跡和日志文件。這既繁瑣又耗時。所有這些問題都影響開發(fā)和支持團(tuán)隊再現(xiàn)和隔離查詢執(zhí)行問題的能力。本發(fā)明的實施例提供用于適當(dāng)限制數(shù)據(jù)和資源的方式,以便成功再現(xiàn)目標(biāo)數(shù)據(jù)庫中的查詢執(zhí)行的行為,同時維護(hù)目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)的隱私。這包括在服務(wù)于目標(biāo)數(shù)據(jù)庫的計算機(jī)系統(tǒng)302中提供專用查詢跟蹤(在此為“指紋跟蹤”或“查詢指紋跟蹤”)。此跟蹤導(dǎo)致減少為了再現(xiàn)特定查詢的行為而生成的數(shù)據(jù)?,F(xiàn)在參考圖3,根據(jù)本發(fā)明的實施例,可以通過在計算機(jī)系統(tǒng)302上執(zhí)行指紋跟蹤程序303,在服務(wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302中實現(xiàn)查詢指紋跟蹤。指紋跟蹤程序303包括在服務(wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302上運(yùn)行的跟蹤模塊306,其中模塊306將跟蹤應(yīng)用于諸如聯(lián)接過濾器(joinfilter)和謂詞求值之類的子句,以及應(yīng)用于用于區(qū)域圖、概要或索引的子句(無論哪一個或多個應(yīng)用),具體取決于特定目標(biāo)數(shù)據(jù)庫304。(術(shù)語“區(qū)域圖”在此可以用于指區(qū)域圖、概要或索引。)這包括在查詢執(zhí)行模塊312針對給定輸入數(shù)據(jù)集304執(zhí)行查詢314期間捕獲指紋蹤跡310。蹤跡310提供針對被求值數(shù)據(jù)304的行產(chǎn)生的求值狀態(tài)的記錄。還提供數(shù)據(jù)生成工具320(在此也被稱為dgt或“數(shù)據(jù)生成器”或“數(shù)據(jù)生成模塊”),其可以是指紋跟蹤程序306的一部分,或者可以是單獨(dú)模塊。同樣,數(shù)據(jù)生成模塊320可以在服務(wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302上運(yùn)行,或者在不同的計算機(jī)系統(tǒng)322上運(yùn)行,如圖3中所示。查詢指紋蹤跡模塊306或用于壓縮的某個其它模塊(例如圖3中所示的模塊330)響應(yīng)于指紋蹤跡數(shù)據(jù)310中的這些捕獲的求值狀態(tài)而確定合并數(shù)據(jù)(uniondata)332,如在下文進(jìn)一步解釋的那樣。壓縮數(shù)據(jù)的任何模塊都可以被稱為“數(shù)據(jù)壓縮模塊”、“dcm”、“壓縮模塊”或“壓縮器”。盡管在圖3中被示出為單獨(dú)數(shù)據(jù)集,但合并數(shù)據(jù)332可以被包括在蹤跡數(shù)據(jù)310中。根據(jù)本發(fā)明的實施例,dgt320和壓縮器330可以是單個模塊。因此,例如在此對壓縮器330的引用可以被解釋為備選地參考dgt320。根據(jù)本發(fā)明的實施例,dcm330還響應(yīng)于蹤跡數(shù)據(jù)310生成修改后的查詢333,其中修改后的查詢333可以根據(jù)合并數(shù)據(jù)332省略查詢314的某些子句。結(jié)合在下文提供的示例進(jìn)一步描述用于生成合并數(shù)據(jù)332的實現(xiàn)細(xì)節(jié)。數(shù)據(jù)生成模塊320生成備選輸入數(shù)據(jù)324(即,要由支持或開發(fā)團(tuán)隊使用的數(shù)據(jù)),其用于再現(xiàn)原始查詢執(zhí)行模塊312執(zhí)行原始查詢314的行為,例如以便模擬目標(biāo)數(shù)據(jù)庫304的原始查詢執(zhí)行的行為。dgt320解析指紋蹤跡數(shù)據(jù)310,或者備選地解析其合并數(shù)據(jù)332版本,并且基于蹤跡數(shù)據(jù)310(或合并數(shù)據(jù)332)、目標(biāo)數(shù)據(jù)庫模式308和原始查詢314或修改后的查詢333,響應(yīng)性地生成備選輸入數(shù)據(jù)324。查詢執(zhí)行模塊(例如系統(tǒng)322的模塊334)針對備選輸入數(shù)據(jù)324執(zhí)行查詢以便產(chǎn)生模擬結(jié)果336,其模擬導(dǎo)致原始結(jié)果316的原始執(zhí)行,其中該查詢可以是基于合并數(shù)據(jù)332的修改后的查詢333或者可以是原始查詢314,具體取決于實施例??梢栽诜?wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302上產(chǎn)生數(shù)據(jù)庫查詢執(zhí)行問題的上下文中應(yīng)用諸如圖3中所示的查詢指紋跟蹤。問題例如可以包括數(shù)據(jù)庫崩潰、內(nèi)部/外部錯誤、錯誤結(jié)果、非確定性結(jié)果、性能不佳或其任何組合。遇到問題(多個)的用戶可以是管理員或客戶端計算機(jī)系統(tǒng)322處的其它用戶,用戶可以經(jīng)由與服務(wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302的網(wǎng)絡(luò),從客戶端計算機(jī)系統(tǒng)322訪問目標(biāo)數(shù)據(jù)庫304??蛻舳擞嬎銠C(jī)系統(tǒng)322可以具有客戶端指紋跟蹤接口模塊326,客戶端指紋跟蹤接口模塊326用于與在服務(wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302上運(yùn)行的指紋跟蹤程序306通信。指紋跟蹤程序306在服務(wù)于目標(biāo)數(shù)據(jù)庫304的計算機(jī)系統(tǒng)302上執(zhí)行,其響應(yīng)地驗證會話變量并且然后開始指紋跟蹤,這包括掃描查詢314以便確定其參數(shù),例如表、列、謂詞、值、聯(lián)接過濾器等。然后,指紋跟蹤程序306響應(yīng)于所述參數(shù)而收集查詢314的數(shù)據(jù)。根據(jù)本發(fā)明的實施例,指紋跟蹤程序306在模塊312執(zhí)行查詢期間監(jiān)視給定數(shù)據(jù)集304中的給定查詢謂詞的每個行求值,并且響應(yīng)地生成指紋蹤跡310,指紋蹤跡310可以采取如在下文描述的特定格式。即,查詢指紋蹤跡模塊306確定謂詞求值結(jié)果的組合。(這些求值結(jié)果中的每一者在此也可以被稱為“求值狀態(tài)”。因為它們是謂詞求值的結(jié)果,所以每一者可以被稱為“謂詞求值狀態(tài)”或者更簡單地被稱為“謂詞狀態(tài)”。)模塊306捕獲求值狀態(tài),如在下文進(jìn)一步描述的那樣。此外或備選地,指紋跟蹤程序306捕獲求值并且生成用于聯(lián)接過濾器的指紋蹤跡310。同樣,指紋跟蹤程序306可以捕獲求值并且生成用于區(qū)域圖的指紋蹤跡310。首先在以下示例中描述謂詞求值。此后,根據(jù)本發(fā)明的實施例,提供用于聯(lián)接過濾器和區(qū)域圖的示例??紤]具有三個謂詞的“或”組合的查詢,即,p1orp2orp3,例如“(dept_name='dev'ordept_name='hardware'ordept_name='sales')”,其中“dept_name='dev'”是p1等。(在此,可以在不使用邏輯運(yùn)算符的情況下聲明謂詞狀態(tài)的組合,例如“p1p2p3”,因為它僅指示個體謂詞的求值狀態(tài)。應(yīng)該理解,例如可以針對具有諸如(p1orp2orp3)、(p1andp2andp3)、(p1and(p2orp3))之類的組合的查詢應(yīng)用“p1p2p3”。)由于本發(fā)明實施例的各個方面,生成的數(shù)據(jù)減少。一個方面涉及如下認(rèn)識:即,在模塊312執(zhí)行查詢中,根據(jù)固定、已知順序的查詢314謂詞(例如從右到左,即,p1然后p2然后p3)處理輸入數(shù)據(jù)304。因此,關(guān)于具有三個謂詞的“或(or)”組合的查詢314,例如本發(fā)明的實施例涉及如下認(rèn)識:即,一旦查詢執(zhí)行模塊312已確定第一組對應(yīng)行的輸入數(shù)據(jù)304滿足第一謂詞p1,模塊312就提交結(jié)果316并且繼續(xù)移動以便對輸入數(shù)據(jù)304中的下一組行求值,而不進(jìn)行用于判定第一組行的其余部分是否滿足p2或p3的求值。對于如以上示例的具有三個謂詞的“或”組合的查詢,本發(fā)明的實施例可以導(dǎo)致生成這樣的數(shù)據(jù)集:所述數(shù)據(jù)集具有僅產(chǎn)生謂詞求值狀態(tài)的三個組合的數(shù)據(jù)值。所述組合之一是p1=true、p2=i和p3=i,其中“i”指示真或假都無關(guān)緊要的求值狀態(tài),即“不關(guān)心”求值狀態(tài)。(這可以被寫為p1p2p3=tii。)在下文將進(jìn)一步解釋“i”狀態(tài)及其應(yīng)用。其它兩個組合是p1p2p3=fti和p1p2p3=fft。這導(dǎo)致如下進(jìn)一步的認(rèn)識:即,在生成用于模擬原始數(shù)據(jù)304的相同查詢執(zhí)行的備選輸入數(shù)據(jù)324中,在這種情況下dgt320可能不需要重新產(chǎn)生如原始數(shù)據(jù)304的第一組行的其余部分中的數(shù)據(jù)324。例如,當(dāng)查詢執(zhí)行模塊312確定產(chǎn)生求值狀態(tài)并且滿足用于第一組輸入數(shù)據(jù)304行的查詢314(例如以上示例中的p1=t)時,模塊312繼續(xù)移動以便對輸入數(shù)據(jù)304中的下一組行求值,而不對第一組行中的數(shù)據(jù)是否滿足查詢的其它謂詞進(jìn)行求值。在這種情況下,指紋蹤跡模塊306通過如下操作進(jìn)行響應(yīng):即,針對具有三個謂詞的“或”組合的查詢的其它剩余謂詞(例如p2和p3),指示“i”狀態(tài),如在以上示例中那樣。在指紋蹤跡模塊306中配置的相同邏輯導(dǎo)致在第二組合p1p2p3=fti中捕獲p3=i,因為p2=t。換言之,查詢314包括至少第一謂詞和另一個謂詞,并且由指紋蹤跡310捕獲的求值狀態(tài)包括查詢314中的謂詞的未求值狀態(tài)“i”(即,模塊312執(zhí)行的原始查詢未進(jìn)行求值),其中未進(jìn)行求值是因為原始查詢執(zhí)行確定輸入數(shù)據(jù)304的一組行中的第一數(shù)據(jù)滿足第一謂詞并且確定第一謂詞滿足查詢314,而不考慮該組行中的數(shù)據(jù)是否滿足另一個謂詞。在本發(fā)明實施例的另一個方面,未生成具有產(chǎn)生以上示例中的謂詞求值狀態(tài)組合p1p2p3=fff的數(shù)據(jù)值的備選輸入數(shù)據(jù)324,因為本發(fā)明的實施例涉及如下認(rèn)識:即,該數(shù)據(jù)可以作為崩潰或其它問題的潛在原因而被忽略。根據(jù)本發(fā)明實施例的此方面,指紋蹤跡模塊306被配置為未針對一組對應(yīng)輸入數(shù)據(jù)304行(其具有不滿足查詢314的值,例如以上示例中的p1p2p3=fff)的查詢執(zhí)行模塊312求值,在蹤跡數(shù)據(jù)310中捕獲個體謂詞求值狀態(tài)。備選地,指紋蹤跡模塊306可以被配置為針對此類情況在蹤跡數(shù)據(jù)310中捕獲個體謂詞求值狀態(tài),但數(shù)據(jù)生成模塊320被配置為未針對此類蹤跡數(shù)據(jù)310生成備選輸入數(shù)據(jù)324。更進(jìn)一步,數(shù)據(jù)生成模塊320可以被配置為針對此類蹤跡數(shù)據(jù)310生成備選輸入數(shù)據(jù)324(蹤跡數(shù)據(jù)310的所有實例的合并結(jié)果332具有“f”狀態(tài)的每個謂詞除外)。下面進(jìn)一步提供和解釋用于計算合并結(jié)果的真值表。以下是根據(jù)本發(fā)明實施例的生成用于謂詞求值的指紋蹤跡310的一個示例,其中跟蹤模塊306捕獲在目標(biāo)數(shù)據(jù)庫304的原始查詢執(zhí)行312中發(fā)生的謂詞求值的各個方面。在該示例中,不包括“i”狀態(tài),這僅為了簡化解釋。此外,在下文提供其中包括“i”狀態(tài)的示例。示例查詢(“示例1”)如下所示:selectid,emp_name,salaryfromemp,grpwhereid=(selectidfromgrpwheregrp_name=‘dev’orgrp_name='test')orsalary>25000在該示例中,第一謂詞p1是“whereid=(selectidfromgrpwheregrp_name=‘dev’orgrp_name='test')”,并且第二謂詞p2是“salary>25000”。(備選地,“grp_name=‘dev’orgrp_name='test'”可以被視為兩個謂詞。)在該查詢314的執(zhí)行312中,假設(shè)針對給定輸入數(shù)據(jù)集(即,目標(biāo)數(shù)據(jù)庫304),在“grp”表中存在兩個行:針對這兩個行,第一謂詞p1求值為“假”并且第二謂詞p2求值為“真”;存在兩個其它行:針對這兩個行,p1求值為“假”并且p2也求值為“假”;以及沒有如下行:針對這些行,p1求值為真,而不管p2如何求值。在下面的“謂詞指紋蹤跡數(shù)據(jù)”表中匯總作為跟蹤310捕獲的這些行求值結(jié)果,其中“t”指示真并且“f”指示假。謂詞指紋蹤跡數(shù)據(jù)(示例1)p1p2計數(shù)ff2ft2tf0tt0謂詞狀態(tài)的組合可以被提供為例如上表中的行,其中每個行用于謂詞狀態(tài)的唯一組合。(應(yīng)該理解,該表還可以通過簡單地省略這些行,指示沒有求值結(jié)果的組合。此外,該表可以省略如下行:該行列出所有謂詞的求值結(jié)果為假的組合。)對于兩個謂詞和兩個謂詞狀態(tài)t和f,存在四個可能的狀態(tài)組合ff、ft、tf和tt,因此求值結(jié)果狀態(tài)表可以列出四個求值結(jié)果行,如上所示。對于每個求值組合(即,表中的行),查詢指紋蹤跡模塊306使用數(shù)據(jù)庫模式308,捕獲在針對目標(biāo)數(shù)據(jù)庫304的查詢314的原始執(zhí)行312中出現(xiàn)多少個此類求值組合的計數(shù)。對于該示例,如上表所示,存在求值組合ff的2個實例、求值組合ft的2個實例、求值組合tf的0個實例、以及求值組合tt的0個實例。如上所述,查詢指紋蹤跡模塊306或用于壓縮的某個其它模塊(例如圖3中所示的模塊330)響應(yīng)于指紋蹤跡數(shù)據(jù)310中的這些捕獲的求值狀態(tài),確定合并數(shù)據(jù)332,其中對于針對組合之一(即,針對上表中的一個行)被求值為真的任何謂詞,該謂詞的合并值也為真,如邏輯“或”條件。(壓縮數(shù)據(jù)的任何模塊都可以被稱為“數(shù)據(jù)壓縮模塊”、“dcm”、“壓縮模塊”。)對于給定示例,沒有真謂詞p1的實例,因此所有p1謂詞求值組合的合并332=f。存在真謂詞p2的實例,因此所有p2謂詞求值的合并=t。根據(jù)本發(fā)明的實施例,dcm不對所有謂詞的求值結(jié)果為假的執(zhí)行實例進(jìn)行計數(shù)。因此,該示例中其它三種類型組合的謂詞求值的實例總數(shù)為2,因此dcm確定合并數(shù)據(jù)計數(shù)=2。該示例的該合并結(jié)果332匯總?cè)缦拢簆1p2計數(shù)ft2備選地,dcm330可以對如下執(zhí)行實例計數(shù):針對這些執(zhí)行實例,具有真合并結(jié)果332的謂詞的求值結(jié)果為真和假,在這種情況下,對于該示例以上合并結(jié)果332表中的計數(shù)為4。因為對于給定查詢謂詞p1和目標(biāo)數(shù)據(jù)庫304,由dcm330確定的該合并結(jié)果332為假,這導(dǎo)致在使用合并結(jié)果332的實施例中,dgt320消除用于修改后的查詢333的謂詞p1。因此,dgt320不針對謂詞p1生成備選數(shù)據(jù)324。對于謂詞p2,dgt320根據(jù)在目標(biāo)數(shù)據(jù)庫304的初始查詢執(zhí)行312期間捕獲的謂詞求值蹤跡310生成測試數(shù)據(jù)324。在這種特定情況下,這意味著dgt320根據(jù)按照以上謂詞指紋蹤跡數(shù)據(jù)表并且按照合并結(jié)果332的蹤跡310,生成grp和emp表中的測試數(shù)據(jù)324的行,這些行具有足夠的值以便至少兩次使謂詞p2(salary>25000)求值為真。在其中dcm不對所有謂詞的求值結(jié)果為假的執(zhí)行實例計數(shù)的備選方案中,dgt320生成grp和emp表中的測試數(shù)據(jù)324的如下行:這些行具有足夠的值以便至少兩次使謂詞p2(salary>25000)求值為假,并且生成測試數(shù)據(jù)的如下行:這些行具有足夠的值以便至少兩次使p2求值為真。以下各表提供dgt320可以針對示例1生成的備選輸入數(shù)據(jù)324的示例。emp表idemp_namesalary1007100randomtext1250011007101randomtext2250021007102randomtext3249981007103randomtext424999grp表idgrp_name1107100randomtext111107101randomtext121107102randomtext13p2要求salary>25000,并且以上“謂詞指紋蹤跡數(shù)據(jù)(示例1)”表指示p2為假的蹤跡數(shù)據(jù)310的兩個實例(表的第一行)和p2為真的蹤跡數(shù)據(jù)310的兩個實例(表的第二行),因此對于該示例,dgt320生成備選數(shù)據(jù)324中的謂詞p2的四個值,其中兩個值大于25000并且兩個值小于或等于25000。員工名稱(emp_name字段)未被包括在任何謂詞中,因此dgt320針對該字段的行生成隨機(jī)數(shù)據(jù)。所有組名稱產(chǎn)生假求值狀態(tài),因此dgt320針對該字段的行生成隨機(jī)數(shù)據(jù),只是隨機(jī)數(shù)據(jù)被限制為not=“dev”和not=“test”。備選地,對于由模塊334執(zhí)行的用于模擬的查詢333,壓縮器330可以消除謂詞p1,即“grp_name=‘dev’orgrp_name=′test′”。相應(yīng)地,壓縮器330可以從select語句中消除對grp表(“grp”)的引用,以使得修改后的查詢333如下所示:selectid,emp_name,salaryfromempwheresalary>25000在該備選方案中,dgt320針對grp表根本不生成任何數(shù)據(jù),并且甚至可以選擇不定義grp表。在該備選方案中,dgt320可以生成謂詞p2具有四個值的備選數(shù)據(jù)324,其中兩個值大于25000并且兩個值小于或等于25000,如上所述,或者備選地可以生成謂詞p2僅具有兩個值的備選數(shù)據(jù)324,這兩個值都大于25000。在上文的示例1中,謂詞狀態(tài)“t”和“f”被提供為指紋蹤跡數(shù)據(jù)表中的求值狀態(tài)變量。根據(jù)本發(fā)明的實施例,可以存在其它謂詞狀態(tài)。如前所述,可以包括狀態(tài)“i”,其指示至少由于以下原因而未對謂詞求值。如果少于所有謂詞的謂詞滿足查詢,則針對結(jié)果表生成的每個行可以從查詢的少于所有謂詞的求值而產(chǎn)生。因此,當(dāng)某些謂詞滿足來自輸入表的對應(yīng)行的特定組合的查詢時,可以有意跳過該特定組合的其它謂詞的求值,并且這些其它謂詞的每個狀態(tài)可以由“i”指示。用于查詢的求值的指紋蹤跡數(shù)據(jù)表中的求值狀態(tài)變量還可以包括狀態(tài)“e”,其指示當(dāng)捕獲指紋蹤跡數(shù)據(jù)310時謂詞待求值??赡墚a(chǎn)生該狀態(tài),因為模塊312執(zhí)行的查詢314可能例如由于崩潰或者由于用戶停止執(zhí)行而在完整求值完成之前停止。根據(jù)本發(fā)明的實施例,下表匯總四個求值狀態(tài)。求值狀態(tài)的含義下面是另一個示例查詢(“示例2”):selectemp_name,dept_name,salaryfromempejoinregisterrone.emp_id=r.emp_idjoindeptdonr.dept_id=d.dept_idwheresalary>3000and(dept_name='dev'ordept_name='hardware'ordept_name='sales');除其它項外,該示例示出在指紋蹤跡數(shù)據(jù)310中捕獲的其它查詢求值狀態(tài)i。注意,在示例2中,“(dept_name='dev'ordept_name='hardware'ordept_name='sales')”被視為三個謂詞,而在示例1中,“(selectidfromgrpwheregrp_name=‘dev’orgrp_name='test')”被視為一個謂詞。如前所述,根據(jù)本發(fā)明的實施例,存在兩個備選方案。來自輸入表的對應(yīng)行的任何組合可以滿足該示例2的查詢,其中p1為真并且p2、p3和p4中的一者或多者為真。因此,如果p1和p2例如為真,則滿足查詢314。一旦針對對應(yīng)輸入表304行的組合確定p1和p2為真,p3或p4針對這些行是否為真無關(guān)緊要。因此,在這種情況下,在對p1和p2求值之后,查詢求值模塊312可以停止而不對p3和p4求值,并且可以將來自這些輸入表304行的數(shù)據(jù)提交到結(jié)果表316的行,其中結(jié)果表316中的此類行的謂詞p1、p2、p3和p4的狀態(tài)變量是ttii。下面是該示例查詢中涉及的表和列的列表:下面是查詢中涉及的謂詞的列表:下面是查詢中涉及的捕獲聯(lián)接過濾器的列表:下面是該查詢的示例輸入表:emp表dept表dept_iddept_name101銷售102營銷103財務(wù)104開發(fā)105硬件106管理107軟件register表下面是將以上查詢應(yīng)用于以上輸入表的結(jié)果:結(jié)果表(示例2)emp_namedept_namesalary福斯特硬件7800吉姆開發(fā)5300麥克硬件9700桑杰開發(fā)5200重述以上的至少某些內(nèi)容,dgt320生成備選輸入數(shù)據(jù)324,以便用于通過與最初執(zhí)行查詢314的模塊312不同的執(zhí)行模塊334模擬查詢314的執(zhí)行,或者即使通過相同模塊312,執(zhí)行模塊334也至少針對備選輸入模塊324模擬查詢314的執(zhí)行。這是因為最初針對其處理查詢314的原始數(shù)據(jù)304可能例如由于隱私原因而不可用。即使可用,原始數(shù)據(jù)304也可能太多。模擬可以有助于確定針對原始數(shù)據(jù)304的查詢執(zhí)行失敗或執(zhí)行不佳的原因。即使針對原始數(shù)據(jù)304適當(dāng)?shù)貓?zhí)行查詢執(zhí)行,也可以進(jìn)行模擬以便分析如何提高查詢執(zhí)行性能。dgt320響應(yīng)于模式308、以及在針對原始數(shù)據(jù)304執(zhí)行查詢314期間捕獲的指紋蹤跡數(shù)據(jù)310,生成備選輸入數(shù)據(jù)324。dgt320還響應(yīng)于原始查詢314或響應(yīng)于修改后的查詢333,生成備選輸入數(shù)據(jù)324。(因為基于查詢314生成修改后的查詢333,所以仍然可以說dgt響應(yīng)于查詢314生成備選輸入數(shù)據(jù)324。)由指紋跟蹤程序306捕獲指紋蹤跡數(shù)據(jù)310。即,在針對原始數(shù)據(jù)304執(zhí)行查詢314時,指紋跟蹤程序306根據(jù)查詢謂詞和原始輸入數(shù)據(jù)集304,針對每個求值(或至少針對選擇性求值)捕獲某些狀態(tài)數(shù)據(jù),并且響應(yīng)地提供狀態(tài)數(shù)據(jù)作為指紋蹤跡310。根據(jù)本發(fā)明的實施例,狀態(tài)數(shù)據(jù)包括可能謂詞狀態(tài)的每個特定組合以及在求值過程中出現(xiàn)的該組合的實例數(shù)量的計數(shù)。備選地,蹤跡310的狀態(tài)數(shù)據(jù)可以通過省略僅指示沒有求值實例的那些組合。因此,指紋蹤跡數(shù)據(jù)310指示在捕獲蹤跡數(shù)據(jù)310時(這可以是發(fā)生查詢執(zhí)行故障時)的組合中的每個謂詞的求值狀態(tài)。以下指紋數(shù)據(jù)表用于根據(jù)以上示例2成功完成的查詢執(zhí)行。它提供針對原始數(shù)據(jù)304執(zhí)行查詢期間捕獲的指紋蹤跡數(shù)據(jù)310。因為它用于成功完成的查詢執(zhí)行,所以它不包括“e”狀態(tài)。在該示例中,跟蹤310省略不滿足查詢的求值實例,例如“銷售”中的“詹姆斯”的ffft(這將被捕獲為fiii,因為初始p1=f將它從該特定查詢中排除),以及例如“財務(wù)”中的“亨利”的tfff和“營銷”中的“杰克”和“約翰”等。指紋蹤跡數(shù)據(jù)表(示例2)p1p2p3p4計數(shù)ttii2tfti2ttti4合并結(jié)果對于該示例,如以上指紋蹤跡數(shù)據(jù)表(示例2)的第一行中所示,p1和p2在兩個實例中為真,即,“桑杰”和“吉姆”的行,他們的工資都高于$3000(p1)并且都在“開發(fā)”部門(p2)。這些條件滿足查詢,而不管針對原始數(shù)據(jù)304輸入表中的行(即,分別用于“吉姆”的emp、dept和register表中的第5、4和5行以及用于“桑杰”的這些相同表中的第8、4和5行)的對應(yīng)組合而對p3和p4求值的結(jié)果。因此,p3或p4針對這些行是否為真無關(guān)緊要。因此在這些情況下,在對p1和p2求值之后,查詢求值模塊停止而不對p3和p4求值,并且指紋蹤跡模塊306遞增當(dāng)查詢執(zhí)行模塊312將來自這些輸入表304行的數(shù)據(jù)提交到結(jié)果表316的行時產(chǎn)生的p1p2p3p4謂詞求值狀態(tài)的“ttii”組合的計數(shù)。對于該同一示例,如以上指紋蹤跡數(shù)據(jù)表(示例2)的第二行中所示,p1在另外兩個實例中為真,即,針對“麥克”和“福斯特”(即,emp表的第6和11行)為真,但p2針對他們中的任何一個都不為真,因為麥克或福斯特都不在開發(fā)部門。這可以從register表的第6和11行中看出,它們都指向dept表的第5行,表明他們都在硬件部門。但是,硬件部門滿足p3。因此,在針對原始emp、dept和register表的查詢執(zhí)行期間,查詢執(zhí)行模塊將第1和3行分別提交到用于福斯特和麥克的結(jié)果表316,其中在這兩種情況下,這些時間的謂詞求值狀態(tài)為ttti。每次,指紋蹤跡模塊306遞增謂詞狀態(tài)的ttti組合的計數(shù)器。下面是在本發(fā)明的實施例中dgt320可如何通過有向隨機(jī)過程生成備選輸入數(shù)據(jù)324的一個示例。為了準(zhǔn)備初始值組(例如從中選擇滿足至少三個謂詞p1、p2和p3的不同組合的值),dgt320生成滿足p1的n個值u(即,u1至un)、滿足p2的n個值v(即,v1至vn)、滿足p3的n個值w(即,w1至wn)、不滿足p1的n個值x(即,u1至un)、不滿足p2的n個值y(即,v1至vn)、不滿足p3的n個值z(即,w1至wn),其中例如u用于表1中的列,v用于表2中的列,并且w用于表3中的列。為了例如生成值的組合以使得p1p2p3=tft,dgt320針對n生成隨機(jī)值并選擇對應(yīng)的u,針對n生成下一個隨機(jī)值并選擇對應(yīng)的y,并且針對n生成下一個隨機(jī)值并選擇對應(yīng)的w。針對u、y和w的選定值的組合將求值為tft。dgt320將這些選定值中的每一者寫入其相應(yīng)表中的對應(yīng)行(即,彼此鏈接的行)中。當(dāng)表中的行通過如模式308指示的其它數(shù)據(jù)鏈接在一起時,除了滿足謂詞的值的上述有向隨機(jī)生成之外,還需要dgt320生成數(shù)據(jù)。例如,通過均在emp_id列中具有相同值,以上示例中的register表的第5行被鏈接到emp表的第5行。同樣,通過均在dept_name列中具有相同值,以上示例中的register表的第5行被鏈接到dept表的第4行。為了將滿足謂詞的生成值鏈接在一起,dgt320生成隨機(jī)值并且將它們寫入表中的列,這些列鏈接具有用于滿足謂詞的生成值的對應(yīng)行。根據(jù)本發(fā)明的實施例,dcm壓縮求值狀態(tài)及其相應(yīng)計數(shù)的蹤跡310表。(這可以作為指紋跟蹤程序306的一部分完成,或者該壓縮可以由另一個程序完成,該程序可以在另一個計算機(jī)系統(tǒng)322上,例如在其上dgt320生成備選輸入數(shù)據(jù)324的計算機(jī)系統(tǒng)。)該壓縮可以如上文關(guān)于示例1所述的那樣完成,其中針對捕獲的指紋跟蹤表310的每個列執(zhí)行合并332操作。但是,下面提供以下其它細(xì)節(jié),因為示例1示出僅具有兩個狀態(tài)的指紋蹤跡310,而蹤跡310可以捕獲四個求值狀態(tài),如示例2示出。以下真值表提供適用于所有四個求值狀態(tài)的合并運(yùn)算的規(guī)則。合并真值表執(zhí)行壓縮的壓縮模塊330可以是指紋跟蹤程序306或數(shù)據(jù)生成程序或另一個程序的模塊。壓縮模塊330針對指紋蹤跡數(shù)據(jù)310的列中的求值狀態(tài)執(zhí)行以上真值表定義的合并運(yùn)算。例如,參見上文示例2的指紋數(shù)據(jù)表的底端行。一旦向壓縮模塊提供以上指紋數(shù)據(jù)表,壓縮模塊就針對其每個列中的求值狀態(tài)執(zhí)行合并運(yùn)算。對于第一列,txt=t。對于第二列,txf=t。依此類推。對于較大數(shù)據(jù)集,當(dāng)然指紋數(shù)據(jù)表將通常具有更多行。如果具有要壓縮的三個行,則在列中的第一和第二行的第一合并運(yùn)算之后,使用同一列中的第三行中的求值狀態(tài)和來自第一合并運(yùn)算的結(jié)果來執(zhí)行第二合并運(yùn)算。如果具有要壓縮的四個行,則針對來自第二合并運(yùn)算的結(jié)果執(zhí)行第三合并運(yùn)算。如果仍然具有更多行,則依此類推。dgt320使用指紋蹤跡數(shù)據(jù)310和指紋蹤跡數(shù)據(jù)310的壓縮版本(即,合并運(yùn)算的結(jié)果)來確定生成什么數(shù)據(jù)以便包括在備選輸入數(shù)據(jù)324的集合中,該集合用于由查詢執(zhí)行模塊334處理以便作為處理原始數(shù)據(jù)304的模擬。更具體地說,對于示例2,dgt320生成emp、dept和register表中具有如下值的行:針對這些值,查詢執(zhí)行導(dǎo)致查詢謂詞求值狀態(tài)p1p2=tt(上文示例2的指紋蹤跡數(shù)據(jù)表的第一行)的至少兩個實例以及狀態(tài)p1p2p3=tft(第二行)的至少兩個實例。換言之,dgt320生成具有如下值的行:這些值與以下值產(chǎn)生相同的求值狀態(tài):用于“吉姆”的emp、dept和register表的第5、4和5行中的值、用于“桑杰”的這些相同表的第8、4和5行中的值、以及用于“麥克”和“福斯特”的emp和register表的第6和11行和dept表的第5行中的值。但是,dgt320在不訪問原始數(shù)據(jù)304本身的情況下生成該備選輸入數(shù)據(jù)324,這意味著沒有實際的雇員姓名、工資等。注意,對于示例2,dgt320不一定針對謂詞p4生成emp、dept和register表中的數(shù)據(jù)。這是因為在針對原始數(shù)據(jù)的查詢的執(zhí)行期間,針對p4捕獲的指紋蹤跡狀態(tài)在所有實例中都為“i”,這可以從指紋蹤跡數(shù)據(jù)310的各個行看出,并且還可以從所有行合并結(jié)果的p4列看出。一般而言,dgt320可以使用合并結(jié)果332來確定dgt320不需要生成數(shù)據(jù)的謂詞,即,針對合并結(jié)果332沒有t狀態(tài)的那些謂詞,如根據(jù)以上合并真值表指示的邏輯確定的那樣。根據(jù)本發(fā)明的實施例,dgt320不生成此類數(shù)據(jù)。對于上文求值狀態(tài)表的含義中的“i”,該表指明“考慮查詢中的謂詞消除”。這是因為根據(jù)合并真值表,“i”和“f”的合并是“f”,這指示不在模擬查詢中保留謂詞,但根據(jù)合并真值表,“i”和“t”的合并是“t”,這指示在模擬查詢中保留謂詞。因此,在蹤跡數(shù)據(jù)的一個行中保留還是不保留具有“i”狀態(tài)的謂詞取決于該行與其它行(可能具有“t”或“f”狀態(tài))的合并結(jié)果。對于上文求值狀態(tài)表的含義中的“e”,該表指明“保留謂詞”。這是因為根據(jù)合并真值表,“e”與“f”的合并以及“e”與“t”的合并都為“t”,這指示在模擬查詢中保留謂詞,而不管其它行的“t”或“f”狀態(tài)。即,在蹤跡數(shù)據(jù)的一個行中保留還是不保留具有“e”狀態(tài)的謂詞不取決于“e”狀態(tài)行與具有“t”或“f”狀態(tài)的其它行的合并結(jié)果。對于上文求值狀態(tài)表的含義中的“f”,該表指明“生成行的數(shù)據(jù),因為謂詞的求值值為假”。這意味著如果蹤跡數(shù)據(jù)310行中的謂詞具有“f”狀態(tài),則dgt320針對該行的該謂詞確實生成一行備選數(shù)據(jù)324(即,在執(zhí)行模擬查詢333中將被求值為“f”的數(shù)據(jù)值),但是當(dāng)該謂詞的合并結(jié)果332為“f”時除外,在這種情況下,壓縮器330針對模擬查詢333消除該謂詞,這意味著dgt320可以跳過針對該謂詞生成數(shù)據(jù)324。下面是另一個示例查詢(示例3):selectemp_id,emp_name,salaryfromempewheresalary>3000oremp_id=(selectemp_idfromregisterwheredept_id=107);除其他項外,該示例查詢示出壓縮器330的查詢修改邏輯的各個方面如何操作,以便由模塊334針對生成器320生成的備選輸入數(shù)據(jù)324實現(xiàn)適當(dāng)?shù)哪M查詢執(zhí)行。該示例包含將在給定數(shù)據(jù)集中從不變成真的子查詢,因為上文register表指示dept_id=107(軟件)沒有注冊的員工。因此,針對該示例數(shù)據(jù)的謂詞“selectemp_idfromregisterwheredept_id=107”的蹤跡數(shù)據(jù)310中的所有求值狀態(tài)將為“f”或至少為“i”,前提是查詢求值未提前停止,在這種情況下可能為“e”狀態(tài)。只要該謂詞沒有“e”狀態(tài),壓縮器330將相應(yīng)地在合并數(shù)據(jù)333中針對該謂詞指示“f”,因為合并真值表指示“f”的合并以及“f”與“i”的合并的合并結(jié)果為“f”。對于針對合并數(shù)據(jù)332而不是針對指紋蹤跡數(shù)據(jù)310的所有謂詞組合實例生成備選輸入數(shù)據(jù)324的本發(fā)明的實施例或模式,壓縮器330生成修改后的查詢333,其響應(yīng)于合并數(shù)據(jù)33中該謂詞的“f”指示,省略來自原始查詢314的該謂詞。因此,由于修改后的查詢333中沒有該謂詞,因此當(dāng)執(zhí)行修改后的查詢333時,模擬查詢執(zhí)行模塊324不嘗試針對該謂詞讀取備選輸入數(shù)據(jù)324。這特別有用,因為備選輸入數(shù)據(jù)324將沒有用于該謂詞的數(shù)據(jù),因為在該模式或?qū)嵤├校捎谂c壓縮器330生成省略該謂詞的修改后的查詢333相同的原因(即,由于合并數(shù)據(jù)333針對該謂詞指示f),數(shù)據(jù)生成器320不針對該謂詞生成數(shù)據(jù)。注意,這在這種情況下特別有用,數(shù)據(jù)生成器320不針對該謂詞生成數(shù)據(jù),因為該謂詞的數(shù)據(jù)是register表的唯一非鍵數(shù)據(jù)列。因此,數(shù)據(jù)生成器320根本不必生成register表。sqljoin子句用于基于公共字段來組合來自兩個或更多數(shù)據(jù)表的行。根據(jù)本發(fā)明的實施例,以與以上針對謂詞求值描述的相同方式,通過指紋蹤跡模塊306監(jiān)視由查詢執(zhí)行模塊312進(jìn)行的join求值,針對join求值執(zhí)行指紋跟蹤。以與用于謂詞求值的指紋跟蹤相同的方式,這減少針對備選輸入數(shù)據(jù)324生成的數(shù)據(jù),這甚至可以包括消除全部表(如在以上示例中)的生成、以及在表之間不一致的不需要行的生成。此外,以與用于謂詞求值的指紋跟蹤相同的方式,指紋跟蹤join求值提供指紋蹤跡數(shù)據(jù)310或合并數(shù)據(jù)322或這兩者,從而使dgt320能夠針對如join子句指示的表列生成備選輸入數(shù)據(jù)324?,F(xiàn)在連同圖3一起參考圖4,在圖4中示出動作,根據(jù)本發(fā)明的實施例,這些動作涉及產(chǎn)生備選輸入數(shù)據(jù)324和修改后的查詢333,并且涉及由查詢執(zhí)行模塊334模擬模塊312所執(zhí)行的原始查詢314,其中查詢執(zhí)行模塊334針對備選輸入數(shù)據(jù)324執(zhí)行修改后的查詢333。根據(jù)本發(fā)明的實施例,dgt320和壓縮器330(根據(jù)本發(fā)明的實施例,這兩者備選地可以是單個模塊)執(zhí)行例如圖4中所示的動作,這包括掃描和解析蹤跡數(shù)據(jù)310和模式數(shù)據(jù)308。(盡管圖3將模式308示為單獨(dú)數(shù)據(jù)結(jié)構(gòu),但它可以被包括在蹤跡文件310中。蹤跡文件310可以包括謂詞、聯(lián)接過濾器、區(qū)域圖求值的特殊蹤跡文件、統(tǒng)計信息、模式轉(zhuǎn)儲308和其它日志文件,這些日志文件用于如在此解釋的診斷目的,并且可以采取單個tarball文件的形式,如通過諸如nzlogcollector之類的實用工具產(chǎn)生的文件那樣。)例如,當(dāng)用戶遇到其中指紋跟蹤有用的問題時,開始圖4中所示的動作400。用戶可以通過經(jīng)由接口326與指紋跟蹤程序306通信,開始405跟蹤。具體地說,用戶可以例如通過向指紋跟蹤接口326發(fā)出會話變量“setsql_fingerprint_trace=on”,開始405跟蹤。在用戶發(fā)出會話變量時,客戶端指紋跟蹤接口326將會話變量傳送到指紋跟蹤程序306。這樣,用戶可以在系統(tǒng)302上重新執(zhí)行有問題的查詢314,并且經(jīng)由模塊306捕獲蹤跡數(shù)據(jù)310。在開始405,用戶還經(jīng)由接口326發(fā)出其它會話變量以便向程序303指示針對當(dāng)前指紋跟蹤會話請求什么動作。圖4以特定順序示出這些動作410、420等,并且因此下面以所示順序描述這些動作,但是,這些動作410、420等的執(zhí)行并不限于示出和描述的順序,除了顯式指示或由所描述的上下文暗示。實際上,可以在適當(dāng)情況下同時執(zhí)行這些動作410、420等。如果程序303在410處檢測到請求模式轉(zhuǎn)儲,則模塊306執(zhí)行模式轉(zhuǎn)儲動作415以便產(chǎn)生模式308作為指紋跟蹤的一部分。(如前所述,模式308可以被包括在蹤跡310中。)根據(jù)本發(fā)明的實施例,模式308包括模式轉(zhuǎn)儲并且可以采取腳本的形式,模式轉(zhuǎn)儲包含用于創(chuàng)建數(shù)據(jù)庫、表和關(guān)聯(lián)對象的ddl語句的完整定義。大多數(shù)數(shù)據(jù)庫服務(wù)器能夠?qū)⑦@種定義生成到腳本中。根據(jù)本發(fā)明的實施例,dgt320使用模式轉(zhuǎn)儲腳本308針對備選輸入數(shù)據(jù)324創(chuàng)建表和數(shù)據(jù)庫對象,就像查詢執(zhí)行模塊312在針對數(shù)據(jù)304執(zhí)行查詢314時在數(shù)據(jù)304中遇到這些表和數(shù)據(jù)庫對象那樣。下面是能夠由netezza數(shù)據(jù)庫服務(wù)器和nzsql實用工具使用的模式轉(zhuǎn)儲腳本308的一個示例:此外,如果程序303在420處檢測到請求聯(lián)接指紋跟蹤,則模塊306執(zhí)行動作425以便捕獲聯(lián)接指紋跟蹤作為蹤跡數(shù)據(jù)310的一部分,如已在上文描述的那樣。同樣,如果程序303在430處檢測到請求謂詞指紋跟蹤,則模塊306執(zhí)行動作435以便捕獲謂詞指紋跟蹤作為蹤跡數(shù)據(jù)310的一部分,如已在上文描述的那樣。此外,如果程序303在440處檢測到請求區(qū)域圖指紋跟蹤,則模塊306執(zhí)行動作445以便捕獲區(qū)域圖指紋跟蹤作為蹤跡數(shù)據(jù)的一部分,如下所示。區(qū)域圖是由數(shù)據(jù)庫服務(wù)器例如針對日期、時間戳、字節(jié)整數(shù)、整數(shù)和數(shù)據(jù)類型自動生成的內(nèi)部表,以便改進(jìn)針對分組的或近乎有序的大數(shù)據(jù)集的查詢的吞吐量和響應(yīng)時間。區(qū)域圖通過針對受限掃描查詢消除where子句的開始和結(jié)束范圍之外的記錄,減少檢索數(shù)據(jù)需要的磁盤掃描操作。即,區(qū)域圖用于跳過表的不包含感興趣行的部分,并且因此減少要掃描的磁盤頁和盤區(qū)(extent)的數(shù)量。這又減少了搜索時間、磁盤爭用和磁盤i/o。大多數(shù)數(shù)據(jù)庫服務(wù)器具有類似的實現(xiàn),但可能使用不同的術(shù)語,例如區(qū)域圖、概要或索引范圍。如前所述,術(shù)語“區(qū)域圖”在此用于包含任何和所有這些實現(xiàn)。根據(jù)本發(fā)明的實施例,指紋蹤跡模塊306在由查詢執(zhí)行模塊312執(zhí)行期間確定滿足查詢314的相應(yīng)列中的數(shù)據(jù)304的范圍,并且以區(qū)域圖中指定的項指示范圍。指紋蹤跡模塊306將該范圍和列信息寫入蹤跡數(shù)據(jù)310中。壓縮器330然后將該區(qū)域圖信息從蹤跡數(shù)據(jù)310供應(yīng)給dgt320,dgt320響應(yīng)地限制其針對備選輸入數(shù)據(jù)324生成的模擬數(shù)據(jù),以使得數(shù)據(jù)324被限于針對每個相應(yīng)列的所確定的范圍。這提供比純粹隨機(jī)生成的數(shù)據(jù)更接近客戶范圍值的更有針對性的數(shù)據(jù)。下面是另一個示例查詢(示例4),其示出根據(jù)本發(fā)明的實施例的蹤跡數(shù)據(jù)310的區(qū)域圖捕獲的各個方面:selectemp_name,dept_name,salaryfromempejoinregisterrone.emp_id=r.emp_idjoindeptdonr.dept_id=d.dept_idwheresalary>3000and(dept_name='dev'ordept_name='hardware'ordept_name='sales');下表指示針對數(shù)據(jù)304的emp表的工資列的區(qū)域圖定義的區(qū)域標(biāo)記z1-z9范圍:對于該示例,查詢314執(zhí)行的結(jié)果316如下所示:emp_namedept_namesalary福斯特硬件7800吉姆開發(fā)5300麥克硬件9700桑杰開發(fā)5200為了針對上文示例數(shù)據(jù)304emp表執(zhí)行此以上示例4查詢,例如指紋蹤跡模塊306在由查詢執(zhí)行模塊312執(zhí)行期間針對滿足查詢314的“工資(salary)”列中的數(shù)據(jù)304(即,遇到的具有“t”求值狀態(tài)的數(shù)據(jù)值),確定落入?yún)^(qū)域圖的相應(yīng)z1-z9標(biāo)記范圍內(nèi)的那些特定數(shù)據(jù)304的實例數(shù)量。對于該示例,由模塊306捕獲的“工資”列區(qū)域圖相關(guān)的指紋蹤跡數(shù)據(jù)310如下所示:指紋蹤跡模塊306還在查詢314執(zhí)行期間確定產(chǎn)生“e”求值狀態(tài)的數(shù)據(jù)值,盡管在以上示例中沒有指示。dgt320響應(yīng)于蹤跡數(shù)據(jù)310中的t和e求值狀態(tài)的對應(yīng)實例,生成產(chǎn)生這些狀態(tài)的備選輸入數(shù)據(jù)324。根據(jù)本發(fā)明的實施例,指紋蹤跡模塊306丟棄i和f求值,因此dgt320不生成產(chǎn)生這些求值狀態(tài)的備選輸入數(shù)據(jù)324。此外,如果程序303在450處檢測到請求統(tǒng)計指紋跟蹤,則模塊306執(zhí)行動作455以便在由模塊306進(jìn)行的指紋跟蹤中捕獲操作統(tǒng)計信息,其可以被包括在蹤跡數(shù)據(jù)310中。操作統(tǒng)計信息提供系統(tǒng)302如何在最近系統(tǒng)和查詢活動的上下文中運(yùn)行的高級概述,這有助于診斷問題、理解性能特征以及與系統(tǒng)管理軟件對接。大多數(shù)數(shù)據(jù)庫服務(wù)器能夠通過計劃文件或sql命令“generatestatistics”提供查詢統(tǒng)計信息。根據(jù)本發(fā)明的實施例,指紋蹤跡模塊306解析由數(shù)據(jù)庫服務(wù)器提供的統(tǒng)計信息,并且在蹤跡數(shù)據(jù)310中捕獲其信息,例如表行計數(shù)、不同和最常見的值(commonvalue)。dgt320在針對數(shù)據(jù)304執(zhí)行查詢314時,使用該信息生成具有更接近查詢執(zhí)行模塊312遇到的環(huán)境的種類和容量的模擬數(shù)據(jù)324。例如,對于針對上文dept表的查詢“select*fromdept;”,指紋蹤跡模塊306在蹤跡數(shù)據(jù)310中捕獲由數(shù)據(jù)庫服務(wù)器提供的以下統(tǒng)計信息:表的統(tǒng)計信息:表:dept行計數(shù):7列的統(tǒng)計信息:列名稱:dept_name列類型:字符(15)低值:“admin”高值:“software”常見值:0列名稱:dept_id列類型:整數(shù)低值:101高值:107常見值:0結(jié)合模塊312執(zhí)行查詢314(模塊306針對該查詢捕獲指紋蹤跡310),當(dāng)程序303在460處檢測到特定查詢314的執(zhí)行被停止時(例如由于錯誤檢測、沒有進(jìn)度等導(dǎo)致的完成或中斷),程序303經(jīng)由接口326通知用戶。用戶響應(yīng)地經(jīng)由接口326將會話變量“setsql_fingerprint_trace=off”傳送到程序303。轉(zhuǎn)而,模塊306的跟蹤活動響應(yīng)地停止跟蹤,這降低系統(tǒng)302中的性能開銷。備選地,可以配置程序303以使得當(dāng)它在460處檢測到特定查詢314的執(zhí)行被停止時,程序303通知用戶并且模塊306自動停止跟蹤。此外在460處,一旦模塊306停止跟蹤,用戶就可以經(jīng)由接口326指示壓縮器330讀取蹤跡數(shù)據(jù)310并且執(zhí)行壓縮(即,合并)功能。(備選地,如果指紋306執(zhí)行壓縮功能,則用戶可以指示數(shù)據(jù)生成器320讀取蹤跡數(shù)據(jù)310。)在獲得包括合并結(jié)果332的蹤跡數(shù)據(jù)310時,用戶可以指示dgt320執(zhí)行動作470以便生成備選輸入數(shù)據(jù)324,如在上文詳細(xì)描述的那樣。總之,通過設(shè)計,指紋蹤跡數(shù)據(jù)310不提供查詢執(zhí)行的所有細(xì)節(jié),因為這可能太多,并且因為它可能需要大量計算資源以便進(jìn)行模擬查詢執(zhí)行。相反,數(shù)據(jù)310及其合并數(shù)據(jù)332基于在查詢執(zhí)行期間發(fā)生并且更可能與執(zhí)行故障關(guān)聯(lián)的求值狀態(tài)來提供選擇性信息。根據(jù)本發(fā)明的至少某些實施例,指紋蹤跡模塊306可以僅對查詢執(zhí)行中實際產(chǎn)生的那些求值狀態(tài)組合的實例計數(shù)并且將所述實例包括在指紋蹤跡數(shù)據(jù)310中。此外,在實際產(chǎn)生的那些組合中,指紋蹤跡模塊306可以僅對滿足查詢的那些組合的實例計數(shù)并將所述實例包括在指紋蹤跡數(shù)據(jù)310中。備選地,指紋蹤跡模塊306可以計數(shù),但數(shù)據(jù)生成模塊320可以被配置為對于不滿足查詢的組合的蹤跡數(shù)據(jù)310實例不生成備選輸入數(shù)據(jù)324。更進(jìn)一步,數(shù)據(jù)生成模塊320可以從壓縮器330接收合并數(shù)據(jù)332,并且可以響應(yīng)地生成備選輸入數(shù)據(jù)324,以便僅產(chǎn)生在上文描述的合并數(shù)據(jù)332中被指示為真的求值狀態(tài)。因此,壓縮器330可以修改原始查詢314,使得由查詢執(zhí)行模塊334為了模擬而執(zhí)行的修改后的查詢333僅包括在合并數(shù)據(jù)332中被指示為真的那些子句。盡管通過設(shè)計,指紋蹤跡數(shù)據(jù)310不提供查詢執(zhí)行的所有細(xì)節(jié),然而根據(jù)本發(fā)明實施例的指紋跟蹤可導(dǎo)致響應(yīng)于所生成的備選輸入數(shù)據(jù)324的查詢處理而再現(xiàn)的行為的準(zhǔn)確性提高,因為基于在指紋蹤跡數(shù)據(jù)310中捕獲的查詢執(zhí)行期間發(fā)生的事件的證據(jù)來生成備選輸入數(shù)據(jù)324。相比之下,更隨機(jī)生成的數(shù)據(jù)可能無法再現(xiàn)原始查詢執(zhí)行的行為。如上所述,在指紋蹤跡數(shù)據(jù)310中捕獲的特定事件是滿足查詢的求值狀態(tài)的實例。捕獲這些事件往往提高模擬行為的準(zhǔn)確性,因為這些事件導(dǎo)致進(jìn)一步查詢執(zhí)行。即,在判定一行數(shù)據(jù)是否滿足查詢中,當(dāng)查詢執(zhí)行確定滿足當(dāng)前正在被求值的子句(“真”求值狀態(tài))時,查詢執(zhí)行然后繼續(xù)針對該行對下一個子句求值,或者如果當(dāng)前子句的真狀態(tài)滿足該行的整體查詢,則查詢執(zhí)行繼續(xù)以對下一行求值。對于采用快速失敗謂詞求值方案的數(shù)據(jù)庫服務(wù)器(例如netezza),具有and的謂詞p1andp2...andpn的字符串中的為“假”的求值意味著整個表達(dá)式為假,并且服務(wù)器將停止處理進(jìn)一步謂詞。沒有快速失敗屬性的某些其它數(shù)據(jù)庫系統(tǒng)可以繼續(xù)對謂詞求值。然而,在任何一種情況下,具有union指紋蹤跡數(shù)據(jù)集都有幫助,因為它是該數(shù)據(jù)庫系統(tǒng)中實際發(fā)生什么的真實表示。為了模擬而執(zhí)行的查詢的指紋跟蹤和修改將提高模擬行為的準(zhǔn)確性。其原因至少包括以下趨勢:與假求值狀態(tài)相比,真求值狀態(tài)導(dǎo)致更多性能問題或者以其他方式與更多性能問題關(guān)聯(lián)。不管其原因為何,應(yīng)用本發(fā)明實施例的經(jīng)驗已表明,應(yīng)用本發(fā)明實施例在減少的數(shù)據(jù)捕獲和執(zhí)行資源的約束內(nèi)提供更接近理想的模擬性能。有利的是,本發(fā)明的實施例標(biāo)識數(shù)據(jù)相關(guān)查詢執(zhí)行問題,并且有助于在崩潰期間以及針對內(nèi)部/外部錯誤、錯誤結(jié)果、非確定性結(jié)果和性能問題發(fā)現(xiàn)查詢執(zhí)行的狀態(tài)。標(biāo)識上述求值狀態(tài)t、f、i和e有助于簡化或刪除查詢中從未被求值的謂詞,從而允許開發(fā)人員簡化復(fù)雜查詢并更容易理解和調(diào)試。在減少必須被捕獲和分析的數(shù)據(jù)量的同時實現(xiàn)這些優(yōu)點(diǎn)。因此,本發(fā)明的實施例減少在查詢執(zhí)行中標(biāo)識數(shù)據(jù)相關(guān)問題所需的時間和硬件。本發(fā)明的實施例比隨機(jī)生成方法更好地再現(xiàn)執(zhí)行行為,而不需要密集的手動操作和分析,而且不損害客戶數(shù)據(jù)隱私。否則,由于大量的數(shù)據(jù)和復(fù)雜的查詢,通常難以定期測試。通過在信息收集以重現(xiàn)內(nèi)部問題中減少團(tuán)隊之間的來回通信,本發(fā)明的實施例向客戶支持、開發(fā)和質(zhì)量保證信息技術(shù)人員以及客戶提供益處。這導(dǎo)致增加的客戶滿意度。圖1示出根據(jù)本發(fā)明實施例的示例計算環(huán)境100。如圖所示,計算環(huán)境100包括經(jīng)由網(wǎng)絡(luò)120連接的計算機(jī)系統(tǒng)110.1、110.2至110.n,網(wǎng)絡(luò)120可以是公共的或?qū)S玫?。系統(tǒng)110.1、110.2等分別包括相應(yīng)模塊,其可以是被配置為針對其相應(yīng)設(shè)備執(zhí)行任務(wù)的程序或硬件模塊。圖2示出根據(jù)本發(fā)明實施例的系統(tǒng)200,其可以被應(yīng)用為計算機(jī)系統(tǒng)110.1、110.2等中的任何一個或全部。如圖所示,系統(tǒng)200包括中央處理單元(cpu)205、網(wǎng)絡(luò)接口215、互連(即,總線)217、存儲器220和存儲裝置230。cpu205可以檢索和執(zhí)行存儲在存儲器220中的編程指令。同樣,cpu205可以檢索和存儲駐留在存儲器220中的應(yīng)用數(shù)據(jù)?;ミB217可以促進(jìn)cpu205、存儲裝置230、網(wǎng)絡(luò)接口215和存儲器220之間的傳輸,例如編程指令和應(yīng)用數(shù)據(jù)的傳輸。包括cpu205以便表示單個cpu、多個cpu、具有多個處理核心的單個cpu等。此外,根據(jù)本發(fā)明的實施例,包括存儲器220以便表示隨機(jī)存取存儲器,其包括用于運(yùn)行時執(zhí)行的數(shù)據(jù)和程序模塊,例如所示的示例數(shù)據(jù)222和模塊224。但是,應(yīng)該理解,一個或多個模塊(例如模塊224)可以由其它硬件實現(xiàn),并且可以是固件。數(shù)據(jù)222和模塊224可以是來自存儲裝置230的數(shù)據(jù)和程序模塊的實例,例如示出的示例數(shù)據(jù)232和模塊234,用于cpu205在存儲器220中的運(yùn)行時執(zhí)行。存儲裝置230中的數(shù)據(jù)和程序模塊可以包括數(shù)據(jù)庫表和一個或多個查詢執(zhí)行模塊。存儲裝置230例如可以是磁盤驅(qū)動器存儲設(shè)備。盡管被示出為單個單元,但存儲裝置230可以是固定和/或可移動存儲設(shè)備的組合,例如固定磁盤驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū)動器、可移動存儲卡或光存儲裝置、網(wǎng)絡(luò)附加存儲(nas)或存儲區(qū)域網(wǎng)絡(luò)(san)。附圖中的上述示例和描述并不意味著暗示架構(gòu)限制。例如,設(shè)備110.1、110.2等中的任何一個可以是筆記本計算機(jī)、手持式計算機(jī)、智能電話、自助終端機(jī)等。此外,本發(fā)明可以駐留在由計算機(jī)系統(tǒng)使用的任何數(shù)據(jù)存儲介質(zhì)(即,軟盤、光盤、硬盤、磁帶、rom、ram等)上。(術(shù)語“計算機(jī)”、“系統(tǒng)”、“計算機(jī)系統(tǒng)”和“數(shù)據(jù)處理系統(tǒng)”在此可以互換使用。)本發(fā)明可以是系統(tǒng)、方法和/或計算機(jī)程序產(chǎn)品。計算機(jī)程序產(chǎn)品可以包括計算機(jī)可讀存儲介質(zhì),其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機(jī)可讀程序指令。計算機(jī)可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計算機(jī)可讀存儲介質(zhì)例如可以是—但不限于—電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計算機(jī)盤、硬盤、隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、靜態(tài)隨機(jī)存取存儲器(sram)、便攜式壓縮盤只讀存儲器(cd-rom)、數(shù)字多功能盤(dvd)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計算機(jī)可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其它自由傳播的電磁波、通過波導(dǎo)或其它傳輸介質(zhì)傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴_@里所描述的計算機(jī)可讀程序指令可以從計算機(jī)可讀存儲介質(zhì)下載到各個計算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機(jī)或外部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計算機(jī)和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計算機(jī)可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計算機(jī)可讀存儲介質(zhì)中。用于執(zhí)行本發(fā)明操作的計算機(jī)可讀程序指令可以是匯編指令、指令集架構(gòu)(isa)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言—諸如smalltalk、c++等,以及常規(guī)的過程式編程語言—諸如“c”語言或類似的編程語言。計算機(jī)可讀程序指令可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)—包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)—連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機(jī)可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(fpga)或可編程邏輯陣列(pla),該電子電路可以執(zhí)行計算機(jī)可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機(jī)可讀程序指令實現(xiàn)。這些計算機(jī)可讀程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機(jī)可讀程序指令存儲在計算機(jī)可讀存儲介質(zhì)中,這些指令使得計算機(jī)、可編程數(shù)據(jù)處理裝置和/或其它設(shè)備以特定方式工作,從而,存儲有指令的計算機(jī)可讀存儲介質(zhì)則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。也可以把計算機(jī)可讀程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)、其它可編程裝置、或其它設(shè)備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的不同實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。一個或多個數(shù)據(jù)庫可以被包括在主機(jī)中,以便存儲和提供對各種實現(xiàn)的數(shù)據(jù)的訪問。所屬
技術(shù)領(lǐng)域
的技術(shù)人員還將認(rèn)識到,出于安全原因,本發(fā)明的任何數(shù)據(jù)庫、系統(tǒng)或組件可以包括在單個位置或多個位置處的數(shù)據(jù)庫或組件的任何組合,其中每個數(shù)據(jù)庫或系統(tǒng)包括各種合適的安全特性,例如防火墻,訪問碼、加密、解密等。數(shù)據(jù)庫可以是任何類型的數(shù)據(jù)庫,例如關(guān)系、分層、面向?qū)ο蟮取?梢杂糜趯崿F(xiàn)數(shù)據(jù)庫的數(shù)據(jù)庫產(chǎn)品是或其它可用數(shù)據(jù)庫產(chǎn)品。(ibm和db2是國際商業(yè)機(jī)器公司在世界各地注冊的商標(biāo)。)可以以任何合適的方式(包括作為數(shù)據(jù)表或查找表)組織數(shù)據(jù)庫??梢酝ㄟ^所屬
技術(shù)領(lǐng)域
已知和實踐的任何數(shù)據(jù)關(guān)聯(lián)技術(shù)實現(xiàn)某些數(shù)據(jù)的關(guān)聯(lián)。例如,可以手動或自動實現(xiàn)關(guān)聯(lián)。自動關(guān)聯(lián)技術(shù)例如可以包括數(shù)據(jù)庫搜索、數(shù)據(jù)庫合并、grep、agrep、sql等。可以通過數(shù)據(jù)庫合并功能實現(xiàn)關(guān)聯(lián)步驟,例如使用每個制造商和零售商數(shù)據(jù)表中的鍵字段。鍵字段根據(jù)由鍵字段定義的對象的高級類對數(shù)據(jù)庫進(jìn)行分區(qū)。例如,可以將特定類指定為第一數(shù)據(jù)表和第二數(shù)據(jù)表中的鍵字段,然后可以基于鍵字段中的類數(shù)據(jù)合并兩個數(shù)據(jù)表。在該實施例中,對應(yīng)于每個合并數(shù)據(jù)表中的鍵字段的數(shù)據(jù)優(yōu)選地相同。但是,還可以例如通過使用agrep合并鍵字段中具有相似但不相同數(shù)據(jù)的數(shù)據(jù)表。主機(jī)可以提供可由用戶訪問的合適網(wǎng)站或其它基于因特網(wǎng)的圖形用戶界面。在一個實施例中,netscapeweb服務(wù)器、internet工具套件、ibmdb2、通用數(shù)據(jù)庫平臺和sybase數(shù)據(jù)庫平臺與sunsolaris操作系統(tǒng)平臺結(jié)合使用。(ibm和websphere是國際商業(yè)機(jī)器公司在世界各地注冊的商標(biāo)。)此外,可以使用諸如jbdc驅(qū)動程序之類的組件、ibm連接池和ibmmq系列連接方法提供對數(shù)個源的數(shù)據(jù)訪問。在此使用的術(shù)語網(wǎng)頁并不意味著限制可能用于與用戶交互的文檔和應(yīng)用的類型。例如,除了標(biāo)準(zhǔn)html文檔之外,典型的網(wǎng)站還可能包括各種表單、小程序、javascript、活動服務(wù)器頁面(asp)、java服務(wù)器頁面(jsp)、通用網(wǎng)關(guān)接口腳本(cgi)、可擴(kuò)展標(biāo)記語言(xml)、動態(tài)html、級聯(lián)樣式表(css)、幫助應(yīng)用、插件等。java以及所有基于java的商標(biāo)及徽標(biāo)都是oracle公司和/或其關(guān)聯(lián)公司的商標(biāo)或注冊商標(biāo)。從以上所述,應(yīng)該理解,根據(jù)本發(fā)明的實施例,所述蹤跡數(shù)據(jù)不包括所述第一輸入數(shù)據(jù)。此外,所述第一輸入數(shù)據(jù)包括數(shù)據(jù)值,并且在沒有所述第一輸入數(shù)據(jù)的情況下從所述蹤跡數(shù)據(jù)生成所述第二輸入數(shù)據(jù)將生成所述第二輸入數(shù)據(jù)的與第一輸入數(shù)據(jù)值的相應(yīng)值對應(yīng)的值,其中每個第二輸入數(shù)據(jù)值具有這樣的值,使得:在所述第二查詢的執(zhí)行中,每個第二輸入數(shù)據(jù)值產(chǎn)生與針對對應(yīng)第一輸入數(shù)據(jù)值在所述蹤跡數(shù)據(jù)中捕獲的求值狀態(tài)相同的求值狀態(tài),但在其他方面與該對應(yīng)第一輸入數(shù)據(jù)值無關(guān)。在另一個方面,所述蹤跡數(shù)據(jù)包括來自將所述第一查詢的所述子句應(yīng)用于所述第一輸入數(shù)據(jù)的行的第一執(zhí)行的求值狀態(tài)的相應(yīng)組合的計數(shù)。根據(jù)本發(fā)明的實施例,在沒有所述第一輸入數(shù)據(jù)的情況下從所述蹤跡數(shù)據(jù)生成所述第二輸入數(shù)據(jù)包括生成具有范圍限制的隨機(jī)值,以使得在所述第二輸入數(shù)據(jù)上執(zhí)行所述第二查詢對于預(yù)定類型的求值狀態(tài)組合再現(xiàn)相同數(shù)量的組合。在另一個方面,來自第一執(zhí)行的求值狀態(tài)包括未求值狀態(tài),其中所述未求值狀態(tài)的每個實例源自未將查詢子句應(yīng)用于輸入數(shù)據(jù)行的實例。此外,來自第一執(zhí)行的求值狀態(tài)包括真、假以及待求值狀態(tài)中的一者或多者,其中所述真、假以及待求值狀態(tài)的每個實例源自將所述查詢子句之一應(yīng)用于所述第一輸入數(shù)據(jù)的一個行的實例。根據(jù)本發(fā)明的實施例,在沒有所述第一輸入數(shù)據(jù)的情況下從所述蹤跡數(shù)據(jù)生成所述第二輸入數(shù)據(jù)包括生成第二執(zhí)行的數(shù)據(jù),所述數(shù)據(jù)導(dǎo)致第二執(zhí)行再現(xiàn)所述第一執(zhí)行的真求值狀態(tài)而不包括第一執(zhí)行的未求值的求值狀態(tài)。在另一個方面,計算機(jī)過程判定所述蹤跡數(shù)據(jù)中的所述求值狀態(tài)的合并結(jié)果對于所述第一查詢中的每個子句是否為真。根據(jù)本發(fā)明的實施例,從所述第一查詢生成所述第二查詢,其中生成所述第二查詢包括當(dāng)正在被從所述第一查詢中消除的子句的所述合并結(jié)果不為真時消除該子句。此外,在另一個方面,響應(yīng)于所述蹤跡數(shù)據(jù)和所述第一輸入數(shù)據(jù)的模式生成備選輸入數(shù)據(jù)包括生成第二查詢執(zhí)行的數(shù)據(jù),所述數(shù)據(jù)導(dǎo)致第二查詢執(zhí)行僅針對具有真合并狀態(tài)的子句再現(xiàn)第一查詢執(zhí)行的求值狀態(tài)。盡管本說明書包含許多細(xì)節(jié),但這些細(xì)節(jié)不應(yīng)被解釋為對本發(fā)明或能夠要求保護(hù)的內(nèi)容的范圍的限制,而應(yīng)該被解釋為對特定于本發(fā)明的特定實現(xiàn)的特性的描述。在本說明書中在單獨(dú)實現(xiàn)的上下文中描述的某些特性還可以在單個實現(xiàn)中組合實現(xiàn)。相反,在單個實現(xiàn)的上下文中描述的各種特性還可以在多個實現(xiàn)中單獨(dú)或以任何合適的子組合來實現(xiàn)。此外,盡管以上可以將特性描述為在某些組合中起作用,并且甚至最初要求如此保護(hù),但要求保護(hù)的組合的一個或多個特性在某些情況下可以從該組合中被刪除,并且要求保護(hù)的組合可以涉及子組合或子組合的變型。同樣,盡管在附圖中以特定順序示出操作,但這不應(yīng)被理解為要求以所示的特定順序或者以連續(xù)順序執(zhí)行此類操作,或者執(zhí)行所有示出的操作以便實現(xiàn)所需的結(jié)果。在某些情況下,多任務(wù)和并行處理可以是有利的。在此使用諸如“第一查詢”、“第二查詢”、“第一輸入數(shù)據(jù)”和“備選輸入數(shù)據(jù)”之類的術(shù)語。應(yīng)該理解,除非上下文另有顯式聲明或明確指示,否則諸如“第一”、“第二”和“備選”之類的修飾符僅是將一個對象或動作與另一個對象或動作區(qū)分開的標(biāo)簽,并且針對被修飾對象或動作的明確引用建立前提基礎(chǔ),而不表示時間或分層意義。已閱讀本公開的所屬
技術(shù)領(lǐng)域
的技術(shù)人員將認(rèn)識到,可以在不偏離本發(fā)明的范圍的情況下對實施例做出改變和修改。應(yīng)該認(rèn)識到,在此示出和描述的特定實現(xiàn)例示本發(fā)明及其最佳模式,并且并非另外以任何方式限制本發(fā)明的范圍。其它變化在以下權(quán)利要求的范圍內(nèi)。例如,已描述涉及諸如謂詞、聯(lián)接和區(qū)域圖之類的查詢中的子句的本發(fā)明實施例。在此描述的跟蹤和基于蹤跡的模擬還可以應(yīng)用于查詢選擇列表中的case表達(dá)式。應(yīng)該從此處的公開認(rèn)識到,本發(fā)明的實施例可以適用于具有多于一個表的join子句的sql查詢。以上已針對特定實施例描述了益處、其它優(yōu)點(diǎn)和問題的解決方案。但是,益處、優(yōu)點(diǎn)、問題的解決方案、以及可以導(dǎo)致任何益處、優(yōu)點(diǎn)或解決方案發(fā)生或變得更顯著的任何元素(多個)不被解釋為任何或所有權(quán)利要求的關(guān)鍵、必需或必要的特性或元素。如在此使用的,術(shù)語包括、包含或其任何其它變型旨在涵蓋非排他包含,以使得包括元素列表的過程、方法、物品或裝置不僅包括這些元素,而且可以包括未顯式列出或者此類過程、方法、物品或裝置固有的其它元素。此外,除非顯式描述為必要或關(guān)鍵,否則在此描述的元素不是實現(xiàn)本發(fā)明所必需的。在此使用的術(shù)語僅出于描述特定實施例的目的并且并非旨在作為本發(fā)明的限制。如在此使用的,除非上下文另外清楚地指示,否則單數(shù)形式“一”、“一個”和“該”旨在同樣包括復(fù)數(shù)形式。還將理解,術(shù)語“包括”和/或“包含”在用于本說明書中時指定所聲明的特性、整數(shù)、步驟、操作、元件和/或組件的存在,但不排除一個或多個其它特性、整數(shù)、步驟、操作、元件、組件和/或它們的組合的存在或添加。以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它元件相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對于所屬
技術(shù)領(lǐng)域
的普通技術(shù)人員來說,在不偏離本發(fā)明范圍和精神的情況下,顯然可以作出許多修改和變型。對實施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實際應(yīng)用,使所屬
技術(shù)領(lǐng)域
的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實施方式。當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武义县| 砚山县| 子长县| 清徐县| 衡水市| 同江市| 新宾| 通许县| 巴林右旗| 门头沟区| 灵丘县| 赣州市| 多伦县| 杨浦区| 天津市| 兴城市| 北流市| 江永县| 富民县| 上思县| 阳信县| 三门县| 奇台县| 临江市| 刚察县| 鄂托克旗| 高安市| 固镇县| 绥中县| 莆田市| 吉林市| 青冈县| 乃东县| 华容县| 崇信县| 河间市| 拜泉县| 崇明县| 建湖县| 五台县| 许昌县|