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

用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的方法和裝置與流程

文檔序號(hào):11829385閱讀:264來(lái)源:國(guó)知局
用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的方法和裝置與流程

本發(fā)明涉及計(jì)算機(jī)軟件測(cè)試領(lǐng)域,尤其涉及一種在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的方法和裝置。



背景技術(shù):

軟件產(chǎn)品在發(fā)布到市場(chǎng)時(shí),會(huì)向客戶提供該產(chǎn)品的功能說(shuō)明以及性能說(shuō)明。因此,對(duì)軟件產(chǎn)品進(jìn)行性能測(cè)試是軟件產(chǎn)品開(kāi)發(fā)過(guò)程中不可缺少的環(huán)節(jié)。作為性能測(cè)試的一個(gè)項(xiàng)目,軟件設(shè)計(jì)者會(huì)對(duì)軟件數(shù)據(jù)庫(kù)的大數(shù)據(jù)量進(jìn)行性能測(cè)試,為客戶在判斷是否選用該產(chǎn)品時(shí)提供參考。

當(dāng)客戶在使用軟件產(chǎn)品一段時(shí)間后,發(fā)現(xiàn)軟件產(chǎn)品的性能逐漸下降,其中的一個(gè)原因是軟件產(chǎn)品所運(yùn)行的數(shù)據(jù)庫(kù)的存取查找等處理速度下降。經(jīng)過(guò)調(diào)查和技術(shù)驗(yàn)證,軟件產(chǎn)品對(duì)數(shù)據(jù)庫(kù)的存取性能下降,與形成的數(shù)據(jù)庫(kù)斷片化率程度有關(guān)。隨著軟件產(chǎn)品在使用過(guò)程中對(duì)數(shù)據(jù)庫(kù)的長(zhǎng)期操作,會(huì)導(dǎo)致數(shù)據(jù)庫(kù)的碎片化。數(shù)據(jù)庫(kù)碎片化率程度越高,數(shù)據(jù)庫(kù)的存取查找等處理速度就越慢,從而導(dǎo)致軟件使用性能的惡化。

現(xiàn)有數(shù)據(jù)庫(kù)性能測(cè)試中,準(zhǔn)備的大量數(shù)據(jù)都是一次導(dǎo)入的初始狀態(tài),該狀態(tài)下的數(shù)據(jù)庫(kù)碎片化率為0%,此時(shí)性能測(cè)試得到的是理想數(shù)據(jù)庫(kù)環(huán)境下的結(jié)果。因此無(wú)法向客戶提供更符合實(shí)際使用情況的參考數(shù)據(jù)??蛻羰褂密浖a(chǎn)品后出現(xiàn)性能退化問(wèn)題后,對(duì)產(chǎn)品的滿意度下降,影響了后期的產(chǎn)品銷(xiāo)售。

因此,當(dāng)軟件產(chǎn)品發(fā)布到市場(chǎng)時(shí),如果可以向客戶提供在數(shù)據(jù)庫(kù)碎片化發(fā)生條件下的性能參考值是非常有利的,這可以監(jiān)視碎片化率增大到客戶不可接受的性能程度時(shí),提前采取數(shù)據(jù)庫(kù)優(yōu)化方法改善。

所以,本領(lǐng)域亟需一種能夠提供特定測(cè)試環(huán)境,例如具有特定碎片化率的數(shù)據(jù)庫(kù)以供軟件測(cè)試之用的技術(shù)。



技術(shù)實(shí)現(xiàn)要素:

以下給出一個(gè)或多個(gè)方面的簡(jiǎn)要概述以提供對(duì)這些方面的基本理解。此概述不是所有構(gòu)想到的方面的詳盡綜覽,并且既非旨在指認(rèn)出所有方面的關(guān)鍵性或決定性要素亦非試圖界定任何或所有方面的范圍。其唯一的目的是要以簡(jiǎn)化形式給出一個(gè)或多個(gè)方面的一些概念以為稍后給出的更加詳細(xì)的描述之序。

根據(jù)本發(fā)明的一方面,提供了一種用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的方法,待測(cè)試的軟件將在該數(shù)據(jù)庫(kù)具有目標(biāo)碎片化率的環(huán)境下進(jìn)行測(cè)試,該方法包括:

根據(jù)該目標(biāo)碎片化率確定該數(shù)據(jù)庫(kù)的數(shù)據(jù)頁(yè)的空白頁(yè)非空白頁(yè)分布模式;

根據(jù)適用于該軟件的數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)創(chuàng)建用于該數(shù)據(jù)庫(kù)表的記錄并向該數(shù)據(jù)庫(kù)中導(dǎo)入指定行數(shù)的該記錄;

根據(jù)該空白頁(yè)非空白頁(yè)分布模式和一行該記錄的大小確定所導(dǎo)入的該指定行數(shù)的記錄中的所有待刪除記錄;以及

自該數(shù)據(jù)庫(kù)中刪除所有待刪除記錄以使得該數(shù)據(jù)庫(kù)具有該目標(biāo)碎片化率。

在一實(shí)例中,該確定空白頁(yè)非空白頁(yè)分布模式包括:根據(jù)該目標(biāo)碎片率F確定不連續(xù)頁(yè)的數(shù)目m和連續(xù)頁(yè)的數(shù)目x-m,其中目標(biāo)碎片化率F=m/x;通過(guò)定義總共m+x個(gè)頁(yè)面中的空白頁(yè)和非空白頁(yè)以獲得m個(gè)不連續(xù)頁(yè)和x-m個(gè)連續(xù)頁(yè),其中每一不連續(xù)頁(yè)是相鄰位置為空白頁(yè)的非空白頁(yè),而每一連續(xù)頁(yè)是相鄰位置為非空白頁(yè)的非空白頁(yè)。

