基準程序

基準程序

基準程序,是一組用於測量編譯系統和計算機性能的基準測試程序。最初以八da語言寫成,公佈於1984年,目前主要用C語言版本。主要用於測量整數運算的性能。

概述


BuBDhrystone基準程序
Dhrystonebenchmark
DhrystoneJIZhunchengxUDh叮stone基準程序《確叮stonebenchmark)一組用於測量編譯系統和計算機性能的基準測試程序。最初以八da語言寫成,公佈於1984年,目前主要用C語言版本。它主要用於測量整數運算的性能。Dllrystolle用C語言寫的版本共有100條語句,程序中沒有浮點指令,著重於反映操作系統、編譯器等系統軟體的程序特點。Dhrystone程序測試的結果用1〕IPS(得到多少個Dhrystone循環每秒)來反映機器的性能,現在通常把、叭Xll/780機運行Dh巧stone程序的測試結果作為1,其它機器運行Dhrystone程序的結果與它作比較,Dhrystone值越大,性能越好。Dhryst~版本更新較快,使用時應加註意。

基準程序準備


在開始性能基準程序測試之前,完成應用程序對其運行的資料庫的邏輯設計。設置並填充表、視圖和索引。規範化表,綁定應用程序程序包並用實際數據填寫表。
您還應該已確定了資料庫的最終物理設計。將資料庫管理器對象放在其最終磁碟位置,接大小排列日誌文件,以確定工作文件和備份的位置,並測試備份過程。此外,檢查程序包,以確保在可能時啟用性能選項,如行分塊。
您應該已在應用程序編程和測試階段達到這樣一個時候,即,將允許您創建基準程序。儘管在基準程序測試期間,可能會暴露應用程序的實際限制,但是,此處描述的基準程序的目的是測量性能,而不是檢測故障或異常結束。
基準程序測試程序需要在儘可能接近於最終生產環境的條件下運行。理論上,它應該在具有相同內存和磁碟配置的同一種型號的伺服器上運行。當該應用程序最終將涉及大量用戶和大量數據時,這一點尤其重要。操作系統本身和基準程序直接使用的任何通信或文件服務工具也應已調整好。
確保使用生產大小的資料庫運行基準程序測試。單個SQL語句返回的數據量以及需要的排序量應與在生產環境中相同。此規則確保應用程序將測試典型的內存需求。
要進行基準程序測試的SQL語句應該是典型的或惡劣的,如下所述:
典型的SQL
典型的SQL包括在對應用程序的典型操作進行基準程序測試期間執行的那些語句。選擇的語句將取決於應用程序的性質。例如,數據輸入應用程序可能要測試INSERT語句,而銀行業務事務可能會測試FETCH、UPDATE和多個INSERT。考慮選擇平均值的語句的執行頻率和處理的數據量。如果該數據量過大,則即使這些語句是典型的SQL語句,也將它們歸為惡劣類別考慮。
惡劣的SQL
歸入此類別的語句包括:
頻繁執行的語句。
處理大量數據的語句。
與時間密切相關的語句。
例如,當接收到客戶的電話時運行的應用程序,而當客戶等待時,必須運行語句以檢索和更新客戶信息。
要連接最大數量的表的語句,或含有應用程序中最複雜的SQL的語句。
例如,銀行業務應用程序,它針對所有不同類型的帳戶生成每月活動的綜合客戶報表。一個公用表可能會列示客戶地址和帳戶;但是,還必須合併其他幾個表,以處理和集成所有需要的帳戶事務信息。處理一個帳戶所需的工作量乘以同一個周期內必須處理的幾千個帳戶,在這種情況下,可能節省的時間迫使提高性能要求。
有不良訪問路徑的語句,如不經常執行的且為涉及的表創建的索引不支持的語句。
耗時長的語句。
只在應用程序初始化時才執行但有不適當的資源需求的語句。
例如,生成當天必須處理的帳戶工作列表的應用程序。當啟動該應用程序時,第一個主SQL語句產生7路合併,這為此應用程序用戶負責的所有帳戶創建了一個非常大的列表。該語句可能每天只運行幾次,但是如果未將它調整好就會耗費數分鐘來運行。
基準程序測試
基準程序測試是應用程序開發生命周期的一個常規部分。它是由應用程序開發人員和資料庫管理員DBA)等小組成員參與的工作,應對您的應用程序執行它,以確定當前性能並提高性能。如果已將應用程序代碼編寫得儘可能效率高,那麼要想再改善性能,可調整資料庫和資料庫管理器配置參數。甚至可以調整應用程序參數來更好地滿足應用程序的需求。
運行不同類型的基準程序測試來發現特定種類的信息:
每秒事務數基準程序確定在某些有限的實驗室條件下資料庫管理器的吞吐量能力。
應用程序基準程序測試與生產條件接近的條件下的相同吞吐量能力。
調整配置參數的基準程序測試基於這些“現實世界”條件,並需要使用各種參數值反覆運行從您的應用程序中獲取的SQL,直到應用程序運行得儘可能有效率為止。
此處所描述的基準程序測試方法基於調整配置參數。但是,該基本技術同樣可以用於調整影響性能的其它因素,如:
SQL語句
索引
表空間配置
應用程序代碼
硬體配置
基準程序測試有助於了解資料庫管理器在各種條件下是如何響應的。可以創建多個方案來測試死鎖處理、實用程序性能、裝入數據的不同方法以及當添加更多的用戶時事務執行速率的特徵,甚至還可測試使用該產品的新發行版對應用程序產生的影響。

