connection|對象|最佳化 在這個資料庫連接中。我們使用了session對象,首先,建立一個conn的連線物件,然後串連到資料庫data.mdb中,取得串連控制代碼後,把它儲存在session("conn")這個session會話變數中,在開啟記錄集前,從session("conn")中取出控制代碼,藉助於session對象。我們可以使不同的ASP頁面共用一個連線物件,減少了對伺服器記憶體的開銷,而我們也不需要擔心,當一個客戶因為錯誤操作導致伺服器不能析放該被佔用的session連線物件,因為我們知道每個客戶的session對象是有一定的生存期限的,過了這個期限,伺服器就會自動把它析放掉。
在ASP的資料庫編程中,connection對象是我們不可能離開的一個對象,在對資料庫進行任何的操作,比如更新記錄,插入,刪除,檢索等,都必須藉助於connection對象來完成。形象地來說,connection對象就是程式於資料庫溝通的管道,所有對資料庫的操作,都必須經過它,因此,無論我們以何種方式串連資料庫前,總是少不了執行下列的代碼。
Set conn = Server.CreateObject("ADODB.Connection")
建立一個connection對象的執行個體變數,然後在它的基礎上建立recorderset對象或是command對象來操作資料庫。既然connection對象是如此的重要,那麼如何最佳化和管理好connection對象對資料庫程式來說是極其重要的,它關係到程式的效能。
每當一個客戶執行資料庫操作時,就需要藉助一個connection對象,而每個connection對象就會佔用伺服器的一部分資源,而資料庫的同時串連數不可能是無限的,因此。在考濾要提供高效能的資料庫web程式時,我們需要考濾如何去減少伺服器的開銷。一般來說。每個asp頁面中建立一個connection對象,都會在伺服器中產生一個對資料庫的串連。而不同的頁面的connection對象是不能共用的。那麼。我們可不可以使同一個使用者所訪問的不同頁面共用一個connection串連通道呢。
大家不妨想一想我們的asp六大內建對象的session對象,他可以為某個特定的使用者來儲存私人的資料,如果我們把connection對象儲存在session對象中,是否可以使不同的asp頁面都使用同一個串連通道呢?看看下面的這段程式。
$#@60;%Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("/")&"/news/data/data.mdb"
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
session("conn")=conn
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from data"
cn=session("conn")
rs.open sql,cn,3,2
%$#@62;
d width="100%">
在這個資料庫連接中。我們使用了session對象,首先,建立一個conn的連線物件,然後串連到資料庫data.mdb中,取得串連控制代碼後,把它儲存在session("conn")這個session會話變數中,在開啟記錄集前,從session("conn")中取出控制代碼,藉助於session對象。我們可以使不同的ASP頁面共用一個連線物件,減少了對伺服器記憶體的開銷,而我們也不需要擔心,當一個客戶因為錯誤操作導致伺服器不能析放該被佔用的session連線物件,因為我們知道每個客戶的session對象是有一定的生存期限的,過了這個期限,伺服器就會自動把它析放掉。
而ODBC3.0所提供的串連池connection pooling。也能有效地提高資料庫的運行效能。我們知道,在眾多的asp頁面中產生的connection對象,總是處在不斷建立串連,解除串連,析放串連中。
如何能高效的管理和使用好這些被廢棄的串連,也可以在一定程式上大大提高運行效率。而ODBC3.0則提供了這樣的功能,它能聰明的把需要建立立的串連引導至即將廢棄的connection對象上,反覆地使用它。這樣,就能節省了不好伺服器的開銷。