在一實(shí)例中,該相鄰位置為在前位置,或者該相鄰位置為在后位置。

在一實(shí)例中,當(dāng)該相鄰位置為在前位置時(shí),在該總共m+x個(gè)頁(yè)面中,第1,3,…,2m-1頁(yè)被定義為空白頁(yè),而第2,4,…,2m頁(yè)為非空白頁(yè),以及第2m+1,…,m+x頁(yè)為非空白頁(yè)。

在一實(shí)例中,根據(jù)該空白頁(yè)非空白頁(yè)分布模式和一行該記錄的大小確定所導(dǎo)入的該指定行數(shù)的記錄中的所有待刪除記錄包括:根據(jù)一行該記錄的大小確定該數(shù)據(jù)庫(kù)的每一頁(yè)所能存儲(chǔ)的記錄數(shù)目;根據(jù)該空白頁(yè)非空白頁(yè)模式中的空白頁(yè)的位置和每頁(yè)記錄數(shù)目確定在具有該總共m+x個(gè)頁(yè)面的單位中的待刪除 記錄;以及在該數(shù)據(jù)庫(kù)中循環(huán)重復(fù)具有該總共m+x個(gè)頁(yè)面的單位中的待刪除記錄的位置直至達(dá)到該指定行數(shù),從而確定所有導(dǎo)入記錄的范圍內(nèi)的所有待刪除記錄。

在一實(shí)例中,該方法還包括通過(guò)用戶對(duì)該數(shù)據(jù)庫(kù)表的手動(dòng)設(shè)定來(lái)獲得該數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)。

在一實(shí)例中,該方法還包括通過(guò)導(dǎo)入創(chuàng)建表的SQL文件來(lái)獲得該數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)。

根據(jù)本發(fā)明的另一方面,還提供了一種用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的裝置,待測(cè)試的軟件將在該數(shù)據(jù)庫(kù)具有目標(biāo)碎片化率的環(huán)境下進(jìn)行測(cè)試,該裝置包括:

分析模塊,適用于根據(jù)該目標(biāo)碎片化率確定該數(shù)據(jù)庫(kù)的數(shù)據(jù)頁(yè)的空白頁(yè)非空白頁(yè)分布模式;以及

數(shù)據(jù)存取模塊,適用于根據(jù)適用于該軟件的數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)創(chuàng)建用于該數(shù)據(jù)庫(kù)表的記錄并向該數(shù)據(jù)庫(kù)中導(dǎo)入指定行數(shù)的該記錄,

其中該分析模塊進(jìn)一步適用于根據(jù)該空白頁(yè)非空白頁(yè)分布模式和一行該記錄的大小確定所導(dǎo)入的該指定行數(shù)的記錄中的所有待刪除記錄,并且該數(shù)據(jù)存取模塊進(jìn)一步適用于自該數(shù)據(jù)庫(kù)中刪除所有待刪除記錄以使得該數(shù)據(jù)庫(kù)具有該目標(biāo)碎片化率。

在一實(shí)例中,該分析模塊進(jìn)一步適用于根據(jù)該目標(biāo)碎片率F確定不連續(xù)頁(yè)的數(shù)目m和連續(xù)頁(yè)的數(shù)目x-m,其中目標(biāo)碎片化率F=m/x;以及通過(guò)定義總共m+x個(gè)頁(yè)面中的空白頁(yè)和非空白頁(yè)以獲得m個(gè)不連續(xù)頁(yè)和x-m個(gè)連續(xù)頁(yè),其中每一不連續(xù)頁(yè)是相鄰位置為空白頁(yè)的非空白頁(yè),而每一連續(xù)頁(yè)是相鄰位置為非空白頁(yè)的非空白頁(yè)。

在一實(shí)例中,該相鄰位置為在前位置,或者該相鄰位置為在后位置。

在一實(shí)例中,當(dāng)該相鄰位置為在前位置時(shí),在該總共m+x個(gè)頁(yè)面中,第1,3,…,2m-1頁(yè)被定義為空白頁(yè),而第2,4,…,2m頁(yè)為非空白頁(yè),以及第2m+1,…,m+x頁(yè)為非空白頁(yè)。

在一實(shí)例中,該分析模塊進(jìn)一步適用于:根據(jù)一行該記錄的大小確定該數(shù) 據(jù)庫(kù)的每一頁(yè)所能存儲(chǔ)的記錄數(shù)目;根據(jù)該空白頁(yè)非空白頁(yè)模式中的空白頁(yè)的位置和每頁(yè)記錄數(shù)目確定在具有該總共m+x個(gè)頁(yè)面的單位中的待刪除記錄;以及在該數(shù)據(jù)庫(kù)中循環(huán)重復(fù)具有該總共m+x個(gè)頁(yè)面的單位中的待刪除記錄的位置直至達(dá)到該指定行數(shù),從而確定所有導(dǎo)入記錄的范圍內(nèi)的所有待刪除記錄。

在一實(shí)例中,該裝置還包括用戶接口模塊以適用于通過(guò)用戶對(duì)該數(shù)據(jù)庫(kù)表的手動(dòng)設(shè)定來(lái)獲得該數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)。

在一實(shí)例中,該裝置還包括用戶接口模塊以適用于通過(guò)導(dǎo)入創(chuàng)建表的SQL文件來(lái)獲得該數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)。