基準程序測試方法


基準程序測試基於可重複的環境,因此在相同條件下運行的相同測試將產生可以合理比較的結果。
可通過在一個正常的環境中運行測試應用程序來開始基準程序測試。隨著您縮小性能問題的範圍,可以開發專用的測試用例,以限制正測試的功能的作用域。這些專用測試用例不需要模擬整個應用程序來獲取有價值的信息。從簡單的評估開始,僅在必要時才增加複雜程度。
好的基準程序測試或評估應包括以下特徵:
測試是可重複的。
測試的每次迭代在相同系統狀態下開始。
除非方案包括系統中執行的一定量的其它活動,否則,系統中的其它功能或應用程序是不活動的。
注:
已啟動的應用程序即使是在最小化或空閑時也會佔用內存。這樣增大了頁面調度將使基準程序的運行結果產生偏差和違反可重複性規則的概率。
用於基準程序測試的硬體和軟體與您的生產環境匹配。
對於基準程序測試,創建一個方案,然後在此方案中創建幾次應用程序,以在每次運行期間捕獲關鍵信息。在每次運行之後捕獲關鍵信息在確定可以提高應用程序和資料庫的性能的更改方面具有主要的重要性。

基準程序測試創建


當設計和實現基準程序時,考慮各種因素。由於該程序的主要目的是模擬用戶應用程序,所以程序的總體結構是變化的。可以將整個應用程序用作基準程序,只需引入某種方法來對要分析的SQL語句進行計時。對於大的或複雜的應用程序,只包括包含重要語句的塊可能更實用。
要測試特定SQL語句的性能,可以將這些語句以及必需的CONNECT、PREPARE、OPEN和其它語句以及計時機制一起單獨包括在該基準程序中。
另一個要考慮的因素是要使用的基準程序的類型。一個選擇是在一個時間間隔內重複運行一組SQL語句。執行的語句數量與此時間間隔的比率就是該應用程序的吞吐量。另一個選擇是只確定執行個別SQL語句所需的時間。
對於所有基準程序測試,需要一個高效率的計時系統來計算個別SQL語句或整個應用程序的運行經過時間。要模擬個別SQL語句單獨執行所在的應用程序,重點是跟蹤CONNECT、PREPARE和COMMIT語句的時間。但是,對於處理多個不同語句的程序,或許只有單個CONNECT或COMMIT是需要的,而可能會優先測試個別語句的執行時間。
儘管每個查詢的經過時間是性能分析中的一個重要因素,但可能不必暴露瓶頸。例如,有關CPU使用、鎖定和緩衝池I/O的信息可能顯示該應用程序達到I/O限制,而不是CPU的使用達到滿負荷。基準程序應該允許您獲取此類數據,以便在需要時進行更詳細的分析。
並非所有的應用程序都將從查詢檢索到的整組行發送至某個輸出設備。例如,整個回答集可能是另一個程序的輸入,因此,不發送第一個應用程序的任何行作為輸出。格式化屏幕輸出的數據常常產生很高的CPU成本,且可能無法反映用戶需要。要提供準確的模擬,基準程序應該反映特定應用程序的行處理。如果將行發送至輸出設備,則效率不高的格式化可能消耗大量的CPU處理時間,並會誤報SQL語句本身的實際性能。
db2batch基準程序工具:在您的實例sqllib目錄的bin子目錄中提供了一個基準程序工具(db2batch)。此工具使用許多準則,以用於創建基準程序。此工具可以從平面文件或標準輸入讀取SQL語句,動態地描述和準備這些語句,並返回回答集。它還允許控制回答集的大小以及從此回答集發送至輸出設備的行數。
可以指定提供的與性能相關的信息的級別,包括經過時間、CPU和緩衝池的使用情況、鎖定和從資料庫監視器收集的其它統計信息。如果正在對一組SQL語句進行計時,則db2batch也匯總性能結果,並提供算術和幾何平均數。對於語法和選項,在命令行上輸入db2batch-h。
此基準程序測試工具也有一個CLI選項。使用此選項,可以指定高速緩存的大小。在下列示例中,db2batch以CLI方式運行,其高速緩存大小為30個語句:
db2batch-dsample-fdb2batch.sql-cli30可以在遠程運行db2batch。若使用基準程序工具的
-f或
-o命令參數,則:
控制選項
perf_detail和
-p(指定要返回的性能信息級別)當設置為大於1時不受支持(在遠程運行時)。
除了這兩項以外,
perf_detail和
-p在所有“DB2(R)通用資料庫”平台上都受支持且有效。

