認(rèn)識和優(yōu)化 connection 對象
來源:http://edu.chinaz.com 在ASP的數(shù)據(jù)庫編程中,connection對象是我們不可能離開的一個對象,在對數(shù)據(jù)庫進(jìn)行任何的操作,比如更新記錄,插入,刪除,檢索等,都必須借助于connection對象來完成。形象地來說,connection對象是程序于數(shù)據(jù)庫溝通的管道,所有對數(shù)據(jù)庫的操作,都必須經(jīng)過它,因此,無論我們以何種方式連接數(shù)據(jù)庫前,總是少不了執(zhí)行下列的代碼! etconn=Server.CreateObject("ADODB.Connection") 建立一個connection對象的實例變量,然后在它的基礎(chǔ)上建立recorderset對象或是command對象來操作數(shù)據(jù)庫。既然connection對象是如此的重要,那么如何優(yōu)化和管理好connection對象對數(shù)據(jù)庫程序來說是極其重要的,它關(guān)系到程序的性能。
每當(dāng)一個客戶執(zhí)行數(shù)據(jù)庫操作時,需要借助一個connection對象,而每個connection對象會占用服務(wù)器的一部分資源,而數(shù)據(jù)庫的同時連接數(shù)不可能是無限的,因此。在考濾要提供高性能的數(shù)據(jù)庫web程序時,我們需要考濾如何去減少服務(wù)器的開消。一般來說。每個asp頁面中建立一個connection對象,都會在服務(wù)器中產(chǎn)生一個對數(shù)據(jù)庫的連接。而不同的頁面的connection對象是不能共享的。那么。我們可不可以使同一個用戶所訪問的不同頁面共享一個connection連接通道呢! 〈蠹也环料胍幌胛覀兊腶sp六大內(nèi)建對象的session對象,他可以為某個特定的用戶來保存私有的數(shù)據(jù),如果我們把connection對象保存在session對象中,是否可以使不同的asp頁面都使用同一個連接通道呢?看看下面的這段程序。
在這個數(shù)據(jù)庫連接中。我們使用了session對象,首先,建立一個conn的連接對象,然后連接到數(shù)據(jù)庫data.mdb中,取得連接句柄后,把它保存在session("conn")這個session會話變量中,在打開記錄集前,從session("conn")中取出句柄,借助于session對象。我們可以使不同的ASP頁面共用一個連接對象,減少了對服務(wù)器內(nèi)存的開消,而我們也不需要擔(dān)心,當(dāng)一個客戶因為錯誤操作導(dǎo)致服務(wù)器不能析放該被占用的session連接對象,因為我們知道每個客戶的session對象是有一定的生存期限的,過了這個期限,服務(wù)器會自動把它析放掉! 《鳲DBC3.0所提供的連接池connectionpooling。也能有效地提高數(shù)據(jù)庫的運(yùn)行性能。我們知道,在眾多的asp頁面中生成的connection對象,總是處在不斷建立連接,解除連接,析放連接中! ∪绾文艿墓芾砗褪褂煤眠@些被廢棄的連接,也可以在一定程序上大大提高運(yùn)行效率。而ODBC3.0則提供了這樣的功能,它能聰明的把需要新建立的連接引導(dǎo)至即將廢棄的connection對象上,反復(fù)地使用它。這樣,能節(jié)省了不好服務(wù)器的開消.
轉(zhuǎn)載請注明來源:http://edu.chinaz.com