在一實(shí)例中,該裝置還包括用戶接口模塊以適用于通過(guò)用戶手動(dòng)設(shè)定該目標(biāo)碎片化率來(lái)獲得該目標(biāo)碎片化率和該指定行數(shù)。

附圖說(shuō)明

在結(jié)合以下附圖閱讀本公開(kāi)的實(shí)施例的詳細(xì)描述之后,能夠更好地理解本發(fā)明的上述特征和優(yōu)點(diǎn)。在附圖中,各組件不一定是按比例繪制,并且具有類似的相關(guān)特性或特征的組件可能具有相同或相近的附圖標(biāo)記。

圖1A是示出了數(shù)據(jù)庫(kù)中連續(xù)頁(yè)的示意圖;

圖1B是示出了數(shù)據(jù)庫(kù)中的不連續(xù)頁(yè)的示意圖;

圖2是示出了數(shù)據(jù)庫(kù)頁(yè)面的碎片情況的示意圖;

圖3示出了特定碎片化率下的空白頁(yè)非空白頁(yè)分布模式;

圖4是示出了根據(jù)本發(fā)明的一方面用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的裝置的框圖

圖5示出了根據(jù)本發(fā)明的一方面的用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的工具的界面

圖6是示出了根據(jù)本發(fā)明的一方面的用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的數(shù)據(jù)流圖;

圖7是示出了根據(jù)本發(fā)明的一方面的用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的方法的流程圖。

具體實(shí)施方式

以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作詳細(xì)描述。注意,以下結(jié)合附圖和具體實(shí)施例描述的諸方面僅是示例性的,而不應(yīng)被理解為對(duì)本發(fā)明的保護(hù)范圍進(jìn)行任何限制。

在SQLServer數(shù)據(jù)庫(kù)中,數(shù)據(jù)頁(yè)是其存儲(chǔ)的最基本單位。在SQLServer數(shù)據(jù)庫(kù)中數(shù)據(jù)頁(yè)的大小基本上是固定的,即每個(gè)數(shù)據(jù)頁(yè)的大小都為8KB,8192個(gè)字節(jié)??鄢粢恍┍匾拈_(kāi)銷(xiāo)(如標(biāo)頭信息或者偏移量所占用的空間),一般其可以用來(lái)實(shí)際存儲(chǔ)數(shù)據(jù)的空間只有8000字節(jié)左右。

當(dāng)索引所在頁(yè)面的基于主關(guān)鍵字的邏輯順序和物理順序不匹配時(shí),碎片就產(chǎn)生了。頁(yè)面包含了指向前一個(gè)和后一個(gè)頁(yè)的指針。這樣就形成一個(gè)雙鏈表。理想情況下,數(shù)據(jù)文件中頁(yè)的物理順序會(huì)和邏輯順序匹配。

圖1A和圖1B分別示出了頁(yè)面的物理順序和邏輯順序匹配和不匹配的兩種情況。圖1A中,頁(yè)面1、2、3中皆存儲(chǔ)有數(shù)據(jù),邏輯上相連的頁(yè)面在物理上也相連,因此沒(méi)有碎片產(chǎn)生。然而,如果頁(yè)面2中的數(shù)據(jù)被刪除,如圖1B所示,則邏輯上相連的頁(yè)面為頁(yè)面1、頁(yè)面3,但是它們?cè)谖锢砩鲜遣贿B續(xù)的,即物理順序和邏輯順序不匹配,此時(shí)產(chǎn)生了碎片。

整個(gè)磁盤(pán)的工作性能在物理順序匹配邏輯順序時(shí)將顯著提升。對(duì)某些特定的查詢而言,這將帶來(lái)極佳的性能。當(dāng)物理排序和邏輯排序不匹配時(shí),磁盤(pán)的工作性能會(huì)變得低效,這是因?yàn)榇蓬^必須向前和向后移動(dòng)來(lái)查找索引,而不是只象某個(gè)單一方向來(lái)搜索。碎片會(huì)影響I/O性能,進(jìn)而影響在該數(shù)據(jù)庫(kù)上操作的軟件的性能。

為了對(duì)數(shù)據(jù)庫(kù)的碎片化程度進(jìn)行量化,引入了碎片化率的概念。在本發(fā)明中:

碎片化率F=不連續(xù)頁(yè)數(shù)/非空白頁(yè)數(shù)=不連續(xù)頁(yè)數(shù)/(不連續(xù)頁(yè)數(shù)+連續(xù)頁(yè)數(shù))

這里,首先對(duì)一些概念進(jìn)行解釋。非空白頁(yè)是指存儲(chǔ)有數(shù)據(jù)的頁(yè)面,空白頁(yè)是指數(shù)據(jù)已被刪除從而留空的頁(yè)面。連續(xù)頁(yè)和非連續(xù)頁(yè)皆是針對(duì)非空白頁(yè)而言的,換言之,連續(xù)頁(yè)和非連續(xù)頁(yè)必然首先是非空白頁(yè)。連續(xù)頁(yè)和非連續(xù)頁(yè)的 區(qū)別在于作為連續(xù)頁(yè)的該非空白頁(yè)的相鄰頁(yè)面也是非空白頁(yè),而作為非連續(xù)頁(yè)的該空白頁(yè)的相鄰頁(yè)面是空白頁(yè)。

