ADO(ActiveX Data Object)是asp的重要組件,內置於ASP。ASP用Database access組件與後台數據庫進行連接。Database Access 組件通過 ADO 訪問存儲在數據庫或其他表格化數據庫結構中的信息。因此,與過去編寫CGI程序訪問數據庫信息相比,ADO已成為當今開發者們最喜歡的恢復和修改SQL_SERVER數據庫數據的常用Database Access 組件。然而,ADO的默認設置並不總是最優化的設置,要想開發出強大的基於ClIEnt/Server和Web的應用程序,有必要研究一下如何提高它的性能。實踐證明,可以從7個方面來提高ADO的性能。
1. 使用本地SQL Server OLE DB PRovider屬性
Microsoft 對應用程序訪問各種各樣的數據源所使用的方法是OLE DB,OLE DB介於ODBC(開放式數據庫連接標准)層和應用程序之間。在你的ASP頁面中,ADO介於OLE DB之上的“應用程序”。你的ADO調用首先被送到OLE DB,然後送到ODBC層。OLE DB是一套組件對象模型(COM)接口。一般情況下,ADO默認,一個ADO Recordset 對象使用OLE DB Provider 作為 ODBC來連接SQL SERVER。然而,本地的OLE DB Provider 給SQL Server 提供了較短的代碼路徑,而這往往會較大地提高ADO 的性能。
2.復用現有的Connection 對象
如果你正在開發一個APS頁面的應用程序,在一個Command 或Recordset 對象的ActiveConnection 屬性中復用現有的ADO Connection 對象。因為當ADO暗中打開或建立一個Connection 對象時,通過運用這種方法你可以避開一些額外的開銷。
3.明確地定義各種參數
雖然ADO能夠動態地決定一個Command 對象所使用的各種參數屬性,較好地縮短開發周期,但是這種特性,在應用程序中非常典型地增加了服務器的環路,在一定程度上降低了ADO 的性能。所以,明確地定義一個參數的Type, Direction and Size 可以減少應用程序給服務器造成的環路數量。
4.調整緩沖區的大小
ADO的CacheSize 影響服務器方面的Keyset游標及靜態和動態的Recordsets。 在CacheSize的默認設置下,ADO在修改和合並操作時工作狀態良好,但如果應用程序需要恢復大量的數據,就需要增加這個值。縮減服務器的環路數,是提高ADO和SQL Server應用程序性能的關鍵。
5.使用Command 對象代替游標
有時,使用游標來進行修改操作幾乎是不可避免的。然而,修改游標可能帶來額外的開銷,從而降低性能。但如果試圖使用包含著T-SQL Insert、Update、delete 語句的Command 對象來對服務器進行發送修改操作可以使開發者得到較好的性能。
6.在Recordset對象中使用指針快速前移方法
最好的ADO數據更新性能來自於在Recordset對象中使用指針快速前移方法。一旦你設定一個Recordset 對象為前移,只讀和帶有值1的CacheSize,ADO就會在該對象中自動生成一個快速前移的指針。這種方法使得大量的數據伴隨著很低的開銷從SQL Server流向ClIEnt 端。
7.使用最好的SQL
使用較好的SQL是從ADO和所有以SQL為基礎的數據存取技術獲得較好性能的最好方法。當你建立SQL一個語句,包含你真正需要的一些行和列的時候,充分利用SQL內置的存貯過程,可以使得服務器有效地處理所有的數據更新需求。