基準程序測試執行


對於一種類型的資料庫基準程序,選擇一個配置參數並使用該參數的不同值運行該測試,直至達到最佳效果。單個測試應該包括通過相同參數值的多次迭代(例如,20或30次)來執行該應用程序以獲取平均計時,這可以更清楚地顯示參數更改所產生的影響。
當運行基準程序時,應該將第一次迭代(稱為熱身運行)視為不同於後續迭代(稱為正常運行)的一種特殊情況。因為熱身運行包括某些啟動活動(例如,初始化緩衝池),因此,花費的時間比正常運行要稍微長一些。雖然來自熱身運行的信息可能實際上是有效的,但從統計角度來說是無效的。當計算一組特定參數值的平均計時或CPU時,僅使用來自正常運行的結果。
可以考慮使用“配置顧問程序”來創建基準程序的熱身運行。“配置顧問程序”問到的問題可以涉及到在進行基準程序活動期間為正常運行調整環境配置時要考慮的若干事宜。可以從“控制中心”或通過帶適當選項執行db2自動配置命令來啟動“配置顧問程序”。
如果基準程序測試使用單個查詢,則通過刷新緩衝池來確保最小化先前查詢的潛在影響。要刷新緩衝池,讀取與查詢無關的大量的頁來填充該緩衝池。
在完成單組參數值的迭代之後,可以更改單個參數。但是,在每個迭代之間,執行下列任務,以便將基準程序的環境復原至它的初始狀態:
.如果由於測試的需要更新了目錄統計信息,則要確保每個迭代都使用相同的統計值。
如果測試更新了測試中使用的數據,則此數據必須保持一致。為此:
使用RESTORE實用程序來複原整個資料庫。資料庫的備份副本包含它的先前狀態,即已準備好進行下次測試。
使用IMPORT或LOAD實用程序來複原該數據的導出副本。此方法只允許復原受影響的數據。應對包含此數據的表和索引運行REORG和RUNSTATS實用程序。
要將應用程序返回至它的原始狀態,將應用程序重新綁定至資料庫。
概括起來,遵循以下步驟或迭代來對資料庫應用程序執行基準測試:
第一步
除下列參數外,將資料庫和資料庫管理器的其他調整參數保持為它們的預設值:
對於測試的工作負載和目標很重要的那些參數。(您很少有足夠的時間執行基準程序測試以調整所有參數,所以可能需要使用某些參數的最佳推測值並從該點上開始調整。)
日誌大小,它應在應用程序的單元測試和系統測試期間確定。
為了使應用程序能夠運行而必須更改的參數(即,為防止出現語句堆內存用完這類事件而導致產生負的SQL返回碼所需的更改)。
對此初始情況運行一組迭代,然後計算平均計時或CPU。
第二步
選擇一個且唯一一個調整參數來測試,並更改它的值。
第三步
運行另一組迭代,然後計算平均計時或CPU。
第四步
根據基準程序測試的結果,執行下列其中一項操作:
如果性能提高,則更改同一個參數的值並返回至第三步。繼續更改此參數,直到產生最大效益為止。
如果性能降低或保持不變,則將該參數返回至其原來的值,返回至第二步,並選擇新的參數。重複此過程,直到所有的參數都已被測試為止。
注:
如果您想將該性能結果繪製成圖表,則要查找曲線開始上升或下降的點。
可以編寫一個驅動程序,以幫助您進行基準程序測試。可使用REXX之類的語言來編寫此驅動程序,或者對於基於UNIX的平台,使用shell腳本。
此驅動程序將執行基準程序,將適當的參數傳送給它,通過多次迭代驅動該測試,將環境復原至一致的狀態,使用新的參數值設置下一個測試,以及收集/合併測試結果。這些驅動程序可以很靈活,它們可用於運行一整套基準程序測試,分析結果,並為給定測試提供一個最終和最優參數值報告。

基準程序評測方法