為了防止重復(fù)計(jì)算碎片化程度,上述“相鄰”頁(yè)面是指單方向上的相鄰,例如前一頁(yè)面或下一頁(yè)面,而非指前一頁(yè)面和下一頁(yè)面兩者。以該“相鄰”頁(yè)面指前一頁(yè)面為例,只要一個(gè)非空白頁(yè)的前一頁(yè)面也是非空白頁(yè),則該非空白頁(yè)即可被定義為連續(xù)頁(yè),而不要求該非空白頁(yè)的前一頁(yè)和下一頁(yè)皆為非空白頁(yè)才被定義為連續(xù)頁(yè)。

圖2是示出了數(shù)據(jù)庫(kù)頁(yè)面的碎片情況的示意圖。如圖2所示,在所有7個(gè)頁(yè)面中,頁(yè)面2、3、4、6、7為非空白頁(yè),而頁(yè)面1、5為空白頁(yè)。以前向相鄰方向的頁(yè)面是否為空白頁(yè)作為判斷依據(jù),在非空白頁(yè)2、3、4、6、7中,非空白頁(yè)2的前一頁(yè)為空白頁(yè),所以非空白頁(yè)2為不連續(xù)頁(yè);非空白頁(yè)3的前一頁(yè)為非空白頁(yè),所以非空白頁(yè)3為連續(xù)頁(yè);非空白頁(yè)4的前一頁(yè)為非空白頁(yè),所以非空白頁(yè)4為連續(xù)頁(yè);非空白頁(yè)6的前一頁(yè)為空白頁(yè),所以非空白頁(yè)6為不連續(xù)頁(yè);非空白頁(yè)7的前一頁(yè)為非空白頁(yè),所以非空白頁(yè)7為連續(xù)頁(yè)。

由此在圖2的環(huán)境中,不連續(xù)頁(yè)數(shù)為2,連續(xù)頁(yè)數(shù)為3,則非空白頁(yè)數(shù)為2+3=5,所以碎片化率F=2/5=40%。

按照上述規(guī)律,通過(guò)定義非空白頁(yè)和空白頁(yè),可以實(shí)現(xiàn)所需數(shù)目的不連續(xù)頁(yè)和連續(xù)頁(yè),從而得到特定的碎片化率。換言之,如果希望得到指定的碎片化率,可以分析得出最少需要多少數(shù)目的不連續(xù)頁(yè)和連續(xù)頁(yè),而連續(xù)頁(yè)可以通過(guò)設(shè)置前一頁(yè)也為非空白頁(yè)的非空白頁(yè)來(lái)定義,不連續(xù)頁(yè)可以通過(guò)設(shè)置前一頁(yè)為空白頁(yè)的非空白頁(yè)來(lái)定義,以此方式可以獲得所需要的最少數(shù)目的不連續(xù)頁(yè)和連續(xù)頁(yè),從而得到該指定碎片化率的數(shù)據(jù)庫(kù)環(huán)境。

假設(shè)碎片化率F=m/x,其中m為實(shí)現(xiàn)該碎片化率所需的最少數(shù)目的不連續(xù)頁(yè)數(shù),(x-m)為所需的連續(xù)頁(yè)數(shù),x為總的非空白頁(yè)數(shù)。為了構(gòu)成一個(gè)不連續(xù)頁(yè),需要設(shè)置一個(gè)非空白頁(yè),以及在該非空白頁(yè)前設(shè)置一個(gè)空白頁(yè),所以每一個(gè)不連續(xù)頁(yè),需要兩個(gè)相鄰的頁(yè)面來(lái)實(shí)現(xiàn),其中一個(gè)為非空白頁(yè),另一個(gè)頁(yè)面為空白頁(yè)使得該非空白頁(yè)成為不連續(xù)頁(yè)。這樣總共最少需要2m+(x-m)=x+m個(gè)頁(yè)面。

以前向相鄰方向的頁(yè)面是否為空白頁(yè)作為判斷依據(jù),可將x+m個(gè)頁(yè)面進(jìn)行分組,其中:

第1,3,…,2m-1頁(yè)被定義為空白頁(yè),

第2,4,…,2m頁(yè)為非空白頁(yè),以及

第2m+1,…,m+x頁(yè)為非空白頁(yè)

以上,第1至第2m頁(yè)中空白頁(yè)和非空白頁(yè)交替排列,從而構(gòu)成了m個(gè)不連續(xù)頁(yè),第2m+1至m+x頁(yè)全部為非空白頁(yè),從而構(gòu)成了x-m個(gè)連續(xù)頁(yè),從而實(shí)現(xiàn)了碎片化率F=m/x。這里的空白頁(yè)非空白頁(yè)分布模式僅僅是一個(gè)示例,只要能夠?qū)崿F(xiàn)所需數(shù)目的連續(xù)頁(yè)和不連續(xù)頁(yè),其他排列方式也是可以的。

例如,若目標(biāo)碎片化率為F=40%=2/5,則可以分析得到所需實(shí)現(xiàn)該碎片化率的最少數(shù)目的不連續(xù)頁(yè)數(shù)m=2,非空白頁(yè)數(shù)x=5,則可以將第1、3頁(yè)定義為空白頁(yè),第2、4定義為非空白頁(yè),第5、6、7頁(yè)定義為非空白頁(yè)。圖3示出了這種空白頁(yè)非空白頁(yè)分布模式。當(dāng)然,這種空白頁(yè)非空白頁(yè)分布模式僅僅是示例性的,還可以有其他空白頁(yè)非空白頁(yè)分布模式,只要能夠?qū)崿F(xiàn)所需數(shù)目的連續(xù)頁(yè)數(shù)和不連續(xù)頁(yè)數(shù)即可,例如圖2中的空白頁(yè)非空白頁(yè)分布模式也是可以的。

