效能 二、測試環境
本測試總共用到了21個ASP檔案,這些檔案可以從本文後面下載。每一個版面設定成可以運行三種不同的查詢,分別返回0、25、250個記錄。這將協助我們隔離頁面本身的初始化、運行開銷與用逐一查看記錄集的開銷。
為便於測試,資料庫連接字串和SQL命令串都在Global.asa中作為Application變數儲存。由於我們的測試資料庫是SQL Server 7.0,因此串連串指定OLEDB作為串連提供者,測試資料來自SQL Server的Northwind資料庫。SQL SELECT命令從NorthWind Orders表提取7個指定的欄位。
< SCRIPT LANGUAGE=VBScript RUNAT=Server >
Sub Application_OnStart
Application("Conn") = "Provider=SQLOLEDB; " & _
"Server=MyServer; " & _
"uid=sa; " & _
"pwd=;" & _
"DATABASE=northwind"
Application("SQL") = "SELECT TOP 0 OrderID, " & _
" CustomerID, " & _
" EmployeeID, " & _
" OrderDate, " & _
" RequiredDate, " & _
" ShippedDate, " & _
" Freight " & _
"FROM [Orders] "
End Sub
< /SCRIPT >
'alternate sql - 25 records
Application("SQL") = "SELECT TOP 25 OrderID, " & _
" CustomerID, " & _
" EmployeeID, " & _
" OrderDate, " & _
" RequiredDate, " & _
" ShippedDate, " & _
" Freight " & _
"FROM [Orders] "
'alternate sql - 250 records
Application("SQL") = "SELECT TOP 250 OrderID, " & _
" CustomerID, " & _
" EmployeeID, " & _
" OrderDate, " & _
" RequiredDate, " & _
" ShippedDate, " & _
" Freight " & _
"FROM [Orders] "
測試伺服器配置如下:450 Mhz Pentium,512 MB RAM,NT Server 4.0 SP5,MDAC 2.1(資料訪問組件),以及5.0版本的Microsoft指令碼引擎。SQL Server運行在另外一台具有類似配置的機器上。和第一部分一樣,我們仍舊使用Microsoft Web Application Stress Tool 記錄從第一個頁面請求到從伺服器接收到最後一個位元組的時間(TTLB,Time To Last Byte),時間以毫秒為單位。測試指令碼調用每個頁面1300次以上,已耗用時間約20小時,以下顯示的時間是會話的平均TTLB。請記住,和第一部分一樣,我們只關心代碼的效率,而不是它的延展性或伺服器效能。
同時請注意我們啟用了伺服器的緩衝。另外,為了讓所有的檔案名稱字長度相同,有的檔案名稱字中嵌入了一個或多個底線。