在ASP中優化資料庫處理

2021-04-12 12:09:02 字數 3293 閱讀 1757

asp是乙個web伺服器端的開發環境,它提供了一種簡單易學的指令碼(vbscript或jscript),並帶有許多內建的物件,從而提供了一條簡捷的程式設計之路。更為重要的是,asp中提供了ado物件,讓程式設計師可以輕鬆操作各種

資料庫,從而可以產生和執行動態的、互動的web服務應用程式。

目前,國內很多電子商務站點都採用了asp技術來與

資料庫互動,為使用者提供各類服務。

由於電子商務站點的大部分資訊都存放在

資料庫中,要提高web的響應速度、建立高效能的電子商務站點,很大一部分取決於asp與

資料庫之間的處理效能,本文將具體介紹一些優化

資料庫處理的方法。

使用connection pool機制

在資料庫處理中,資源花銷最大的是建立

資料庫連線,而且使用者還會有乙個較長的連線等待時間。若每乙個使用者訪問時,都重新建立連線,不僅使用者要長時間等待,而且系統有可能會由於資源消耗過大而停止響應。如果能夠重用以前建立的

資料庫連線,而不是每次訪問時都重新建立連線,則可以很好地解決這些問題,從而提高整個系統的效能。在iis+asp處理體系中,採用了connection pool機制來保證這一點。

connection pool的原理是:iis+asp體系中維持了乙個連線緩衝池,建立好的

資料庫連線在asp程式中的斷開都是邏輯斷開,而實際的物理連線被儲存在池中並被加以維護。這樣,當下乙個使用者訪問時,直接從連線緩衝池中取得乙個

資料庫連線,而不需重新連線

資料庫,因此,可以大大地提高系統的響應速度。

為了正確使用connection pool機制,必須注意以下幾點:

1.在mdac2.0以前的版本中,必須經過

資料庫驅動程式的配置才能使用connection pool;在以後的版本中(比如mdac2.1),預設是使用connection pool機制。具體配置情況可以參見微軟公司的站點(

順便提一句,在使用oracle

資料庫時,最好使用微軟提供的驅動程式。

2.每次

資料庫連線串引數必須相同,否則會被認為是不同的連線而重新去連線

3.為了更好地使用和維護連線緩衝池,建議在程式中使用以下的方法對

資料庫連線進行操作,因為隱式使用

資料庫連線時不能利用緩衝池的機制:

顯式建立連線物件: set conn=server.createobject(「adodb.connection」)

建立顯式關閉連線物件:conn.close

利用直接的ole db驅動程式

在asp中,通過ado可以使用兩種方式連線

資料庫,一種是傳統的odbc方式,一種是ole db方式。由於ado是建立在ole db技術上的,為了支援odbc,必須建立相應的ole db 到odbc的呼叫轉換(如ms oledb provider for odbc)。而使用直接的ole db方式(如ms oledb provider for sql, oracle),則不需轉換,從而提高處理速度,同時,還能利用ole db的新特性。

在記憶體中快取ado物件或其內容

通常,在asp程式中,都會涉及到一些儲存在

資料庫中的常用資訊,如省份列表、商品分類等,這些資訊對於每乙個訪問使用者都是相同的。若每乙個使用者訪問時,都要去

資料庫裡取出來,然後顯示給使用者,不僅會使

資料庫伺服器負載加重,無法快速服務於更重要的事務處理,而且web伺服器也必須不停地建立ado物件,從而消耗大量資源,導致了當使用者很多時幾乎失去響應。若能把一些常用資訊事先儲存在記憶體中,當使用者訪問時,直接從記憶體中取出,顯示給使用者,則可以大大減小系統的壓力,提高響應速度。

使用數字序列

在asp程式中,從諸如recordset中讀取資料時,為了方便,常使用

資料庫列名的方式進行:

response.write rs(「fieldnamen」)

而很少採用該

資料庫列名所在的數字序列來讀取,即:

response.write rs(n)

其實,為了從recordset得到列值,ado必須將列名轉化為數字序列,因此,若直接使用數字序列,則可以提高讀取速度。若感覺使用數字序列後,程式可讀性不直觀,可以採用建立常量的方法,如定義:

const fieldname1 1

這樣就保證了程式的可讀性和讀取速度。

使用資料庫過程

在電子商務站點中,尤其是要進行交易的站點,為了完成交易,可能需要多次查詢大量的資訊,用於判定是非,然後更新入庫。若在編寫asp時,直接在乙個程式中作多次

資料庫操作,不僅iis要建立很多的ado物件,消耗大量資源,而且加重了

資料庫伺服器的負擔,增大了網路流量。若把多次

資料庫操作流程定義為乙個

資料庫過程,用如下方式呼叫:

connection.execute 「」

這樣可以利用

資料庫的強大效能,大大減輕web系統的壓力,而且由於頁面內容與業務分開,管理維護也變得方便。

利用資料庫的特性

ado是一套通用的物件控制項,本身沒有利用

資料庫的任何特性。但若在asp程式編寫時,有意識地考慮結合

資料庫的特性,往往可以有很好的效果。

比如,oracle

資料庫伺服器對於執行過的sql語句,通常都經過了分析優化,並儲存在乙個sql記憶體緩衝區中,當下次同樣的sql語句請求時,直接從記憶體緩衝區取出執行,不再進行分析優化,從而可以大幅度提高效能。這就要求在asp程式編寫時,盡量使用相同的sql語句,或者引數化的sql語句:

set cmd=server.createobject(「adodb.command」)

cmd.commandtext=」select * from product where productcode=?」

用時建立用完釋放

在前面也提到過,ado物件是非常消耗資源的,因此一定要牢牢記住,只在用到ado物件時才建立,用完後馬上釋放,程式如下:

set rs=server.createobject(「adodb.recordset」)

….rs.close

set rs=nothing

使用優化過的sql語句

對於電子商務**,最主要的就是要保證不論訪問使用者的多少,系統都要有足夠快的響應速度。由於在asp技術中,ado物件消耗的資源是非常大的,若乙個sql語句要執行很長的一段時間,對整個資源也將一直占用,使系統沒有足夠的資源服務於其它使用者。因此,盡量使用優化過的sql語句,減少執行時間。比如,不使用在in語句中包含子查詢的語句,充分利用索引。

只要在我們的電子商務**的建設中充分考慮到效率問題,並利用上述介紹的解決方法,會極大地提高**的響應速度。

在ASP中壓縮ACCESS資料庫

用access資料庫開發的 當隨著 資料量的不斷增長。資料庫的容量也是不斷加大。這讓asp程式速度直線下降。如果才能讓access資料庫容量盡可能小。我們要對它進行壓縮處理。下面是我整理後的源 複製另存為compact.asp並上傳到資料庫所在目錄即可正常使用。以下為引用的內容 本程式其實是通過fs...

在ASP程式中訪問Access資料庫

在基於微軟iis pws的網路平台上,通過伺服器端執行的asp程式來訪問後台資料庫,是一種最常見的模式了。而對於小型的資料庫應用需求,微軟的access資料庫,應該是與asp程式配套使用的首選。由於access資料庫的odbc驅動程式支援的sql指令全,執行效率高,所以access後台資料庫 asp...

在ASP中通過SQL訪問ACESS資料庫的方法

1 常量引數的傳遞 假設我們要向資料庫增加一條記錄 張三,男,22,78 02 23,zs 163.net。則變數strsql insert into board username,age,birthday,email values 張三 男 22,78 02 23 這裡我們看到 字串用單引號括起來...