數(shù)據(jù)庫(kù)的操作對(duì)象是數(shù)據(jù)庫(kù)表,在實(shí)際數(shù)據(jù)庫(kù)操作中是以表的數(shù)據(jù)的讀寫(xiě)和刪除來(lái)進(jìn)行的。表是數(shù)據(jù)存儲(chǔ)的基本單位,包含了所有的數(shù)據(jù)內(nèi)容。表具有一定的結(jié)構(gòu),包括組成表的各列的名稱和數(shù)據(jù)類型。一個(gè)表可以包括若干行數(shù)據(jù),表中的一行也稱為一行記錄。每行記錄由若干數(shù)據(jù)項(xiàng)構(gòu)成,構(gòu)成記錄的每隔數(shù)據(jù)項(xiàng)成為字段或列。

上述空白頁(yè)和非空白頁(yè)的生成,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫(xiě)刪除操作,而讀寫(xiě)刪除操作是以表中的數(shù)據(jù),例如以一行行記錄的形式來(lái)寫(xiě)入和刪除的。換言之,最終需要知道向數(shù)據(jù)庫(kù)中寫(xiě)入和刪除哪些記錄。由頁(yè)到記錄(即行數(shù)據(jù))的映射是比較簡(jiǎn)單的,只要知道一行記錄的大小l,從而計(jì)算出一頁(yè)能夠存儲(chǔ)多少行記錄即可獲得頁(yè)和記錄之間的對(duì)應(yīng)關(guān)系。

頁(yè)的大小是固定的,每個(gè)數(shù)據(jù)頁(yè)的大小都為8KB,8192個(gè)字節(jié)??鄢粢恍┍匾拈_(kāi)銷(xiāo)(如標(biāo)頭信息或者偏移量所占用的空間),一般其可以用來(lái)實(shí)際 存儲(chǔ)數(shù)據(jù)的空間只有8000字節(jié)。只要知道軟件產(chǎn)品所使用的數(shù)據(jù)庫(kù)表的結(jié)構(gòu),即可知道該表中一行記錄的大小l,從而根據(jù)n=[8000/l]取整算出一頁(yè)能放的行數(shù)n。

以上述空白頁(yè)非空白頁(yè)分布模式為例,其中

第1,3,…,2m-1頁(yè)被定義為空白頁(yè),

第2,4,…,2m頁(yè)為非空白頁(yè),以及

第2m+1,…,m+x頁(yè)為非空白頁(yè)

則由于每一頁(yè)能放n行,則在所有的m+x頁(yè)都存滿記錄后,需要?jiǎng)h除的記錄為:

第1....n行(對(duì)應(yīng)于第1頁(yè)),

第2n+1….3n行(對(duì)應(yīng)于第3頁(yè)),

第(2m-2)n+1......(2m-1)n行(對(duì)應(yīng)于第2m-1頁(yè))。

以上述40%的目標(biāo)碎片化率為例,通過(guò)7頁(yè)即可實(shí)現(xiàn),即通過(guò)7n行記錄的操作即可實(shí)現(xiàn)。然而,往往實(shí)際軟件所需要的測(cè)試環(huán)境可能遠(yuǎn)不止7頁(yè)的大小,因此,根據(jù)軟件測(cè)試環(huán)境實(shí)際需要的大小,可以指定一個(gè)數(shù)據(jù)大小,例如10000行記錄。此時(shí),只要重復(fù)前面7n行記錄的操作即可,即循環(huán)空白頁(yè)非空白頁(yè)分布模式,直至達(dá)到指定的數(shù)據(jù)大小。

圖4是示出了根據(jù)本發(fā)明的一方面用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的裝置100的框圖。

如圖4所示,裝置100可包括UI(用戶接口)模塊101,用戶可通過(guò)該UI模塊101實(shí)現(xiàn)與裝置100的交互,例如用戶可通過(guò)UI模塊101手動(dòng)地設(shè)定適用于軟件產(chǎn)品的數(shù)據(jù)庫(kù)表,或者用戶可通過(guò)UI模塊101直接導(dǎo)入創(chuàng)建該數(shù)據(jù)庫(kù)表的SQL文件。無(wú)論何種方式,皆可獲得該表的表結(jié)構(gòu)。用戶還可通過(guò)UI模塊101手動(dòng)地設(shè)定目標(biāo)碎片化率。另外,用戶還可通過(guò)UI模塊101手動(dòng)指定數(shù)據(jù)大小,例如指定總共需要?jiǎng)?chuàng)建多少行記錄。獲得了表結(jié)構(gòu),也就可以得到一行記錄的大小。

裝置100還可包括分析模塊102和數(shù)據(jù)存取模塊103。分析模塊102可根 據(jù)目標(biāo)碎片化率確定數(shù)據(jù)庫(kù)的數(shù)據(jù)頁(yè)的空白頁(yè)非空白頁(yè)分布模式。在一實(shí)例中,分析模塊102可根據(jù)目標(biāo)碎片率F確定不連續(xù)頁(yè)的數(shù)目m和連續(xù)頁(yè)的數(shù)目x-m,其中目標(biāo)碎片化率F=m/x,以及通過(guò)定義總共m+x個(gè)頁(yè)面中的空白頁(yè)和非空白頁(yè)以獲得m個(gè)不連續(xù)頁(yè)和x-m個(gè)連續(xù)頁(yè),其中每一不連續(xù)頁(yè)是相鄰位置為空白頁(yè)的非空白頁(yè),而每一連續(xù)頁(yè)是相鄰位置為非空白頁(yè)的非空白頁(yè)。該相鄰位置可以是在前位置,或者該相鄰位置可以是在后位置。

