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內置的存貯過程,可以使得服務器有效地處理所有的數據更新需求。 |