專(zhuān)利名稱:用于數(shù)據(jù)庫(kù)工作負(fù)荷仿真器的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng),并特別涉及用于測(cè)試數(shù)據(jù)庫(kù)的用計(jì)算機(jī)實(shí)現(xiàn)的方法和裝置。更具體地說(shuō),本發(fā)明涉及用計(jì)算機(jī)實(shí)現(xiàn)的方法、裝置和計(jì)算機(jī)可用程序代碼,用于利用事務(wù)處理來(lái)仿真環(huán)境以便測(cè)試數(shù)據(jù)庫(kù)。
背景技術(shù):
軟件應(yīng)用經(jīng)常以事務(wù)處理方式(transactional manner)彼此交互作用。一些軟件應(yīng)用請(qǐng)求信息,另一些供應(yīng)信息,并且其他的軟件應(yīng)用在參與這種電子事務(wù)處理時(shí)兩個(gè)功能都執(zhí)行。在大多數(shù)電子事務(wù)處理的背后是用于存儲(chǔ)、檢索、處理和管理在這些事務(wù)處理中使用的信息的系統(tǒng)。這些系統(tǒng)一般叫做數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)可以是少量信息的簡(jiǎn)單組織,或者可能涉及極為巨大、復(fù)雜、相互關(guān)聯(lián)并且相互依賴的信息集合。
隨著數(shù)據(jù)庫(kù)的大小和復(fù)雜性增長(zhǎng),數(shù)據(jù)庫(kù)的可靠性和性能變成關(guān)鍵問(wèn)題。數(shù)據(jù)庫(kù)在較小規(guī)模上可以可靠地執(zhí)行,支持相對(duì)較少數(shù)量的電子事務(wù)處理。但是,使該數(shù)據(jù)庫(kù)經(jīng)受大量的事務(wù)處理可能導(dǎo)致該數(shù)據(jù)庫(kù)執(zhí)行得不適當(dāng)、不可靠、反應(yīng)緩慢,或者完全崩潰。在事務(wù)處理量保持不變但所存儲(chǔ)的信息大小增長(zhǎng)時(shí),或者當(dāng)事務(wù)處理要求更密集的處理來(lái)完成時(shí),可能發(fā)生同樣的情況。
為了測(cè)試并識(shí)別數(shù)據(jù)庫(kù)潛在的可靠性和性能問(wèn)題,管理員和其他用戶建立了仿真環(huán)境,在仿真環(huán)境中,他們能夠使數(shù)據(jù)庫(kù)經(jīng)受各種水平的工作負(fù)荷。為了針對(duì)被測(cè)試的受驗(yàn)數(shù)據(jù)庫(kù)識(shí)別潛在的問(wèn)題場(chǎng)景,這些仿真很重要。例如,可以建立特定的仿真環(huán)境,以便測(cè)試數(shù)據(jù)庫(kù)系統(tǒng)是否足以支持每分鐘10,000個(gè)請(qǐng)求在線目錄中項(xiàng)目的項(xiàng)目描述的網(wǎng)絡(luò)事務(wù)(Web transcation),或者測(cè)試數(shù)據(jù)庫(kù)是否能夠同時(shí)處理用于各種處理密集的作業(yè)的200個(gè)用戶或者連接到它的應(yīng)用。
數(shù)據(jù)庫(kù)的制造商、管理員、用戶和第三方供應(yīng)商已經(jīng)創(chuàng)建了測(cè)試數(shù)據(jù)庫(kù)的潛在可靠性和性能問(wèn)題的工具。目前的仿真技術(shù)在時(shí)間量、精力以及建立充分的仿真所需的花費(fèi)方面具有與其相關(guān)聯(lián)的成本。在很多情況下,為從仿真獲取有意義的結(jié)果所需的具有專(zhuān)門(mén)技能的人力資源量使得這些仿真成本令人望而卻步。此外,對(duì)為建立每一個(gè)仿真場(chǎng)景所需的不同部件的數(shù)量和復(fù)雜性也存有顧慮。
而且,目前可獲得的工具和技術(shù)依賴于測(cè)試場(chǎng)景的劃分和每一個(gè)場(chǎng)景的較小片段的大量復(fù)制。結(jié)果,從這些工具和技術(shù)所產(chǎn)生的仿真對(duì)被仿真的特定場(chǎng)景片段的較窄上下文很敏感。
例如,當(dāng)經(jīng)受請(qǐng)求在線目錄中項(xiàng)目的項(xiàng)目細(xì)節(jié)的網(wǎng)絡(luò)事務(wù)處理時(shí),仿真可能只限于測(cè)試數(shù)據(jù)庫(kù)的負(fù)荷處理能力。這樣的仿真是數(shù)據(jù)庫(kù)的真實(shí)性能的反映,因?yàn)檫@種類(lèi)型的仿真不包括幾個(gè)其他的應(yīng)用和用戶的同時(shí)活動(dòng),所述應(yīng)用和用戶可能由于完全不相關(guān)的事務(wù)處理而連接到所述數(shù)據(jù)庫(kù)。
結(jié)果,當(dāng)只有幾個(gè)網(wǎng)絡(luò)事務(wù)處理正在請(qǐng)求項(xiàng)目描述,另外幾個(gè)或者在下訂單、付款,或者在更改客戶簡(jiǎn)檔時(shí),該仿真并非數(shù)據(jù)庫(kù)的真實(shí)性能的反映。仿真只對(duì)對(duì)網(wǎng)絡(luò)上的大量項(xiàng)目描述請(qǐng)求做出響應(yīng)的上下文敏感。仿真結(jié)果只對(duì)該有限場(chǎng)景是有意義的。
此外,即使是建立這些對(duì)上下文敏感的仿真也要求復(fù)雜的軟件編程或者代碼開(kāi)發(fā),這本身就造成了通常與任何軟件開(kāi)發(fā)工程相伴的諸多障礙。總之,要求開(kāi)發(fā)、測(cè)試和調(diào)試代碼的專(zhuān)門(mén)技能以及時(shí)間,然后,仿真的真正目的才能開(kāi)始。
在很多情況下,這些類(lèi)型的范圍有限的仿真經(jīng)常是不夠的。仿真測(cè)試的成本和復(fù)雜性成指數(shù)增加,因?yàn)槊つ康睾?jiǎn)單復(fù)制充足數(shù)量的范圍有限、對(duì)上下文敏感、較小的仿真并不實(shí)際。并且,這種技術(shù)并不有效,因?yàn)樵诤芏嗲闆r下,重復(fù)相同的事務(wù)處理,例如刪除客戶記錄,在數(shù)據(jù)庫(kù)首次處理該事務(wù)并刪除客戶記錄以后,不能被復(fù)制。為了從較大的仿真獲得有意義的結(jié)果,在這許多復(fù)制仿真的每一個(gè)中需要相關(guān)的變化。目前,利用專(zhuān)為這個(gè)目的所寫(xiě)的代碼來(lái)實(shí)現(xiàn)這種變化,這是非常乏味且勞動(dòng)密集的工作。因此,當(dāng)前可獲得的工具和技術(shù)使用定制代碼、勞動(dòng)和資源密集的測(cè)試環(huán)境解決仿真數(shù)據(jù)庫(kù)工作負(fù)荷這個(gè)問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明提供了用計(jì)算機(jī)實(shí)現(xiàn)的方法、裝置和計(jì)算機(jī)可用程序代碼,用于將指令集執(zhí)行被選擇的次數(shù),以便針對(duì)被選擇數(shù)量的用戶仿真用戶負(fù)荷。響應(yīng)于將所述指令集執(zhí)行所述被選擇的次數(shù),獲得被選擇數(shù)量的跟蹤記錄(trace)。所述被選擇數(shù)量的跟蹤記錄被同時(shí)重放,以便仿真數(shù)據(jù)庫(kù)的工作負(fù)荷。
在所附權(quán)利要求中給出了相信為本發(fā)明特有的新穎特征。但是,當(dāng)結(jié)合附圖閱讀,通過(guò)參考說(shuō)明性實(shí)施例的下列具體描述,可以最好地理解本發(fā)明本身及其優(yōu)選使用模式、進(jìn)一步的目的和優(yōu)點(diǎn),在附圖中圖1是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)的圖形表示;圖2是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例示出的數(shù)據(jù)處理系統(tǒng)的框圖;圖3是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例示出仿真數(shù)據(jù)庫(kù)工作負(fù)荷時(shí)使用的部件的圖;圖4是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例用于仿真數(shù)據(jù)庫(kù)工作負(fù)荷的例圖;圖5是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例示出數(shù)據(jù)庫(kù)工作負(fù)荷仿真器中的工作流的圖;圖6是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例重放跟蹤記錄文件的圖;圖7是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例的用于基準(zhǔn)測(cè)試程序(benchmark)控制器的過(guò)程的流程圖;圖8是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例的由數(shù)據(jù)庫(kù)產(chǎn)生的跟蹤記錄文件的片斷的圖;圖9是根據(jù)本發(fā)明的說(shuō)明性實(shí)施例的Java應(yīng)用的例子,所述Java應(yīng)用按照在Java公共客戶端跟蹤記錄中所解釋的那樣執(zhí)行命令。
具體實(shí)施例方式
現(xiàn)在參考附圖,特別是參考圖1到2,提供了其中可以實(shí)施本發(fā)明的實(shí)施例的數(shù)據(jù)處理環(huán)境的示范圖。應(yīng)該理解,圖1到2只是示范性的,并非旨在聲明或者暗示任何有關(guān)其中可以實(shí)施本發(fā)明的實(shí)施例或者方案的環(huán)境的限制。不偏離本發(fā)明的精神和范圍,可以對(duì)所繪出的環(huán)境做出很多修改。
現(xiàn)在參考附圖,圖1繪出了其中可以實(shí)施本發(fā)明方案的數(shù)據(jù)處理系統(tǒng)網(wǎng)絡(luò)的圖形表示。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100是計(jì)算機(jī)網(wǎng)絡(luò),在其中可以實(shí)施本發(fā)明的實(shí)施例。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100包含網(wǎng)絡(luò)102,網(wǎng)絡(luò)102是用來(lái)在網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100內(nèi)被連接在一起的各種設(shè)備和計(jì)算機(jī)之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)102可以包括例如有線、無(wú)線通信鏈路或光纜的連接。
在所繪出的例子中,服務(wù)器104和服務(wù)器106以及存儲(chǔ)單元108連接到網(wǎng)絡(luò)102。此外,客戶端110、112和114連接到網(wǎng)絡(luò)102。這些客戶端110、112和114可以是例如個(gè)人計(jì)算機(jī)或者網(wǎng)絡(luò)計(jì)算機(jī)。在所繪出的例子中,服務(wù)器104給客戶端110、112和114提供例如引導(dǎo)文件、操作系統(tǒng)鏡像和應(yīng)用的數(shù)據(jù)。在這個(gè)例子中,客戶端110、112和114是服務(wù)器104的客戶端。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100可以包括額外的服務(wù)器、客戶端,以及其他未示出的設(shè)備。
在所繪出的例子中,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100是互聯(lián)網(wǎng),網(wǎng)絡(luò)102代表世界范圍的使用傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)組來(lái)與彼此通信的網(wǎng)絡(luò)和網(wǎng)關(guān)的集合。在互聯(lián)網(wǎng)的核心是主要節(jié)點(diǎn)或主機(jī)之間的高速數(shù)據(jù)通信線路的主干,由成千上萬(wàn)的路由數(shù)據(jù)和消息的商業(yè)、政府、教育以及其他的計(jì)算機(jī)系統(tǒng)組成。當(dāng)然,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100也可以被實(shí)施為許多不同類(lèi)型的網(wǎng)絡(luò),例如企業(yè)內(nèi)部互聯(lián)網(wǎng)、局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)。圖1旨在作為例子而非作為對(duì)本發(fā)明不同實(shí)施例的體系結(jié)構(gòu)的限制。
現(xiàn)在參考圖2,示出了其中可以實(shí)施本發(fā)明的方案的數(shù)據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)200是計(jì)算機(jī)的一個(gè)例子,例如圖1中的服務(wù)器104和客戶端110,其中可以放置實(shí)施本發(fā)明的實(shí)施例的過(guò)程的計(jì)算機(jī)可用代碼或者指令。
在所繪出的例子中,數(shù)據(jù)處理系統(tǒng)200采用了中心體系結(jié)構(gòu)(hubarchitecture),包括北橋和存儲(chǔ)器控制器中心(NB/MCH)202以及南橋和輸入/輸出(I/O)控制器中心(SB/ICH)204。處理單元206、主存儲(chǔ)器208以及圖形處理器210連接到NB/MCH 202。圖形處理器210可以通過(guò)加速圖形端口(AGP)連接到NB/MCH 202。
在所繪出的例子中,局域網(wǎng)(LAN)適配器212連接到SB/ICH204。音頻適配器216、鍵盤(pán)和鼠標(biāo)適配器220、調(diào)制解調(diào)器222、只讀存儲(chǔ)器(ROM)224、硬盤(pán)驅(qū)動(dòng)器(HDD)226、CD-ROM驅(qū)動(dòng)器230、通用串行總線(USB)端口以及其他通信端口232,并且PCI/PCIe設(shè)備234通過(guò)總線238和總線240連接到SB/ICH 204。PCI/PCIe設(shè)備可以包括例如以太網(wǎng)適配器、插入卡以及用于筆記本計(jì)算機(jī)的PC卡。PCI使用卡總線控制器,而PCIe并非如此。ROM 224可以是例如快閃二進(jìn)制輸入/輸出系統(tǒng)(BIOS)。
HDD 226和CD-ROM驅(qū)動(dòng)器230通過(guò)總線240連接到SB/ICH204。HDD 226和CD-ROM驅(qū)動(dòng)器230可以使用例如集成驅(qū)動(dòng)電路(IDE)或串行先進(jìn)技術(shù)連接(SATA)接口。超級(jí)I/O(SIO)設(shè)備236可以連接到SB/ICH 204。
操作系統(tǒng)在處理單元206上運(yùn)行,并協(xié)調(diào)和提供對(duì)圖2中的數(shù)據(jù)處理系統(tǒng)200內(nèi)的各種部件的控制。作為客戶端,操作系統(tǒng)可以是在商業(yè)上可獲得的操作系統(tǒng),例如MicrosoftWindowsXP(Microsoft和Windows是微軟公司在美國(guó)、其他國(guó)家或者上述國(guó)家的商標(biāo))。面向?qū)ο蟮木幊滔到y(tǒng),例如JavaTM編程系統(tǒng),可以結(jié)合操作系統(tǒng)運(yùn)行,并提供從在數(shù)據(jù)處理系統(tǒng)200上執(zhí)行的JavaTM程序或應(yīng)用對(duì)操作系統(tǒng)的調(diào)用(Java是太陽(yáng)微系統(tǒng)公司的在美國(guó)、其他國(guó)家或者上述國(guó)家的商標(biāo))。
作為服務(wù)器,數(shù)據(jù)處理系統(tǒng)200可以是例如IBMeServerTMpSeries計(jì)算機(jī)系統(tǒng),運(yùn)行高級(jí)交互執(zhí)行(AIX)操作系統(tǒng)或LINUX操作系統(tǒng)(eServer、pSeries和AIX是國(guó)際商用機(jī)器公司在美國(guó)、其他國(guó)家或者上述國(guó)家的商標(biāo),而LINUX是Linus Torvalds在美國(guó)、其他國(guó)家或者上述國(guó)家的商標(biāo))。數(shù)據(jù)處理系統(tǒng)200可以是在處理單元206中包括多個(gè)處理器的對(duì)稱多處理器(SMP)系統(tǒng)。另外,可以采用單處理器系統(tǒng)。
用于操作系統(tǒng)、面向?qū)ο缶幊滔到y(tǒng)以及應(yīng)用或者程序的指令被放置在存儲(chǔ)設(shè)備上,例如HDD 226,并且可以被加載到主存儲(chǔ)器208中,供處理單元206執(zhí)行。本發(fā)明實(shí)施例的過(guò)程由處理單元206使用計(jì)算機(jī)可用程序代碼執(zhí)行,所述程序代碼可以被放置在例如主存儲(chǔ)器208、ROM 224的存儲(chǔ)器中,或者放置在一個(gè)或更多個(gè)外圍設(shè)備226和230中。
普通技術(shù)人員將理解,依據(jù)實(shí)現(xiàn)方式,圖1到2中的硬件可能變化。除了在圖1到2中所繪出的硬件以外,或者代替所述硬件,可以使用其他的內(nèi)部硬件或者外圍設(shè)備,例如快閃存儲(chǔ)器、等效非易失存儲(chǔ)器,或光盤(pán)驅(qū)動(dòng)器,等等。而且,可將本發(fā)明的過(guò)程應(yīng)用于多處理器數(shù)據(jù)處理系統(tǒng)。
在一些說(shuō)明性示例中,數(shù)據(jù)處理系統(tǒng)200可以是個(gè)人數(shù)字助理(PDA),它配有提供非易失存儲(chǔ)器的快閃存儲(chǔ)器,用于存儲(chǔ)操作系統(tǒng)文件和/或用戶產(chǎn)生的數(shù)據(jù)。
總線系統(tǒng)可以由一個(gè)或更多個(gè)總線組成,例如圖2中所示的總線238或總線240。當(dāng)然,可以使用任何類(lèi)型的通信構(gòu)架或體系結(jié)構(gòu)實(shí)施所述總線系統(tǒng),所述通信構(gòu)架或體系結(jié)構(gòu)在連到所述構(gòu)架或體系結(jié)構(gòu)的不同部件或設(shè)備之間提供數(shù)據(jù)轉(zhuǎn)移。通信單元可以包括一個(gè)或更多個(gè)用來(lái)發(fā)送和接收數(shù)據(jù)的設(shè)備,例如圖2的調(diào)制解調(diào)器222或網(wǎng)絡(luò)適配器212。存儲(chǔ)器可以是例如主存儲(chǔ)器208、ROM 224或者像在圖2中的NB/MCH 202中找到的那樣的高速緩存。圖1到2中所繪出的例子以及上面描述的例子并非意在暗示體系結(jié)構(gòu)的限制。例如,數(shù)據(jù)處理系統(tǒng)200也可以是平板計(jì)算機(jī)、膝上型計(jì)算機(jī),或者除了具有PDA形式以外的電話設(shè)備。
本發(fā)明的方案提供了用于數(shù)據(jù)庫(kù)工作負(fù)荷仿真系統(tǒng)的用計(jì)算機(jī)實(shí)現(xiàn)的方法、裝置和計(jì)算機(jī)可用程序代碼。本發(fā)明的方案仿真了數(shù)據(jù)庫(kù)工作負(fù)荷,這一般由昂貴的測(cè)試配置和測(cè)試驅(qū)動(dòng)器驅(qū)動(dòng)。在這些說(shuō)明性例子中,工作負(fù)荷仿真器是無(wú)上下文的,所以測(cè)試開(kāi)發(fā)者無(wú)需對(duì)工作負(fù)荷的特性有任何了解。本發(fā)明的方案不要求針對(duì)任何特定上下文的編碼或腳本定制。
此外,仿真器被設(shè)計(jì)成支持直接數(shù)據(jù)庫(kù)測(cè)試。數(shù)據(jù)在數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)應(yīng)用編程接口(API)層上被捕獲。此外,本發(fā)明的方案不要求中間件集群(middleware cluster)的配置和長(zhǎng)期維護(hù)。
現(xiàn)在轉(zhuǎn)到圖3,根據(jù)本發(fā)明的說(shuō)明性實(shí)施例示出了說(shuō)明在仿真數(shù)據(jù)庫(kù)工作負(fù)荷時(shí)使用的部件的圖。在這個(gè)例子中,所示出的部件形成了最小測(cè)試環(huán)境配置的一個(gè)例子。如所示那樣,環(huán)境300包含負(fù)荷驅(qū)動(dòng)器302。這個(gè)部件在環(huán)境300中產(chǎn)生輸入,以便仿真數(shù)據(jù)庫(kù)業(yè)務(wù)。
在這些說(shuō)明性例子中,構(gòu)建了環(huán)境300,用于仿真基于單個(gè)客戶端或者請(qǐng)求者的數(shù)據(jù)庫(kù)工作負(fù)荷。當(dāng)然,依據(jù)具體實(shí)現(xiàn)方式,仿真也可以應(yīng)用于多于一個(gè)請(qǐng)求者。在這些例子中,客戶端的數(shù)量?jī)H受負(fù)荷驅(qū)動(dòng)器302可以仿真的客戶端數(shù)量限制??蛻舳耸钱a(chǎn)生對(duì)數(shù)據(jù)庫(kù)的請(qǐng)求的實(shí)體,并且可以是例如計(jì)算機(jī)或計(jì)算機(jī)上的處理器。
環(huán)境300還包含Web服務(wù)器304、應(yīng)用服務(wù)器306,以及數(shù)據(jù)庫(kù)系統(tǒng)308。在這些例子中,網(wǎng)絡(luò)服務(wù)器304和應(yīng)用服務(wù)器306形成了中間件。Web服務(wù)器304起到處理數(shù)據(jù)庫(kù)的用戶或請(qǐng)求者的業(yè)務(wù)的作用。在這些例子中,Web服務(wù)器304被用來(lái)處理互聯(lián)網(wǎng)協(xié)議(IP)和超文本傳輸協(xié)議(HTTP)業(yè)務(wù)。應(yīng)用服務(wù)器306提供對(duì)數(shù)據(jù)庫(kù)系統(tǒng)308的訪問(wèn)。應(yīng)用服務(wù)器306可使用各種類(lèi)型的目前可獲得的程序來(lái)實(shí)現(xiàn),例如WebSphere應(yīng)用服務(wù)器,它是可從國(guó)際商用機(jī)器公司獲得的產(chǎn)品。在這些例子中,產(chǎn)生業(yè)務(wù)時(shí)只使用單個(gè)客戶端,因而只需要在單個(gè)節(jié)點(diǎn)上的單個(gè)應(yīng)用服務(wù)器,例如應(yīng)用服務(wù)器306。在這些例子中,客戶端是被仿真的客戶端,例如圖1中的客戶端110。在正常操作中,采用不同節(jié)點(diǎn)上的大量應(yīng)用服務(wù)器,例如十個(gè)應(yīng)用服務(wù)器。
此外,在實(shí)際的數(shù)據(jù)庫(kù)實(shí)現(xiàn)中,除了網(wǎng)絡(luò)服務(wù)器304以外,需要不同數(shù)據(jù)處理系統(tǒng)上的額外的Web服務(wù)器。目前,采用兩個(gè)或更多個(gè)負(fù)荷驅(qū)動(dòng)器,例如負(fù)荷驅(qū)動(dòng)器302??梢钥吹剑ㄟ^(guò)使用單個(gè)客戶端或請(qǐng)求者運(yùn)行仿真過(guò)程,減少了建立測(cè)試環(huán)境需要的部件數(shù)量。結(jié)果降低了時(shí)間和硬件方面的成本,使得這種類(lèi)型的測(cè)試更為可行。
在仿真來(lái)自客戶端的請(qǐng)求時(shí),負(fù)荷驅(qū)動(dòng)器302將業(yè)務(wù)驅(qū)動(dòng)或發(fā)送到Web服務(wù)器304。這種業(yè)務(wù)是來(lái)自客戶端的被仿真的請(qǐng)求的形式。負(fù)荷驅(qū)動(dòng)器302是目前使用的部件,用于在數(shù)據(jù)庫(kù)工作負(fù)荷仿真中仿真業(yè)務(wù)。在這些例子中,業(yè)務(wù)的仿真只針對(duì)單個(gè)用戶或客戶端。
使用仿真過(guò)程310處理不同的部件,例如負(fù)荷驅(qū)動(dòng)器302、Web服務(wù)器304、應(yīng)用服務(wù)器306和數(shù)據(jù)庫(kù)系統(tǒng)308。該過(guò)程將適當(dāng)?shù)拿畎l(fā)送到這些不同部件,以便執(zhí)行工作負(fù)荷仿真過(guò)程。在第一階段,仿真過(guò)程310發(fā)送命令到負(fù)荷驅(qū)動(dòng)器302,以便產(chǎn)生到Web服務(wù)器304的業(yè)務(wù)。該業(yè)務(wù)包含對(duì)數(shù)據(jù)庫(kù)系統(tǒng)308的不同請(qǐng)求。
仿真過(guò)程310還發(fā)送命令到數(shù)據(jù)庫(kù)系統(tǒng)308,以便開(kāi)始記錄仿真中產(chǎn)生的請(qǐng)求的跟蹤記錄。當(dāng)仿真完成時(shí),該跟蹤記錄被存儲(chǔ)在跟蹤記錄312中。在這些例子中,跟蹤記錄312內(nèi)的每一個(gè)跟蹤記錄均代表單個(gè)客戶端產(chǎn)生的動(dòng)作或請(qǐng)求。針對(duì)某個(gè)期望數(shù)量的用戶或客戶端,仿真過(guò)程310重復(fù)這個(gè)循環(huán)或者某些系列的步驟。每一次運(yùn)行新仿真時(shí),負(fù)荷驅(qū)動(dòng)器302以不同于其他仿真的方式產(chǎn)生請(qǐng)求。貫穿目前在負(fù)荷驅(qū)動(dòng)器302中使用的過(guò)程,這些輸入被改變,以便仿真對(duì)數(shù)據(jù)庫(kù)的請(qǐng)求。
由數(shù)據(jù)庫(kù)系統(tǒng)308對(duì)跟蹤記錄的記錄被通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)應(yīng)用程序接口(API)提供,大多數(shù)數(shù)據(jù)庫(kù)管理器提供所述數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)應(yīng)用程序接口(API)。例如,DB2通用數(shù)據(jù)庫(kù)允許跟蹤其可調(diào)用層接口(CLI)。CLI是給各種目前可獲得的數(shù)據(jù)庫(kù)系統(tǒng)提供的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)API。DB2通用數(shù)據(jù)庫(kù)是可從國(guó)際商用機(jī)器公司獲得的產(chǎn)品。
在已經(jīng)收集了期望數(shù)量的跟蹤記錄之后,仿真過(guò)程310向數(shù)據(jù)庫(kù)系統(tǒng)308重放這些跟蹤記錄,以便仿真來(lái)自多個(gè)客戶端的業(yè)務(wù)。例如,在仿真該數(shù)據(jù)庫(kù)的工作負(fù)荷時(shí),可以同時(shí)重放一百個(gè)跟蹤記錄,以便仿真來(lái)自一百個(gè)不同的訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)308的客戶端的業(yè)務(wù)。
以這種方式,通過(guò)該過(guò)程減少了為仿真大量數(shù)據(jù)庫(kù)業(yè)務(wù)所需的在時(shí)間和硬件方面的增加的精力。這種類(lèi)型的過(guò)程不要求產(chǎn)生工作負(fù)荷腳本來(lái)仿真多個(gè)客戶端。使用本發(fā)明的方案,通過(guò)理解事務(wù)組合(transaction mix)和不同類(lèi)型的隨機(jī)函數(shù)來(lái)定制腳本所需的時(shí)間是不必要的。如果使用上下文數(shù)據(jù)庫(kù)工作負(fù)荷仿真器,則用戶通常記錄運(yùn)行中的業(yè)務(wù)并研究輸出,以便理解業(yè)務(wù)的模式。此后,用戶被要求定義事務(wù)組合和邊界。跟蹤記錄中的數(shù)值數(shù)據(jù)被用隨機(jī)函數(shù)代替,并且去除了冗余的事務(wù)。此后,重放該跟蹤記錄。使用本發(fā)明的方案,不需要這些類(lèi)型的步驟。和使用上下文數(shù)據(jù)庫(kù)工作負(fù)荷仿真器相反,在跟蹤記錄內(nèi)不要求改變或者編碼。
現(xiàn)在轉(zhuǎn)到圖4,根據(jù)本發(fā)明的說(shuō)明性實(shí)施例繪出了用于仿真數(shù)據(jù)庫(kù)工作負(fù)荷的例圖。在這個(gè)例子中,測(cè)試者400執(zhí)行三個(gè)基本任務(wù)。這些任務(wù)是配置任務(wù)402、收集任務(wù)404和重放任務(wù)406。配置任務(wù)402是用來(lái)配置最小測(cè)試環(huán)境的任務(wù)。例如,使用可從國(guó)際商用機(jī)器公司獲得的DB2通用數(shù)據(jù)庫(kù)。在這個(gè)例子中采用該部件以及Web服務(wù)器、Java消息傳送(JMS)服務(wù)器、應(yīng)用服務(wù)器和負(fù)荷驅(qū)動(dòng)器來(lái)形成測(cè)試環(huán)境。
此后,收集任務(wù)404是一個(gè)指令集,執(zhí)行該指令集以便從所配置的測(cè)試環(huán)境收集N×M個(gè)跟蹤記錄文件。收集任務(wù)404只不過(guò)是使運(yùn)行過(guò)程開(kāi)始的任務(wù),就像測(cè)試者每天所執(zhí)行的。在這個(gè)例子中,利用最小測(cè)試環(huán)境使用運(yùn)行過(guò)程。作為收集任務(wù)404的結(jié)果,從運(yùn)行過(guò)程產(chǎn)生了數(shù)據(jù)庫(kù)跟蹤記錄文件。收集任務(wù)404將該過(guò)程運(yùn)行M次,其中運(yùn)行的每一次重復(fù)均產(chǎn)生N個(gè)跟蹤記錄文件。
此后,使用重放任務(wù)406同時(shí)重放Y個(gè)跟蹤記錄文件。在這個(gè)過(guò)程中,測(cè)試者用從收集任務(wù)404收集的跟蹤記錄文件的同時(shí)重放來(lái)對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)施壓。在這個(gè)例子中,Y是在任何給定測(cè)試執(zhí)行中打算仿真的用戶數(shù)量。在這些例子中,Y小于或等于M×N。跟蹤記錄文件被標(biāo)記并被同時(shí)重放,以便仿真很多數(shù)據(jù)庫(kù)用戶。利用這個(gè)過(guò)程,不需要跟蹤記錄文件解析、編碼或定制。
接著轉(zhuǎn)到圖5,根據(jù)本發(fā)明的說(shuō)明性實(shí)施例繪出了示出數(shù)據(jù)庫(kù)工作負(fù)荷仿真器中的工作流的圖。作為例子,繪出了跟蹤記錄文件收集的一種可能的指示。在這個(gè)數(shù)據(jù)庫(kù)工作負(fù)荷仿真器中存在的部件包括仿真器用戶接口(UI)500、基準(zhǔn)測(cè)試程序(bench mark)控制器502、負(fù)荷驅(qū)動(dòng)器管理器504、中間件管理器506、數(shù)據(jù)庫(kù)管理器508,以及跟蹤記錄文件管理器510。在這個(gè)例子中,測(cè)試者512是開(kāi)始收集跟蹤記錄文件的用戶或軟件應(yīng)用,所述跟蹤記錄文件進(jìn)入并將跟蹤記錄文件命令收集到仿真器用戶接口500中(消息M1)。
在這個(gè)例子中,仿真器用戶接口500、基準(zhǔn)測(cè)試程序控制器502、負(fù)荷驅(qū)動(dòng)器管理器504以及中間件管理器506是在圖3的仿真過(guò)程310內(nèi)的部件。
仿真器用戶接口500是接收收集跟蹤記錄文件的請(qǐng)求的用戶接口?;鶞?zhǔn)測(cè)試程序控制器502在這些說(shuō)明性實(shí)施例中是任務(wù)協(xié)調(diào)者。負(fù)荷驅(qū)動(dòng)器管理器504起到負(fù)荷驅(qū)動(dòng)器的封裝的作用。中間件管理器506管理例如Web服務(wù)器、應(yīng)用服務(wù)器以及Java消息服務(wù)(JMS)服務(wù)器的中間件。數(shù)據(jù)庫(kù)管理器508提供數(shù)據(jù)庫(kù)管理系統(tǒng)的控制。數(shù)據(jù)庫(kù)管理器508是在被測(cè)試的數(shù)據(jù)庫(kù)內(nèi)的過(guò)程。使用這種類(lèi)型的管理器將各種命令發(fā)送到數(shù)據(jù)庫(kù)系統(tǒng)。使用跟蹤記錄文件管理器510處理運(yùn)行所產(chǎn)生的跟蹤記錄文件。
仿真器用戶接口500將收集跟蹤記錄文件消息轉(zhuǎn)發(fā)到基準(zhǔn)測(cè)試程序控制器502(消息M2)。接著,基準(zhǔn)測(cè)試程序控制器502通過(guò)從備份鏡像回收數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)啟動(dòng)。通過(guò)由基準(zhǔn)測(cè)試程序控制器502發(fā)送停止命令到數(shù)據(jù)庫(kù)管理器508發(fā)生這個(gè)過(guò)程(消息M3)。此后,基準(zhǔn)測(cè)試程序控制器502發(fā)送消息到數(shù)據(jù)庫(kù)管理器508來(lái)啟動(dòng)數(shù)據(jù)庫(kù)(消息M4)。此后,基準(zhǔn)測(cè)試程序控制器502將恢復(fù)數(shù)據(jù)庫(kù)命令發(fā)送到數(shù)據(jù)庫(kù)管理器508(消息M5)。
基準(zhǔn)測(cè)試程序控制器502還回收中間件。隨著基準(zhǔn)測(cè)試程序控制器502將停止中間件的命令發(fā)送到中間件管理器506,發(fā)生了這個(gè)回收過(guò)程(消息M6)。此后,基準(zhǔn)測(cè)試程序控制器502將再次啟動(dòng)中間件的命令發(fā)送到中間件管理器506(消息M7)。中間件的停止和啟動(dòng)保證在運(yùn)行之間從中間件清除狀態(tài)信息和高速緩存數(shù)據(jù)。
在中間件上的中間件軟件已被啟動(dòng)之后,并且在測(cè)試開(kāi)始之前,基準(zhǔn)測(cè)試程序控制器502發(fā)送允許記錄命令到數(shù)據(jù)庫(kù)管理器508(消息M8)。使用這個(gè)消息來(lái)允許數(shù)據(jù)庫(kù)管理系統(tǒng)API捕獲數(shù)據(jù)。然后,通過(guò)由基準(zhǔn)測(cè)試程序控制器502發(fā)送運(yùn)行基準(zhǔn)測(cè)試程序命令到負(fù)荷驅(qū)動(dòng)器管理器504,開(kāi)始針對(duì)單個(gè)用戶的運(yùn)行(消息M9)。一旦運(yùn)行完成,基準(zhǔn)測(cè)試程序控制器502發(fā)送禁止記錄命令到數(shù)據(jù)庫(kù)管理器508,從而禁止用來(lái)收集數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng)API(消息M10)。
然后,基準(zhǔn)測(cè)試程序控制器502發(fā)送保存跟蹤記錄文件命令到跟蹤記錄文件管理器510(消息M11)。使用這個(gè)特定消息將運(yùn)行所產(chǎn)生的跟蹤記錄文件保存在某個(gè)期望或被選擇的位置,供以后使用。
在這些說(shuō)明性例子中,所繪出的工作流被重復(fù)了獲取期望數(shù)量的跟蹤記錄文件和被仿真用戶所要求的重復(fù)次數(shù)。在這些例子中,每一個(gè)跟蹤記錄文件均可以是執(zhí)行不同動(dòng)作的不同用戶的仿真。
現(xiàn)在轉(zhuǎn)到圖6,根據(jù)本發(fā)明的說(shuō)明性實(shí)施例繪出了重放跟蹤記錄文件的圖。在這個(gè)例子中,仿真系統(tǒng)包含仿真器用戶接口600、基準(zhǔn)測(cè)試程序控制器602、數(shù)據(jù)庫(kù)管理器604、中間件管理器606、跟蹤記錄文件管理器608以及重放運(yùn)行時(shí)對(duì)象610。仿真器用戶接口600、基準(zhǔn)測(cè)試程序控制器602、數(shù)據(jù)庫(kù)管理器604、中間件管理器606和跟蹤記錄文件管理器608分別對(duì)應(yīng)于圖5中的仿真器用戶接口500、基準(zhǔn)測(cè)試程序控制器502、數(shù)據(jù)庫(kù)管理器508、中間件管理器506和跟蹤記錄文件管理器510。在此重放過(guò)程中使用的額外部件是重放運(yùn)行時(shí)對(duì)象610。這個(gè)特定對(duì)象負(fù)責(zé)跟蹤記錄文件中被捕獲的業(yè)務(wù)的解釋和將工作負(fù)荷施加到被測(cè)試的系統(tǒng)。
在這個(gè)例子中,例如DB2的很多數(shù)據(jù)庫(kù)系統(tǒng)包括重放跟蹤記錄文件的能力。通過(guò)同時(shí)運(yùn)行用來(lái)重放跟蹤記錄文件的程序的多個(gè)實(shí)例,重放多個(gè)跟蹤記錄文件。但是,如果數(shù)據(jù)庫(kù)系統(tǒng)不具有跟蹤記錄重放工具,則重放運(yùn)行時(shí)對(duì)象610可以被實(shí)施為仿真過(guò)程的一部分。在這種情況下,采用跟蹤記錄文件解釋器和執(zhí)行器。跟蹤記錄文件解釋器和執(zhí)行器是解釋跟蹤記錄中的數(shù)據(jù)并產(chǎn)生在記錄該跟蹤記錄時(shí)所發(fā)生的動(dòng)作或請(qǐng)求的過(guò)程。
在這個(gè)特定的重放過(guò)程中,中間件管理器606不執(zhí)行任何動(dòng)作,因?yàn)椴辉傩枰獞?yīng)用服務(wù)器。
在這個(gè)例子中,測(cè)試者612是通過(guò)和仿真器用戶接口600交互作用開(kāi)始重放跟蹤記錄文件的用戶或者應(yīng)用。在這個(gè)例子中,測(cè)試者612發(fā)送重放Y個(gè)跟蹤記錄文件命令到仿真器用戶接口600(消息S1)。使用這個(gè)命令來(lái)重放Y個(gè)跟蹤記錄文件。仿真器用戶接口600將這個(gè)命令中繼到基準(zhǔn)測(cè)試程序控制器602(消息S2)。
響應(yīng)于接收到這個(gè)重放跟蹤記錄文件的命令,基準(zhǔn)測(cè)試程序控制器602回收被測(cè)試的系統(tǒng),并且數(shù)據(jù)庫(kù)被恢復(fù)。隨著基準(zhǔn)測(cè)試程序控制器602將停止數(shù)據(jù)庫(kù)命令發(fā)送到數(shù)據(jù)庫(kù)管理器604(消息S3),發(fā)生了這個(gè)過(guò)程。此后,基準(zhǔn)測(cè)試程序控制器602發(fā)送啟動(dòng)數(shù)據(jù)庫(kù)命令到數(shù)據(jù)庫(kù)管理器604(消息S4)。然后基準(zhǔn)測(cè)試程序控制器602發(fā)送恢復(fù)數(shù)據(jù)庫(kù)命令到數(shù)據(jù)庫(kù)管理器604(消息S5)。
接著,基準(zhǔn)測(cè)試程序控制器602發(fā)送取得跟蹤記錄文件命令到跟蹤記錄文件管理器608(消息S6)?;鶞?zhǔn)測(cè)試程序控制器602使用這個(gè)消息為仿真獲得所需要的跟蹤記錄文件。例如,如果要仿真一千個(gè)數(shù)據(jù)庫(kù)用戶,則從跟蹤記錄文件管理器608獲得一千個(gè)跟蹤記錄文件進(jìn)行重放。
在重放跟蹤記錄文件之前,數(shù)據(jù)庫(kù)被預(yù)熱(warm up)。這通過(guò)由基準(zhǔn)測(cè)試程序602發(fā)送預(yù)熱數(shù)據(jù)庫(kù)命令到數(shù)據(jù)庫(kù)管理器604來(lái)實(shí)現(xiàn)(消息S7)。在這些例子中,在基準(zhǔn)測(cè)試(benchmarking)首次啟動(dòng)之前,數(shù)據(jù)應(yīng)該被加載到緩沖池中。使用消息S7執(zhí)行這個(gè)過(guò)程。這種類(lèi)型的過(guò)程是常見(jiàn)的目前使用的數(shù)據(jù)庫(kù)基準(zhǔn)測(cè)試的做法。
然后,基準(zhǔn)測(cè)試程序控制器602發(fā)送啟動(dòng)工作負(fù)荷命令到重放運(yùn)行時(shí)對(duì)象610(消息S80)。使用這個(gè)命令為數(shù)據(jù)庫(kù)同時(shí)重放收集的跟蹤記錄文件。在已經(jīng)播放了跟蹤記錄文件之后,基準(zhǔn)測(cè)試程序控制器602發(fā)送取得事務(wù)處理率(transaction rate)命令到數(shù)據(jù)庫(kù)管理器604(消息S9)。這個(gè)特定度量在數(shù)據(jù)庫(kù)性能中是一個(gè)關(guān)鍵的度量。
基準(zhǔn)測(cè)試程序控制器602將這個(gè)度量返回到仿真器用戶接口600(消息S10)。接著,仿真器用戶接口600將該事務(wù)處理率呈現(xiàn)給測(cè)試者612(消息S11)。
現(xiàn)在轉(zhuǎn)到圖7,根據(jù)本發(fā)明的說(shuō)明性實(shí)施例示出了基準(zhǔn)測(cè)試程序控制器的過(guò)程的流程圖。在這些例子中,圖7中所示的過(guò)程可以被實(shí)施在基準(zhǔn)測(cè)試程序控制器中,例如圖5中的基準(zhǔn)測(cè)試程序控制器502或者圖6中的基準(zhǔn)測(cè)試程序控制器602。
所述過(guò)程通過(guò)復(fù)位數(shù)據(jù)庫(kù)管理器開(kāi)始(步驟700)。然后確定應(yīng)該采取什么動(dòng)作(步驟702)。如果動(dòng)作是收集跟蹤記錄文件,則設(shè)置計(jì)數(shù)器n等于零(步驟704)。步驟704中的計(jì)數(shù)器n用來(lái)對(duì)已經(jīng)進(jìn)行的運(yùn)行次數(shù)進(jìn)行計(jì)數(shù)。適當(dāng)?shù)拿畋话l(fā)送到數(shù)據(jù)庫(kù),以便將數(shù)據(jù)庫(kù)恢復(fù)到先前狀態(tài)(步驟706)。對(duì)于數(shù)據(jù)庫(kù),一個(gè)期望的先前狀態(tài)是恰好在測(cè)試數(shù)據(jù)庫(kù)被填充了測(cè)試數(shù)據(jù)之后的狀態(tài)。測(cè)試數(shù)據(jù)通常由隨機(jī)函數(shù)產(chǎn)生。但是在這些說(shuō)明性實(shí)施例中,在測(cè)試中期望以相同的測(cè)試數(shù)據(jù)作為起始點(diǎn)來(lái)啟動(dòng)每一個(gè)測(cè)試。在填充了數(shù)據(jù)以后,數(shù)據(jù)庫(kù)通常被備份。然后,可以將數(shù)據(jù)庫(kù)從備份鏡像恢復(fù)到先前狀態(tài)。在這些例子中,在測(cè)試中,狀態(tài)在運(yùn)行之間不被恢復(fù)。
此后,過(guò)程復(fù)位全部中間件數(shù)據(jù)處理系統(tǒng)(步驟708)。使用這個(gè)步驟復(fù)位不同的數(shù)據(jù)處理系統(tǒng),在所述數(shù)據(jù)處理系統(tǒng)上可以運(yùn)行例如網(wǎng)絡(luò)服務(wù)器或應(yīng)用服務(wù)器的中間件。實(shí)施步驟708以便在用于仿真客戶端的工作負(fù)荷的不同運(yùn)行之間清除高速緩存數(shù)據(jù)中的狀態(tài)信息。接著,過(guò)程開(kāi)啟數(shù)據(jù)庫(kù)活動(dòng)跟蹤(步驟710)。通過(guò)發(fā)送適當(dāng)?shù)腁PI命令到數(shù)據(jù)庫(kù)管理器來(lái)使用這個(gè)過(guò)程。這個(gè)命令的一部分可以包括指定應(yīng)該將跟蹤記錄文件存儲(chǔ)在哪兒。對(duì)于DB2 CLI,記錄或創(chuàng)建跟蹤記錄的命令是“db2-v update cli cfg for section COMMON usingTrace %1和db2-v update cli cfg for section COMMON usingTracePathName%CLI_TRACE_PATH%”。
然后,該過(guò)程運(yùn)行基準(zhǔn)測(cè)試程序(步驟712)。這可以通過(guò)由基準(zhǔn)測(cè)試程序控制器運(yùn)行批處理文件腳本來(lái)開(kāi)始。此后,確定計(jì)數(shù)器n是否小于N(步驟714)。N是要被仿真的不同客戶端的數(shù)量。如果計(jì)數(shù)器n不小于N,則n被增加1(步驟716),然后過(guò)程返回如上所述的步驟712。在這些說(shuō)明性例子中,數(shù)據(jù)庫(kù)僅在其第一次運(yùn)行之后被恢復(fù)。否則,該過(guò)程關(guān)閉數(shù)據(jù)庫(kù)活動(dòng)跟蹤(步驟718),并保存跟蹤記錄文件供以后重放(步驟720)。此后過(guò)程終止。
再次參考步驟702,如果動(dòng)作是重放跟蹤記錄文件,則過(guò)程恢復(fù)數(shù)據(jù)庫(kù)(步驟722)。此后,從貯存庫(kù)獲得跟蹤記錄文件(步驟724)。然后,該過(guò)程通過(guò)將數(shù)據(jù)庫(kù)從磁盤(pán)加載到高速緩存來(lái)預(yù)熱數(shù)據(jù)庫(kù)(步驟726)。此后,同時(shí)重放M個(gè)跟蹤記錄文件(步驟728)。在這些例子中,M是針對(duì)所述數(shù)據(jù)庫(kù)應(yīng)該被仿真的客戶端的數(shù)量。要被重放的跟蹤記錄文件的數(shù)量可以小于實(shí)際記錄的跟蹤記錄文件的數(shù)量。結(jié)果,M可以小于N。
對(duì)于例如DB2 CLI的數(shù)據(jù)庫(kù),通過(guò)數(shù)據(jù)庫(kù)配備的重放工具完成重放。在這個(gè)例子中,使用語(yǔ)句“start”db2cli.exe trace file 1運(yùn)行這個(gè)程序的一個(gè)實(shí)例來(lái)重放跟蹤記錄文件1。這個(gè)命令被針對(duì)不同的跟蹤記錄文件名同時(shí)重復(fù),以便同時(shí)重放這些跟蹤記錄文件。通過(guò)腳本或批處理文件可以啟動(dòng)不同的實(shí)例,所述腳本或批處理文件針對(duì)每一個(gè)要重放的跟蹤記錄文件重復(fù)所述命令。此后,通過(guò)對(duì)持續(xù)時(shí)間內(nèi)被進(jìn)行的順序查詢語(yǔ)言語(yǔ)句的數(shù)量計(jì)數(shù)獲得事務(wù)處理率(步驟730),此后過(guò)程終止。
現(xiàn)在轉(zhuǎn)到圖8,根據(jù)本發(fā)明的說(shuō)明性實(shí)施例繪出了數(shù)據(jù)庫(kù)產(chǎn)生的跟蹤記錄文件的圖。在這個(gè)例子中,跟蹤記錄800是數(shù)據(jù)庫(kù)產(chǎn)生的Java公共客戶端(JCC)跟蹤記錄文件的一部分的一個(gè)例子,其中存在著SQL語(yǔ)句和其他的命令。在這些例子中,跟蹤記錄800被存儲(chǔ)在圖3的跟蹤記錄312中。這個(gè)跟蹤記錄被重放,以便仿真在這些例子中由單個(gè)客戶端產(chǎn)生的事務(wù)。
如果重放工具不支持特定類(lèi)型的跟蹤記錄,則本發(fā)明的方案可以包括解釋跟蹤記錄的內(nèi)容并執(zhí)行適當(dāng)命令的重放過(guò)程。
現(xiàn)在轉(zhuǎn)到圖9,代碼900是java應(yīng)用的一個(gè)例子,它按照在DB2通用JDBC驅(qū)動(dòng)器、a.k.a Java公共客戶端(JCC)跟蹤記錄中解釋的那樣執(zhí)行命令。如果數(shù)據(jù)庫(kù)系統(tǒng)支持重放其產(chǎn)生的跟蹤記錄,則這種類(lèi)型的過(guò)程是不必要的。
因此,本發(fā)明的方案提供了用于仿真數(shù)據(jù)庫(kù)工作負(fù)荷的用計(jì)算機(jī)實(shí)現(xiàn)的方法、裝置和計(jì)算機(jī)可用程序代碼。建立最小測(cè)試環(huán)境,以便允許單個(gè)少量客戶端在數(shù)據(jù)庫(kù)上產(chǎn)生工作負(fù)荷業(yè)務(wù)。通過(guò)客戶端收集這個(gè)運(yùn)行的跟蹤記錄。這個(gè)運(yùn)行被針對(duì)仿真所需要的任意多的客戶端重復(fù)。每次進(jìn)行運(yùn)行時(shí),為客戶端產(chǎn)生跟蹤記錄。這些跟蹤記錄被保存,然后被同時(shí)向數(shù)據(jù)庫(kù)重放,以便仿真來(lái)自期望數(shù)量的客戶端的工作負(fù)荷。在本發(fā)明的方案中,不需要文件分配、編碼和定制來(lái)仿真數(shù)據(jù)庫(kù)上的工作負(fù)荷。
以這種方式,測(cè)試數(shù)據(jù)庫(kù)所需要的時(shí)間和硬件量被減少。在這些例子中,針對(duì)單個(gè)客戶端產(chǎn)生每一個(gè)產(chǎn)生跟蹤記錄的運(yùn)行。依據(jù)特定實(shí)現(xiàn)方式,可以在一個(gè)跟蹤記錄中仿真若干客戶端。但是,添加額外的客戶端可能增加測(cè)試的復(fù)雜性,并且在某種情況下要求額外的硬件和軟件資源。因此,盡管可以仿真額外的客戶端,但是,依據(jù)所述仿真復(fù)雜性的增加,這樣的改變是可選的。
本發(fā)明可以具有完全硬件實(shí)施例的形式、完全軟件實(shí)施例的形式,或者既包含硬件元素也包含軟件元素的實(shí)施例的形式。在優(yōu)選實(shí)施例中,本發(fā)明在軟件中實(shí)施,它包括但不限于固件、駐留軟件、微碼等。
此外,本發(fā)明可以具有可從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問(wèn)的計(jì)算機(jī)程序產(chǎn)品的形式,所述介質(zhì)提供程序代碼供計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用,或者結(jié)合它們一起使用。為了本描述的目的,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是任何有形的裝置,它能夠包含、存儲(chǔ)、傳遞、傳播或傳輸供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者結(jié)合它們一起使用的程序。
介質(zhì)可以是電子、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備),或者傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可移動(dòng)計(jì)算機(jī)磁盤(pán)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、剛性磁盤(pán)和光盤(pán)。當(dāng)前的光盤(pán)例子包括緊制盤(pán)-只讀存儲(chǔ)器(CD-ROM)、緊制盤(pán)-讀/寫(xiě)(CD-R/W)和DVD。
適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個(gè)通過(guò)系統(tǒng)總線直接或間接地耦合到存儲(chǔ)器元件的處理器。存儲(chǔ)器元件可以包括在程序代碼實(shí)際執(zhí)行期間所采用的本地存儲(chǔ)器、大容量存儲(chǔ)器和高速緩存存儲(chǔ)器,高速緩存存儲(chǔ)器提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)器取出代碼的次數(shù)。
輸入/輸出或I/O設(shè)備(包括但不限于鍵盤(pán)、顯示器、指示設(shè)備等)可直接或通過(guò)中間的I/O控制器耦合到系統(tǒng)。
網(wǎng)絡(luò)適配器也可以耦合到所述系統(tǒng),以使數(shù)據(jù)處理系統(tǒng)能夠通過(guò)中間的私有或公共網(wǎng)絡(luò)變成耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器以及以太網(wǎng)卡僅僅是目前可獲得的網(wǎng)絡(luò)適配器類(lèi)型中的幾種。
為了說(shuō)明和描述的目的,已經(jīng)給出了本發(fā)明的描述,本發(fā)明的描述并非是窮盡的或者局限于所公開(kāi)形式的發(fā)明。對(duì)于普通技術(shù)人員來(lái)說(shuō),很多修改和改變將是顯然的。選擇并描述了實(shí)施例以便最好地說(shuō)明本發(fā)明的原理、實(shí)際應(yīng)用,并使其他普通技術(shù)人員能夠針對(duì)具有各種適合所構(gòu)思的特定使用的修改的各種實(shí)施例理解本發(fā)明。
權(quán)利要求
1.一種用于仿真數(shù)據(jù)庫(kù)上的工作負(fù)荷的、用計(jì)算機(jī)實(shí)現(xiàn)的方法,所述用計(jì)算機(jī)實(shí)現(xiàn)的方法包含將指令集執(zhí)行被選擇的次數(shù),以便仿真被選擇數(shù)量的客戶端的工作負(fù)荷;響應(yīng)于將所述指令集執(zhí)行所述被選擇的次數(shù),獲得被選擇數(shù)量的跟蹤記錄;和同時(shí)重放所述被選擇數(shù)量的跟蹤記錄,以便仿真所述數(shù)據(jù)庫(kù)上的所述工作負(fù)荷。
2.如權(quán)利要求1所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,還包含配置測(cè)試環(huán)境。
3.如權(quán)利要求1所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,還包含從所述被選擇數(shù)量的跟蹤記錄的所述同時(shí)重放中接收一組度量。
4.如權(quán)利要求3所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,所述的一組度量包含事務(wù)處理率。
5.如權(quán)利要求1所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,還包含在所述指令集的每一次執(zhí)行之前停止所述數(shù)據(jù)庫(kù);在所述指令集的每一次執(zhí)行之前停止所述數(shù)據(jù)庫(kù)之后,啟動(dòng)所述數(shù)據(jù)庫(kù);和在所述指令集的每一次執(zhí)行之前啟動(dòng)所述數(shù)據(jù)庫(kù)之后,將所述數(shù)據(jù)庫(kù)恢復(fù)到先前狀態(tài)。
6.如權(quán)利要求5所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,還包含在所述指令集的每一次執(zhí)行之前停止中間件;和在所述指令集的每一次執(zhí)行之前已經(jīng)停止所述中間件之后,啟動(dòng)所述中間件,其中,狀態(tài)信息和被高速緩存的數(shù)據(jù)從所述中間件被清除。
7.如權(quán)利要求1所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,所述獲得步驟包含允許記錄跟蹤記錄;從所述指令集的每一次執(zhí)行接收跟蹤記錄,以便形成多個(gè)跟蹤記錄;和保存所述多個(gè)跟蹤記錄。
8.如權(quán)利要求1所述的用計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,所述執(zhí)行步驟和所述獲得步驟由基準(zhǔn)測(cè)試程序控制器執(zhí)行。
9.一種計(jì)算機(jī)程序產(chǎn)品,包含具有用于仿真數(shù)據(jù)庫(kù)上的工作負(fù)荷的計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用介質(zhì),所述計(jì)算機(jī)程序產(chǎn)品包括用于執(zhí)行權(quán)利要求1到8中任何一個(gè)的方法中的步驟的計(jì)算機(jī)可用程序代碼。
10.一種數(shù)據(jù)處理系統(tǒng),包含總線;連接到所述總線的通信單元;連接到所述總線的存儲(chǔ)器,其中,存儲(chǔ)設(shè)備包括一組計(jì)算機(jī)可用程序代碼;和連接到所述總線的處理器單元,其中,所述處理器單元執(zhí)行所述的一組計(jì)算機(jī)可用程序代碼,以便將指令集執(zhí)行被選擇的次數(shù),從而仿真被選擇數(shù)量的客戶端的工作負(fù)荷;響應(yīng)于將所述指令集執(zhí)行所述被選擇的次數(shù),獲得被選擇數(shù)量的跟蹤記錄;和同時(shí)重放所述被選擇數(shù)量的跟蹤記錄,以便仿真所述數(shù)據(jù)庫(kù)上的所述工作負(fù)荷。
11.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中,所述處理器單元還執(zhí)行所述計(jì)算機(jī)可用程序代碼來(lái)配置測(cè)試環(huán)境。
12.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中,所述處理器單元還執(zhí)行所述計(jì)算機(jī)可用程序代碼,以便從所述被選擇數(shù)量的跟蹤記錄的所述同時(shí)重放中接收一組度量。
13.如權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中,所述的一組度量包含事務(wù)處理率。
14.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中,所述處理器單元還執(zhí)行所述計(jì)算機(jī)可用程序代碼,以便在所述指令集的每一次執(zhí)行之前停止所述數(shù)據(jù)庫(kù);在所述指令集的每一次執(zhí)行之前停止所述數(shù)據(jù)庫(kù)之后,啟動(dòng)所述數(shù)據(jù)庫(kù);和在所述指令集的每一次執(zhí)行之前啟動(dòng)所述數(shù)據(jù)庫(kù)之后,將所述數(shù)據(jù)庫(kù)恢復(fù)到先前狀態(tài)。
15.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其中,所述處理器單元還執(zhí)行所述計(jì)算機(jī)可用程序代碼,以便在所述指令集的每一次執(zhí)行之前停止中間件;和在所述指令集的每一次執(zhí)行之前已經(jīng)停止所述中間件之后,啟動(dòng)所述中間件,其中,狀態(tài)信息和被高速緩存的數(shù)據(jù)從所述中間件被清除。
全文摘要
將指令集執(zhí)行被選擇的次數(shù),以便仿真被選擇數(shù)量用戶的用戶負(fù)荷的計(jì)算機(jī)實(shí)現(xiàn)的方法、裝置和計(jì)算機(jī)可用程序代碼。響應(yīng)于將所述指令集執(zhí)行了所述被選擇的次數(shù),獲得被選擇數(shù)量的跟蹤記錄。同時(shí)重放所述被選擇數(shù)量的跟蹤記錄,以便仿真所述數(shù)據(jù)庫(kù)上的所述工作負(fù)荷。
文檔編號(hào)G06F17/30GK1975691SQ200610142578
公開(kāi)日2007年6月6日 申請(qǐng)日期2006年10月30日 優(yōu)先權(quán)日2005年10月31日
發(fā)明者托尼·勞, 彼德·舒姆 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司