基準程序評測方法是微處理器性能評價的重要尺度。本文在介紹基準測試程序的基礎上,重點對CPU基準測試、嵌入式處理器和媒體處理器基準程序測試進行了分析,並給出了Tensilica微處理器與其它幾款當今重要的微處理器的EEMBC和BDTI評測結果。
嵌入式和媒體基準測試程序包括edn嵌入式微處理器測試程序組EEMBC(嵌入式微處理器基準測試協會)、BDTI基準測試程序組、MediaBench測試程序組以及MiBench基準測試程序組。其中,EEMBC、BDTI已經稱為嵌入式處理器和媒體處理器評測事實上的標準。
EEMBC主要是開發和驗證現實世界的基準測試和基準測試得分,幫助設計師選擇與系統適用的嵌入式處理器。提交EEMBC進行基準測試的所有處理器都需要進行代表不同載荷和性能參數的多項測試,如通信、網路、消費、辦公自動化、汽車/工業、嵌入式Java和微控制器相關的應用。EEMBC的成員包括領先的半導體、IP供應商和編譯器公司,EEMBC建立了基準測試標準,並通過EEMBC驗證實驗室(ECL)提供通過了驗證的基準測試結果。
BDTI基準測試程序組由BDTI(BerkeleyDesignTechnology)公司開發,該公司從1991年開始致力於數字信號處理器的評測工作。BDTI提供業界標準的BDTI基準測試程序,用於測試DSP處理器。BDTI還開發了用戶定製的基準測試程序,專門用於某些應用領域的測試。BDTI測試程序包括FIR濾波器、IIR濾波器、FFT、向量點積和Viterbi解碼。
MediaBench基準測試程序主要來自圖像處理、通信和DSP應用領域。例如JPEG、MPEG、GSM、G.721話音壓縮、Ghostscript和ADPCM。JPEG主要是圖像壓縮,MPEG用於視頻傳輸中的編解碼。Ghostscript是PostScript語言解釋器,ADPCM用於自適應差分脈衝編碼調整。
MiBench是一個自由的嵌入式基準測試程序組,同EEMBC類似。由於EEMBC不對專用研究人員自由開發,故密執安的研究人員對35個嵌入式程序進行編譯,形成了MiBench基準測試程序組。以EEMBC為模型,MiBench分成6類:汽車電子、消費類電子、網路、辦公自動化、信息安全和電信。所有程序均採用C語言寫成。MiBench可以和任何嵌入式平台介面,因為所有測試均是源碼開放的。

db2batch測試示例