在相鄰位置為在前位置時(shí),在這總共m+x個(gè)頁(yè)面中,第1,3,…,2m-1頁(yè)可被定義為空白頁(yè),而第2,4,…,2m頁(yè)可被定義為非空白頁(yè),以及第2m+1,…,m+x頁(yè)可被定義為非空白頁(yè)。

數(shù)據(jù)存取模塊103可根據(jù)適用于目標(biāo)軟件的數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)創(chuàng)建用于該數(shù)據(jù)庫(kù)表的記錄并向數(shù)據(jù)庫(kù)中導(dǎo)入指定行數(shù)的所述記錄,該指定行數(shù)可以由用戶通過(guò)UI模塊101手動(dòng)輸入,例如10000行等等。

分析模塊102進(jìn)而可根據(jù)先前確定的空白頁(yè)非空白頁(yè)分布模式和一行記錄的大小來(lái)確定所導(dǎo)入的指定行數(shù)的這些記錄中的所有需要?jiǎng)h除的記錄。在一實(shí)例中,分析模塊102可根據(jù)一行記錄的大小確定數(shù)據(jù)庫(kù)的每一頁(yè)所能存儲(chǔ)的記錄數(shù)目,根據(jù)該空白頁(yè)非空白頁(yè)模式中的空白頁(yè)的位置和每頁(yè)記錄數(shù)目確定在具有總共m+x個(gè)頁(yè)面的單位中的待刪除記錄,然后在數(shù)據(jù)庫(kù)中循環(huán)重復(fù)具有該總共m+x個(gè)頁(yè)面的單位中的待刪除記錄的位置直至達(dá)到該指定行數(shù),從而確定所有導(dǎo)入記錄的范圍內(nèi)的所有待刪除記錄。

圖5示出了根據(jù)本發(fā)明的一方面的用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的工具的界面。如圖5所示,該工具界面中主要包括DB表設(shè)定區(qū)、參數(shù)設(shè)定區(qū)、執(zhí)行區(qū)、以及狀態(tài)欄四個(gè)部分。

DB設(shè)定區(qū)中:

在表格中設(shè)計(jì)表字段,支持所有SQLServer的類型。

對(duì)于SQLServer定長(zhǎng)的列(比如int、char、Nchar)等,數(shù)據(jù)字節(jié)是默認(rèn)的。對(duì)于不定長(zhǎng)的列(比如varchar、Nvarchar),一般地需要根據(jù)實(shí)際業(yè)務(wù)在“數(shù)據(jù)字節(jié)”列填上合適的值。否則就會(huì)填充到最大字節(jié)數(shù),生成數(shù)據(jù)的碎片化和預(yù)想的有一定誤差。本工具一般適用于行的字節(jié)數(shù)不超過(guò)8K的數(shù)據(jù)。

參數(shù)設(shè)定區(qū):

“進(jìn)行碎片化”選項(xiàng):代表要不要進(jìn)行碎片化操作;

“碎片化率”用以設(shè)置碎片化率,如果“進(jìn)行碎片化”沒(méi)有選中,則無(wú)效;

“數(shù)據(jù)大小”是以數(shù)據(jù)行為單位,比如10000代表初始插入10000行記錄。

執(zhí)行區(qū):

“導(dǎo)入SQL”表示可導(dǎo)入創(chuàng)建表的SQL文件,結(jié)果會(huì)顯示在左邊的DB設(shè)定區(qū)。

“開(kāi)始”按鈕表示創(chuàng)建表、生成數(shù)據(jù)、并且根據(jù)設(shè)置對(duì)創(chuàng)建的DB表進(jìn)行碎片化操作。

狀態(tài)欄部分顯示執(zhí)行進(jìn)程。

圖6是示出了根據(jù)本發(fā)明的一方面的用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的數(shù)據(jù)流圖。

如圖6所示,用戶可通過(guò)工具界面進(jìn)行表的設(shè)定,該表可以是需要測(cè)試的軟件產(chǎn)品所適用的數(shù)據(jù)庫(kù)表。用戶可手動(dòng)地設(shè)定表的每一列,包括每一列的類型和大小等等。用戶也可以通過(guò)直接導(dǎo)入SQL文件來(lái)獲取表結(jié)構(gòu)。用戶還可設(shè)定目標(biāo)碎片化率,以及導(dǎo)入的數(shù)據(jù)大小,例如10000行記錄。

之后,進(jìn)入數(shù)據(jù)分析階段。如果是手動(dòng)設(shè)定表,則可以算出一行記錄的大小l,一行記錄的大小l=∑leni,其中l(wèi)eni為每一字段的大小,相應(yīng)地可以算出一頁(yè)有多少行,即n=|8000/l|。這里的工具適用于一行小于8000字節(jié)的情形。

數(shù)據(jù)分析還包括根據(jù)碎片化率確定空白頁(yè)非空白頁(yè)分布模式。例如根據(jù)碎片化率F=m/x,可以算出要?jiǎng)h除的頁(yè)的編號(hào)Pagedel=1,3,…,2m-1,其中m為不連續(xù)頁(yè)數(shù),x為非空白頁(yè)數(shù),即連續(xù)頁(yè)和非連續(xù)頁(yè)數(shù)目之和。由于一頁(yè)能存儲(chǔ)的記錄為n行,所以待刪除行(即,記錄)Linedel=PageDel*n。相應(yīng)地,Linedel=1…n,2n+1…3n,…,(2m-2)n+1…(2m-1)n。

