ASP程式效能測試報告(六)

來源:互聯網
上載者:User
程式|效能 七、最好用哪種方法提取記錄集?

   到目前為止我們一直通過建立Recordset對象提取記錄集,但是ADO也提供了間接的記錄集提取方法。下面的測試比較ADO__03.asp和直接從Connection對象建立記錄集(CONN_01.asp)這兩種方法:

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("Conn")

Set objRS = objConn.Execute(Application("SQL"))

   可以看到頁面開銷略有增加,單個記錄的顯示時間沒有變化。

   下面我們再來看看從Command對象直接建立記錄集對象(CMD__02.asp):

Set objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = Application("Conn")
objCmd.CommandText = Application("SQL")

Set objRS = objCmd.Execute

   同樣,頁面開銷也略有增加,而單個記錄的顯示時間沒有本質的變化。後面這兩種方法在效能上的差異很小,但我們還有一個重要的問題需要考慮。

   通過Recordset類建立記錄集時,我們能夠以最大的靈活性控制記錄集的處理方式。既然後面兩種方法未能有壓倒性的效能表現,我們主要還是考慮預設返回的遊標類型和記錄鎖定方式,對於某些場合來說預設值並不一定是最理想的。

   因此,除非由於特殊的原因需要選擇後面兩種方法,否則我們建議考慮下面的規則:

l    通過ADODB.Recordset類執行個體化記錄集,以獲得最好的效能和靈活性。

八、是否應該使用本地記錄集?

   ADO允許使用本地(用戶端)記錄集,此時查詢將提取記錄集內的所有資料,查詢完成後串連可以立即關閉,以後使用本地的遊標訪問資料,這為釋放串連帶來了方便。使用本地記錄集對於訪問那些要求資料離線使用的遠端資料服務非常重要,那麼,對於普通的應用它是否同樣有所協助?

   下面我們加入CursorLocation屬性,並在開啟記錄集之後關閉了串連(CLIENT1.asp):

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = 2   ' adUseClient
objRS.ActiveConnection = Application("Conn")
objRS.LockType = 1         ' adLockReadOnly
objRS.Open Application("SQL")
objRS.ActiveConnection = Nothing

   理論上,這種方法由於以下兩個原因會對效率有所好處:第一,它避免了在記錄之間移動時重複地通過串連請求資料;第二,由於能夠方便地釋放串連,它減輕了資源需求。然而,從上表看起來使用本地記錄集對提高效率顯然沒有什麼協助。這或許是因為使用本地記錄集時,不管程式設定的是什麼,遊標總是變成靜態類型。

   第6個規則如下:

l    除非確實要求記錄集本地化,否則應避免使用。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。