以下示例說明可以如何對輸入文件db2batch.sql使用db2batch:
圖20.樣本基準程序輸入文件:db2batch.sql
--db2batch.sql
--#SETPERF_DETAIL3--#SETROWS_OUT5
--Thisquerylistsemployees,thenameoftheirdepartment
--andthenumberofactivitiestowhichtheyareassignedfor
--employeeswhoareassignedtomorethanoneactivitylessthan
--full-time.
--#COMMENTQuery1
selectlastname,firstnme,
deptname,count(*)asnum_act
fromemployee,department,emp_act
whereemployee.workdept=department.deptnoand
employee.empno=emp_act.empnoand
emp_act.emptime2;
--#SETPERF_DETAIL1--#SETROWS_OUT5
--#COMMENTQuery2
selectlastname,firstnme,
deptname,count(*)asnum_act
fromemployee,department,emp_act
whereemployee.workdept=department.deptnoand
employee.empno=emp_act.empnoand
emp_act.emptime2;圖22.db2batch的樣本輸出(第一部分)
LASTNAMEFIRSTNMEDEPTNAMENUM_ACT
JEFFERSONJAMESADMINISTRATIONSYSTEMS3
JOHNSONSYBILADMINISTRATIONSYSTEMS4
NICHOLLSHEATHERINFORMATIONCENTER4
PEREZMARIAADMINISTRATIONSYSTEMS4
SMITHDANIELADMINISTRATIONSYSTEMS7
*訪存了5行,有5行輸出。
*耗用時間是:0.046319秒
監視信息
實例名=dyuping
節點名=
節點類型=帶有本地客戶機的資料庫伺服器
快照時間戳記=02/02/200616:03:18.188050資料庫管理器快照
DB2實例中的資料庫分區數=1
資料庫管理器狀態=活動
產品名=DB2v9.1.0.0
服務級別=n060128
已分配的專用排序堆=0
專用排序堆高水位標記=0
后閾值排序數=0
已請求的管道排序數=1
已接受的管道排序數=1
資料庫管理器啟動時間戳記=02/01/200619:07:35.301696
上次複位時間戳記=02/02/200616:03:18.138248
與資料庫管理器的遠程連接數=4
資料庫管理器內正在執行的遠程連接數=0
本地連接數=2
資料庫管理器內正在執行的本地連接數=0
活動本地資料庫數=2
已註冊代理程序的高水位標記=9
正在等待標記的代理程序的高水位標記=0
已註冊的代理程序數=9
正在等待標記的代理程序數=0
空閑代理程序數=0
已落實的專用內存(以位元組計)=1572864
資料庫分區號0的開關列表
緩衝池活動信息(BUFFERPOOL)=ON02/02/200616:03:18.071139
鎖定信息(LOCK)=ON02/02/200613:45:50.679836
排序信息(SORT)=ON02/02/200616:03:18.071143
SQL語句信息(STATEMENT)=ON02/02/200616:03:18.071136
表活動信息(TABLE)=ON02/02/200616:03:18.071138
獲取時間戳記信息(TIMESTAMP)=ON02/01/200619:07:35.301696
工作單元信息(UOW)=ON02/02/200616:03:18.071133
從存儲池中分配的代理程序數=1578
從空存儲池中創建的代理程序數=10
從另一個應用程序中竊用的代理程序數=0
協調代理程序的高水位標記=9
最大代理程序溢出數=0
堆閾值超出后的散列連接數=0
網關連接總數=0
當前的網關連接數=0
等待主機應答的網關連接數=0
等待客戶機請求的網關連接數=0
竊用的網關連接池代理程序=0資料庫管理器的內存使用情況:
內存池類型=資料庫監視器堆
當前大小(以位元組計)=655360
高水位標記(以位元組計)=655360
已配置的大小(以位元組計)=393216
內存池類型=其他內存
當前大小(以位元組計)=8323072
高水位標記(以位元組計)=8323072
已配置的大小(以位元組計)=45088768
應用程序快照
應用程序句柄=339
應用程序狀態=UOW正在等待
狀態更改時間=02/02/200616:03:18.185731
應用程序代碼頁=819
應用程序國家或地區代碼=1
DUOW相關標記=*LOCAL.dyuping.060202210317
應用程序名稱=db2batch
應用程序標識=*LOCAL.dyuping.060202210317
序號=00001
TP監視器客戶機用戶標識=
TP監視器客戶機工作站名=
TP監視器客戶機應用程序名=DB2BATCH
TP監視器客戶機記帳字元串=
CONNECT授權標識=DYUPING
客戶機登錄標識=dyuping
客戶機的配置NNAME=honcho
客戶機資料庫管理器產品標識=SQL09010
客戶機應用程序的進程標識=2543638
客戶機應用程序的平台=AIX64BIT
客戶機通信協議=本地客戶機
資料庫名稱=SAMPLE
資料庫路徑=/home/dyuping/dyuping/NODE0000/SQL00003/
客戶機資料庫別名=SAMPLE
輸入資料庫別名=SAMPLE
授予的最高許可權級別=
直接DBADM許可權
直接CREATETAB許可權
直接BINDADD許可權
直接CONNECT許可權
直接CREATE_NOT_FENC許可權
直接LOAD許可權
直接IMPLICIT_SCHEMA許可權
直接CREATE_EXT_RT許可權
直接QUIESCE_CONN許可權
間接SYSADM許可權
間接CREATETAB許可權
間接BINDADD許可權
間接CONNECT許可權
間接IMPLICIT_SCHEMA許可權協調資料庫分區號=0
協調代理程序進程或線程標識=1626226
與應用程序相關的代理程序數=1
連接請求開始時間戳記=02/02/200616:03:17.581904
連接請求完成時間戳記=02/02/200616:03:18.045845
應用程序空閑時間=0
入站通信地址=*LOCAL.dyuping
上次複位時間戳記=02/02/200616:03:18.138248
竊用的代理程序數=0
正在等待鎖定的代理程序數=0
相關的最大代理程序數=1
應用程序代理程序運行時的優先順序=0
優先順序類型=動態
應用程序掛起的鎖定數=3
自連接以來鎖定等待數=0
應用程序等待鎖定的時間(毫秒)=0
檢測到的死鎖數=0
鎖定升級數=0
互斥鎖定升級數=0
自連接以來鎖定超時次數=0
UOW等待鎖定的總時間(毫秒)=0
總排序數=1
總排序時間(毫秒)=0
總排序溢出數=0
複製到擴充存儲器的數據頁數=0
複製到擴充存儲器的索引頁數=0
從擴充存儲器複製的數據頁數=0
從擴充存儲器複製的索引頁數=0
緩衝池數據邏輯讀取數=43
緩衝池數據物理讀取數=10
緩衝池臨時數據邏輯讀取數=0
緩衝池臨時數據物理讀取數=0
緩衝池數據寫入數=0
緩衝池索引邏輯讀取數=7
緩衝池索引物理讀取數=1
緩衝池臨時索引邏輯讀取數=0
緩衝池臨時索引物理讀取數=0
緩衝池索引寫入數=0
緩衝池xda邏輯讀取數=0
緩衝池xda物理讀取數=0
緩衝池臨時xda邏輯讀取數=0
緩衝池臨時xda物理讀取數=0
緩衝池xda寫入數=0
緩衝池總計讀取時間(毫秒)=9
緩衝池總計寫入時間(毫秒)=0
等待預取的時間(毫秒)=0
未讀取的預取頁數=0
直接讀取數=22
直接寫入數=0
直接讀取請求數=5
直接寫入請求數=0
直接讀取耗用時間(毫秒)=7
直接寫入耗用時間(毫秒)=0自上次落實以來的SQL請求數=7
落實語句數=0
回滾語句數=0
嘗試的動態SQL語句數=2
嘗試的靜態SQL語句數=0
失敗的語句操作數=0
已執行的SQLSelect語句數=1
已執行的Xquery語句數=0
已執行的Update/Insert/DELETE語句數=0
已執行的DDL語句數=0
內部自動重新綁定次數=0
刪除的內部行數=0
插入的內部行數=0
更新的內部行數=0
內部落實數=0
內部回滾數=0
死鎖導致的內部回滾數=0
嘗試的綁定/預編譯數=0
刪除的行數=0
插入的行數=0
更新的行數=0
選擇的行數=5
讀取的行數=129
已寫的行數=0已用的UOW日誌空間(以位元組計)=0
上一個UOW完成時間戳記=02/02/200616:03:18.045845
上次完成的uow的耗用時間(秒。毫秒)=0.000000
UOW開始時間戳記=02/02/200616:03:18.072281
UOW停止時間戳記=12/31/196919:00:00.000000
UOW完成狀態=0
打開遠程游標數=0
打開分塊的遠程游標數=0
被拒絕的塊遠程游標請求數=0
已接受的塊遠程游標請求數=2
打開本地游標數=0
打開分塊的本地游標數=0
代理程序使用的用戶CPU時間總計(秒)=0.020000
代理程序使用的系統CPU時間總計(秒)=0.010000
主機執行耗用時間=0.045308
程序包高速緩存查詢數=1
程序包高速緩存插入數=1
應用程序節查詢數=2
應用程序節插入數=1
目錄高速緩存查詢數=6
目錄高速緩存插入數=3
目錄高速緩存溢出數=0
目錄高速緩存堆已滿=0
目錄高速緩存高水位標記=0工作空間信息
共享高水位標記=0
共享溢出總數=0
共享節插入總數=0
共享節查詢總數=0
專用高水位標記=25848
專用溢出總數=0
專用節插入總數=1
專用節查詢總數=1
散列連接數=2
散列循環數=0
散列連接溢出數=0
小散列連接溢出數=0
語句類型=動態SQL語句
語句=結束
節號=4
應用程序創建者=NULLID
程序包名稱=SYSSN200
一致性標記=SYSLVL01
程序包版本標識=
游標名稱=SQL_CURSN200C4
語句資料庫分區號=0
語句開始時間戳記=02/02/200616:03:18.178967
語句停止時間戳記=02/02/200616:03:18.185705
上次完成的stmt的耗用時間(秒。毫秒)=0.000124
語句用戶CPU時間總計=0.010000
語句系統CPU時間總計=0.000000
以timerons計的SQL編譯器成本估計=87
SQL編譯器基數估計=13
請求的并行度=1
使用語句的代理程序數=0
為語句創建的子代理程序數=1
語句排序數=1
總排序時間=0
排序溢出數=0
讀取的行數=116
已寫的行數=0
刪除的行數=0
更新的行數=0
插入的行數=0
訪存的行數=5
緩衝池數據邏輯讀取數=4
緩衝池數據物理讀取數=1
緩衝池臨時數據邏輯讀取數=0
緩衝池臨時數據物理讀取數=0
緩衝池索引邏輯讀取數=0
緩衝池索引物理讀取數=0
緩衝池臨時索引物理讀取數=0
緩衝池xda邏輯讀取數=0
緩衝池xda物理讀取數=0
緩衝池臨時xda邏輯讀取數=0
緩衝池臨時xda物理讀取數=0
分塊游標=YES
動態SQL語句文本:selectlastname,firstnme,
deptname,count(*)asnum_actfromemployee,department,emp_act
whereemployee.workdept=department.deptnoand
employee.empno=emp_act.empnoand
emp_act.emptime2
代理程序/線程標識=1626226
代理程序的內存使用情況:
內存池類型=其他內存
當前大小(以位元組計)=65536
高水位標記(以位元組計)=65536
已配置的大小(以位元組計)=4294967296
內存池類型=應用程序堆
當前大小(以位元組計)=262144
高水位標記(以位元組計)=327680
已配置的大小(以位元組計)=1245184
內存池類型=應用程序控制堆
當前大小(以位元組計)=65536
高水位標記(以位元組計)=65536
已配置的大小(以位元組計)=655360
資料庫快照
資料庫名稱=SAMPLE
輸入資料庫別名=SAMPLE
資料庫狀態=活動
目錄資料庫分區號=0
目錄網路節點名=
運行在資料庫伺服器上的操作系統=AIX64BIT
資料庫位置=本地
第一個資料庫連接時間戳記=02/02/200616:03:17.581904
上次複位時間戳記=02/02/200616:03:18.138248
上次備份時間戳記=12/31/196919:00:00.000000
用於連接的高水位標記=4
應用程序連接數=4
輔助連接總數=3
當前連接的應用程序數=4
資料庫管理器內當前正在執行的應用程序數=0
與應用程序相關的代理程序數=3
與應用程序相關的最大代理程序數=4
最大協調代理程序數=4
當前掛起的鎖定數=3
鎖定等待數=0
資料庫等待鎖定的時間(毫秒)=0
正在使用的鎖定列表內存(以位元組計)=5472
檢測到的死鎖數=0
鎖定升級數=0
互斥鎖定升級數=0
當前正在等待鎖定的代理程序數=0
鎖定超時=0
不確定事務數=0
已分配的專用排序堆總數=0
已分配的共享排序堆總數=0
共享排序堆高水位標記=59
總排序數=1
總排序時間(毫秒)=0
排序溢出數=0
活動排序數=0
緩衝池數據邏輯讀取數=43
緩衝池數據物理讀取數=10
緩衝池臨時數據邏輯讀取數=0
緩衝池臨時數據物理讀取數=0
非同步池數據頁讀取數=0
緩衝池數據寫入數=0
非同步池數據頁寫入數=0
緩衝池索引邏輯讀取數=7
緩衝池索引物理讀取數=1
緩衝池臨時索引邏輯讀取數=0
緩衝池臨時索引物理讀取數=0
非同步池索引頁讀取數=0
緩衝池索引寫入數=0
非同步池索引頁寫入數=0
緩衝池xda邏輯讀取數=0
緩衝池xda物理讀取數=0
緩衝池臨時xda邏輯讀取數=0
緩衝池臨時xda物理讀取數=0
緩衝池xda寫入數=0
非同步池xda頁讀取數=0
非同步池xda頁寫入數=0
緩衝池總計讀取時間(毫秒)=9
緩衝池總計寫入時間(毫秒)=0
耗用的非同步讀取總計時間=0
耗用的非同步寫總計時間=0
非同步數據讀取請求數=0
非同步索引讀取請求數=0
非同步xda讀取請求數=0
LSN間隔清除程序觸發器=0
臟頁面偷取清除程序觸發器=0
臟頁面閾值清除程序觸發器=0
等待預取的時間(毫秒)=0
未讀取的預取頁數=0
直接讀取數=22
直接寫入數=0
直接讀取請求數=5
直接寫入請求數=0
直接讀取耗用時間(毫秒)=7
直接寫入耗用時間(毫秒)=0
關閉的資料庫文件數=0
複製到擴充存儲器的數據頁數=0
複製到擴充存儲器的索引頁數=0
從擴充存儲器複製的數據頁數=0
從擴充存儲器複製的索引頁數=0
向量IO=未收集
來自向量IO的頁數=未收集
塊IO=未收集
來自塊IO的頁數=未收集
物理頁映射=未收集主機執行耗用時間=0.045308
嘗試的邏輯語句數=0
嘗試的回滾語句數=0
嘗試的動態語句數=2
嘗試的靜態語句數=0
失敗的語句操作數=0
已執行的SQLSelect語句數=1
已執行的Xquery語句數=0
已執行的Update/Insert/Delete語句數=0
已執行的DDL語句數=0
內部自動重新綁定次數=0
刪除的內部行數=0
插入的內部行數=0
更新的內部行數=0
內部落實數=0
內部回滾數=0
死鎖導致的內部回滾數=0
刪除的行數=0
插入的行數=0
更新的行數=0
選擇的行數=5
讀取的行數=129
嘗試的綁定/預編譯數=0
可用於資料庫的日誌空間(以位元組計)=20400000
資料庫使用的日誌空間(以位元組計)=0
已用的最大輔助日誌空間(以位元組計)=0
已用的最大總計日誌空間(以位元組計)=0
當前已分配的輔助日誌數=0
已讀取的日誌頁數=0
已寫入的日誌頁數=0
存放最舊事務的應用程序標識=339
程序包高速緩存查詢數=1
程序包高速緩存插入數=1
程序包高速緩存溢出數=0
程序包高速緩存高水位標記(以位元組計)=720896
應用程序節查詢數=2
應用程序節插入數=1
目錄高速緩存查詢數=6
目錄高速緩存插入數=3
目錄高速緩存溢出數=0
目錄高速緩存堆已滿=0
目錄高速緩存高水位標記=65536
工作空間信息
共享高水位標記=0
相應的共享溢出數=0
共享節插入總數=0
共享節查詢總數=0
專用高水位標記=25848
相應的專用溢出數=0
專用節插入總數=1
專用節查詢總數=1
散列連接數=2
散列循環數=0
散列連接溢出數=0
小散列連接溢出數=0資料庫的內存使用情況:
內存池類型=備份/復原/實用程序堆
當前大小(以位元組計)=65536
高水位標記(以位元組計)=65536
已配置的大小(以位元組計)=20512768
內存池類型=程序包高速緩存堆
當前大小(以位元組計)=720896
高水位標記(以位元組計)=720896
已配置的大小(以位元組計)=4294967296
內存池類型=目錄高速緩存堆
當前大小(以位元組計)=65536
高水位標記(以位元組計)=65536
已配置的大小(以位元組計)=4294967296
內存池類型=緩衝池堆
當前大小(以位元組計)=4325376
高水位標記(以位元組計)=4325376
已配置的大小(以位元組計)=4294967296
內存池類型=緩衝池堆
當前大小(以位元組計)=589824
高水位標記(以位元組計)=589824
已配置的大小(以位元組計)=4294967296
內存池類型=緩衝池堆
當前大小(以位元組計)=327680
高水位標記(以位元組計)=327680
已配置的大小(以位元組計)=4294967296
內存池類型=緩衝池堆
當前大小(以位元組計)=196608
高水位標記(以位元組計)=196608
已配置的大小(以位元組計)=4294967296
內存池類型=緩衝池堆
當前大小(以位元組計)=131072
高水位標記(以位元組計)=131072
已配置的大小(以位元組計)=4294967296
內存池類型=共享排序堆
當前大小(以位元組計)=65536
高水位標記(以位元組計)=327680
已配置的大小(以位元組計)=20512768
內存池類型=鎖管理器堆
當前大小(以位元組計)=655360
高水位標記(以位元組計)=655360
已配置的大小(以位元組計)=720896
內存池類型=資料庫堆
當前大小(以位元組計)=4653056
高水位標記(以位元組計)=4653056
已配置的大小(以位元組計)=8978432
內存池類型=其他內存
當前大小(以位元組計)=196608
高水位標記(以位元組計)=196608
已配置的大小(以位元組計)=4294967296
圖23.db2batch的樣本輸出(第二部分)
4.Figure4
Changethefollowing--#SETPERF_DETAIL1ROWS_OUT5
Query2
Statementnumber:2
selectlastname,firstnme,
deptname,count(*)asnum_act
fromemployee,department,emp_act
whereemployee.workdept=department.deptnoand
employee.empno=emp_act.empnoand
emp_act.emptime<1
groupbylastname,firstnme,deptname
havingcount(*)<=2
LASTNAMEFIRSTNMEDEPTNAMENUM_ACT
GEYERJOHNSUPPORTSERVICES2
GOUNOTJASONSOFTWARESUPPORT2
HAASCHRISTINESPIFFYCOMPUTERSERVICEDIV.2
JONESWILLIAMMANUFACTURINGSYSTEMS2
KWANSALLYINFORMATIONCENTER2
Numberofrowsretrievedis:8
Numberofrowssenttooutputis:5
ElapsedTimeis:0.037seconds
SummaryofResults
==================
ElapsedAgentCPURowsRows
Statement#Time(s)Time(s)FetchedPrinted
10.0740.02055
20.037NotCollected85
Arith.mean0.055
Geom.mean0.052
to
*Comment:"Query2"
*SQLStatementNumber2:
selectlastname,firstnme,
deptname,count(*)asnum_act
fromemployee,department,emp_act
whereemployee.workdept=department.deptnoand
employee.empno=emp_act.empnoand
emp_act.emptime<1
groupbylastname,firstnme,deptname
havingcount(*)<=2;
LASTNAMEFIRSTNMEDEPTNAMENUM_ACT
GEYERJOHNSUPPORTSERVICES2
GOUNOTJASONSOFTWARESUPPORT2
HAASCHRISTINESPIFFYCOMPUTERSERVICEDIV.2
JONESWILLIAMMANUFACTURINGSYSTEMS2
KWANSALLYINFORMATIONCENTER2*訪存了8行,有5行輸出。
*耗用時間是:0.004534秒
*總結表:
類型編號重複次數總時間(s)最小時間(s)...
語句110.0463190.046319...
語句210.0045340.004534...
...最大時間(s)算術平均幾何平均行數訪存的行數輸出
...0.0463190.0463190.04631955
...0.0045340.0045340.00453485
*總條目數:2
*總時間:0.050853秒
*最小時間:0.004534秒
*最大時間:0.046319秒
*算術平均時間:0.025426秒
*幾何平均時間:0.014492秒
*時間戳記:ThuFeb02200616:03:18EST以上樣本輸出包括由資料庫系統監視器返回的特定數據元素。
在下一個示例中(在UNIX®上),僅生成總結表。
db2batch-dsample-fdb2batch.sql-r/dev/null,僅生成具體化查詢表。如果使用-r選項,則outfile1被替換為/dev/null,而outfile2(它只包含具體化查詢表)是空的,所以db2batch將輸出發送至屏幕:
圖24.db2batch的樣本輸出-只包含總結表
*總結表:
類型編號重複次數總時間(s)最小時間(s)...
語句110.0526550.052655...
語句210.0045180.004518...
...最大時間(s)算術平均幾何平均行數訪存的行數輸出
...0.0526550.0526550.05265555
...0.0045180.0045180.00451885
*總條目數:2
*總時間:0.057173秒
*最小時間:0.004518秒
*最大時間:0.052655秒
*算術平均時間:0.028587秒
*幾何平均時間:0.015424秒

參考資料


[1] 中國百科網 http://www.chinabaike.com/article/baike/1001/2008/200805111474982.html
[2] 中國IT網 http://www.ic37.com/htm_tech/2007-8/25914_282950.htm
[3] IBM http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/c0005060.htm