在數(shù)據(jù)庫(kù)數(shù)據(jù)存取階段,主要分為數(shù)據(jù)初期化和碎片化兩部分。數(shù)據(jù)初期化主要是根據(jù)表結(jié)構(gòu)創(chuàng)建記錄,例如指定行數(shù)的記錄。在用戶定義的導(dǎo)入數(shù)據(jù)大小為10000行的情況下,生成10000行記錄,并將所有的10000行全部存入數(shù)據(jù)庫(kù)中。

碎片化部分則是根據(jù)數(shù)據(jù)分析階段確定的待刪除記錄,將這些待刪除記錄全部刪除,以造成數(shù)據(jù)庫(kù)的碎片化。

圖7是示出了根據(jù)本發(fā)明的一方面的用于在數(shù)據(jù)庫(kù)中創(chuàng)建供軟件測(cè)試用的測(cè)試環(huán)境的方法的流程圖。如圖7所示,該方法可包括以下步驟:

步驟702:根據(jù)目標(biāo)碎片化率確定數(shù)據(jù)庫(kù)的數(shù)據(jù)頁(yè)的空白頁(yè)非空白頁(yè)分布模式;

在一實(shí)例中,可根據(jù)該目標(biāo)碎片率F確定不連續(xù)頁(yè)的數(shù)目m和連續(xù)頁(yè)的數(shù)目x-m,其中目標(biāo)碎片化率F=m/x;然后通過(guò)定義總共m+x個(gè)頁(yè)面中的空白頁(yè)和非空白頁(yè)以獲得m個(gè)不連續(xù)頁(yè)和x-m個(gè)連續(xù)頁(yè),其中每一不連續(xù)頁(yè)是相鄰位置為空白頁(yè)的非空白頁(yè),而每一連續(xù)頁(yè)是相鄰位置為非空白頁(yè)的非空白頁(yè)。

該相鄰位置可以為在前位置,或者該相鄰位置可以為在后位置。當(dāng)相鄰位置為在前位置時(shí),在該總共m+x個(gè)頁(yè)面中,第1,3,…,2m-1頁(yè)可被定義為空白頁(yè),而第2,4,…,2m頁(yè)可為非空白頁(yè),以及第2m+1,…,m+x頁(yè)可為非空白頁(yè)。

步驟704:根據(jù)適用于該軟件的數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)創(chuàng)建用于該數(shù)據(jù)庫(kù)表的記錄并向該數(shù)據(jù)庫(kù)中導(dǎo)入指定行數(shù)的該記錄;

該表結(jié)構(gòu)可以是通過(guò)用戶手動(dòng)定義表來(lái)獲得的,或者可以通過(guò)直接導(dǎo)入SQL文件來(lái)獲得,獲得表結(jié)構(gòu)后即可創(chuàng)建表的記錄,總共可以創(chuàng)建指定行數(shù)的記錄,并將它們存到數(shù)據(jù)庫(kù)中。

步驟706:根據(jù)該空白頁(yè)非空白頁(yè)分布模式和一行該記錄的大小確定所導(dǎo)入的該指定行數(shù)的記錄中的所有待刪除記錄;

在一實(shí)例中,可根據(jù)一行該記錄的大小確定該數(shù)據(jù)庫(kù)的每一頁(yè)所能存儲(chǔ)的記錄數(shù)目;然后根據(jù)該空白頁(yè)非空白頁(yè)模式中的空白頁(yè)的位置和每頁(yè)記錄數(shù)目確定在具有該總共m+x個(gè)頁(yè)面的單位中的待刪除記錄;最后在該數(shù)據(jù)庫(kù)中循環(huán)重復(fù)具有該總共m+x個(gè)頁(yè)面的單位中的待刪除記錄的位置直至達(dá)到該指定行數(shù),從而確定所有導(dǎo)入記錄的范圍內(nèi)的所有待刪除記錄。

盡管為使解釋簡(jiǎn)單化將上述方法圖示并描述為一系列動(dòng)作,但是應(yīng)理解并 領(lǐng)會(huì),這些方法不受動(dòng)作的次序所限,因?yàn)楦鶕?jù)一個(gè)或多個(gè)實(shí)施例,一些動(dòng)作可按不同次序發(fā)生和/或與來(lái)自本文中圖示和描述或本文中未圖示和描述但本領(lǐng)域技術(shù)人員可以理解的其他動(dòng)作并發(fā)地發(fā)生。

示例

以發(fā)明人開(kāi)發(fā)的Atalanta項(xiàng)目為例,適用jobLogInfo表,行大小在540字節(jié)左右,每頁(yè)只能存儲(chǔ)14行記錄。

1)若希望目標(biāo)碎片化率為100%,則F=m/x=1/1=100%,即,m=1,x=1,n=14

在導(dǎo)入指定條數(shù)例如10000條記錄后,代入前文公式,即這10000條記錄中每28條記錄中刪除前14條記錄。

declare@Number int

set@Number=0;

while(@Number<100001)

Begin

delete from dbo.jobLogInfo where autoNumber>@Number and autoNumber<(@Number+15)

set@Number=@Number+28

End

根據(jù)DBCC SHOWCONTIG命令結(jié)果,掃描得到的碎片化率為99.94%,可以看到制做出來(lái)的數(shù)據(jù)是符合碎片化率要求的。

2)若希望目標(biāo)碎片化率為50%,則F=m/x=1/2=100%,即,m=1,x=2,n=14

在導(dǎo)入指定條數(shù)例如10000條記錄后,代入前文公式,即這10000條記錄中每42條記錄中刪除前14條記錄。

declare@Number int

