明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

連接WEB數(shù)據(jù)庫(kù)的ADO性能提高技巧

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