set@Number=0;

while(@Number<100001)

Begin

delete from dbo.jobLogInfo where autoNumber>@Number and autoNumber<(@Number+15)

set@Number=@Number+42

End

根據(jù)DBCC SHOWCONTIG命令結(jié)果,掃描得到的碎片化率為50.20%,可以看到制做出來(lái)的數(shù)據(jù)是符合碎片化率要求的。

3)若希望目標(biāo)碎片化率為33.3%,則F=m/x=1/3=100%,即,m=1,x=3,n=14

在導(dǎo)入指定條數(shù)例如10000條記錄后,代入前文公式,即這10000條記錄中每56條記錄中刪除前14條記錄。

declare@Number int

set@Number=0;

while(@Number<100001)

Begin

delete from dbo.jobLogInfo where autoNumber>@Number and autoNumber<(@Number+15)

set@Number=@Number+56

End

根據(jù)DBCC SHOWCONTIG命令結(jié)果,掃描得到的碎片化率為33.71%,可以看到制做出來(lái)的數(shù)據(jù)是符合碎片化率要求的。

根據(jù)本發(fā)明的方案,可以為軟件測(cè)試提供不同碎片化率的數(shù)據(jù)庫(kù)環(huán)境,以便能夠測(cè)得軟件產(chǎn)品在不同數(shù)據(jù)庫(kù)環(huán)境下的性能,為客戶提供更好的性能參考數(shù)據(jù)。

本說(shuō)明書(shū)中提到的各種裝置、單元、模塊等等可用硬件、固件、軟件及其各種組合來(lái)實(shí)現(xiàn)。這些裝置、單元、模塊等等是實(shí)現(xiàn)為硬件還是軟件將取決于 具體應(yīng)用和加諸于系統(tǒng)的整體設(shè)計(jì)約束。例如,一些功能單元可通過(guò)處理器以及存儲(chǔ)在存儲(chǔ)器中的軟件來(lái)實(shí)現(xiàn)。作為示例,這些處理器、處理器的任何部分、或處理器的任何組合可用微處理器、微控制器、數(shù)字信號(hào)處理器(DSP)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、可編程邏輯器件(PLD)、狀態(tài)機(jī)、門(mén)控邏輯、分立的硬件電路、以及配置成執(zhí)行貫穿本公開(kāi)描述的各種功能的其他合適的處理組件來(lái)實(shí)現(xiàn)。

軟件應(yīng)當(dāng)被寬泛地解釋成意味著指令、指令集、代碼、代碼段、程序代碼、程序、子程序、軟件模塊、應(yīng)用、軟件應(yīng)用、軟件包、例程、子例程、對(duì)象、可執(zhí)行件、執(zhí)行的線程、規(guī)程、函數(shù)等,無(wú)論其是用軟件、固件、中間件、微代碼、硬件描述語(yǔ)言、還是其它術(shù)語(yǔ)來(lái)述及皆是如此。軟件可駐留在計(jì)算機(jī)可讀介質(zhì)上。作為示例,計(jì)算機(jī)可讀介質(zhì)可包括存儲(chǔ)器,諸如磁存儲(chǔ)設(shè)備(例如,硬盤(pán)、軟盤(pán)、磁條)、光盤(pán)(例如,壓縮碟(CD)、數(shù)字多用碟(DVD))、智能卡、閃存設(shè)備(例如,記憶卡、記憶棒、鑰匙型驅(qū)動(dòng)器)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可編程ROM(PROM)、可擦式PROM(EPROM)、電可擦式PROM(EEPROM)、寄存器、或可移動(dòng)盤(pán)。盡管在貫穿本公開(kāi)呈現(xiàn)的各種方面中將存儲(chǔ)器示為與處理器分開(kāi),但存儲(chǔ)器可位于處理器內(nèi)部(例如,高速緩存或寄存器)。

計(jì)算機(jī)可讀介質(zhì)可以實(shí)施在計(jì)算機(jī)程序產(chǎn)品中。作為示例,計(jì)算機(jī)程序產(chǎn)品可包括封裝材料中的計(jì)算機(jī)可讀介質(zhì)。本領(lǐng)域技術(shù)人員將意識(shí)到如何取決于具體應(yīng)用和加諸于整體系統(tǒng)的總體設(shè)計(jì)約束來(lái)最佳地實(shí)現(xiàn)本公開(kāi)中通篇給出的所描述的功能性。

提供對(duì)本公開(kāi)的先前描述是為使得本領(lǐng)域任何技術(shù)人員皆能夠制作或使用本公開(kāi)。對(duì)本公開(kāi)的各種修改對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)都將是顯而易見(jiàn)的,且本文中所定義的普適原理可被應(yīng)用到其他變體而不會(huì)脫離本公開(kāi)的精神或范圍。由此,本公開(kāi)并非旨在被限定于本文中所描述的示例和設(shè)計(jì),而是應(yīng)被授予與本文中所公開(kāi)的原理和新穎性特征相一致的最廣范圍。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
西平县| 岳阳县| 三门峡市| 寿光市| 都兰县| 新邵县| 葫芦岛市| 于都县| 龙里县| 德令哈市| 山西省| 密山市| 岱山县| 灵丘县| 遵义县| 内江市| 阳信县| 肥东县| 黄大仙区| 彰武县| 木里| 洮南市| 三江| 莒南县| 曲靖市| 新绛县| 沅陵县| 洱源县| 石棉县| 城步| 延长县| 都兰县| 封丘县| 安新县| 汽车| 宜城市| 景宁| 香港| 三门县| 南阳市| 遂平县|