狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

在ASP中優化數據庫處理

admin
2010年7月3日 13:25 本文熱度 6980
asp是一個web服務器端的開發環境,它提供了一種簡單易學的腳本(vbscript或jscript),并帶有許多內置的對象,從而提供了一條簡捷的編程之路。更為重要的是,asp中提供了ado對象,讓程序員可以輕松操作各種數據庫,從而可以產生和運行動態的、交互的web服務應用程序。目前,國內很多電子商務站點都采用了asp技術來與數據庫交互,為用戶提供各類服務。 [br]由于電子商務站點的大部分信息都存放在數據庫中,要提高web的響應速度,建立高性能的電子商務站點,很大一部分取決于asp與數據庫之間的處理性能。因此,在asp編寫時,要注意數據庫處理方法。 [br]1、 使用connection pool機制 [br]在數據庫處理中,資源花銷最大的是建立數據庫連接,而且用戶還會有一個較長的連接等待時間。若每一個用戶訪問時,都重新建立連接,不僅用戶要長時間等待,而且系統有可能會由于資源消耗過大而停止響應。如果能夠重用以前建立的數據庫連接,而不是每次訪問時都重新建立連接,則可以很好地解決這些問題,從而提高整個系統的性能。在iis+asp處理體系中,采用了connection pool機制來保證這一點。 [br]connection pool的原理是,iis+asp體系中維持了一個連接緩沖池,建立好的數據庫連接在asp程序中的斷開都是邏輯斷開,而實際的物理連接被存儲在池中并被維護。這樣,當下一個用戶訪問時,直接從連接緩沖池中取得一個數據庫連接,而不需重新連接數據庫,因此,可以大大地提高系統的響應速度。 [br]為了正確使用connection pool時,必須注意以下幾點: [br]a). 在mdac2.0以前的版本中,必須經過數據庫驅動程序的配置才能使用connection pool;在以后的版本中(比如mdac2.1),缺省是使用connection pool機制。具體配置情況可以參見微軟公司的站點([url=http://microsoft.com/data/]http://microsoft.com/data/[/url])。 [br]順便提一句,在使用oracle數據庫時,最好使用微軟提供的驅動程序。 [br]b). 每次數據庫連接串參數必須相同,否則會被認為是不同的連接而重新去連接數據庫,而不是使用緩沖池中的連接。最好的做法是將連接串存儲在application變量中,所有的程序在建立連接時使用application變量的值。 [br]c). 為了更好地使用和維護連接緩沖池,建議在程序中使用以下的方法對數據庫連接進行操作,因為隱式使用數據庫連接時不能利用緩沖池的機制: [br]¨ 顯示地創建連接對象: set conn=server.createobject(“adodb.connection”) [br]¨ 建立數據庫連接:conn.open application(“connection_string”),… [br]¨ 進行數據庫操作:… [br]¨ 顯式地關閉連接對象:conn.close [br][br]2、 利用直接的ole db驅動程序 [br]在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的新特性。 [br][br]3、 在內存中緩存ado對象或其內容 [br]通常,在asp程序中,都會涉及到一些存儲在數據庫中的常用信息,如省份列表,商品分類等,這些信息對于每一個訪問用戶都是相同的。若每一個用戶訪問時,都要去數據庫里取出來,然后顯示給用戶,不僅會使數據庫服務器負載加重,無法快速服務于更重要的事務處理,而且web服務器也必須不停地創建ado對象,消耗大量資源,導致了當用戶很多時幾乎失去響應。若能把一些常用信息事先存儲在內存中,當用戶訪問時,直接從內存中取出,顯示給用戶,則可以大大減小系統的壓力,提高響應速度。 [br]比如,我們可以把已經取得了數據的recordset對象存儲在application變量中,當用戶訪問時,從application變量中取得recordset對象,而不需再次建立數據庫連接;也可以將recordset對象里的數據以其他方式存儲,比如存儲在數組中,然后再將數組存儲在application變量中,使用時用數組的方式讀取。 [br]需要注意的是,一個對象要存儲在application變量中,線程模式必須是both;對于不滿足該條件的對象,必須以其他方式,比如轉換成數組的方式存儲在application變量中,這也是上面所說的將內容存儲在數組中的原因。 [br][br]4、 使用數字序列 [br]在asp程序中,從諸如recordset中讀取數據時,為了方便,常使用數據庫列名的方式進行: [br]response.write rs(“fieldnamen”) [br]而很少采用該數據庫列名所在的數字序列來讀取,即: [br]response.write rs(n) [br]其實,為了從recordset得到列值,ado必須將列名轉化為數字序列,因此,若直接使用數字序列,則可以提高讀取速度。若感覺使用數字序列,程序可讀性不直觀,可以采用建立常量的方法,定義: [br]const fieldname1 1 [br][br]5、 使用數據庫過程(procedure) [br]在電子商務站點中,尤其是要進行交易的站點,為了完成交易,可能需要多次查詢大量的信息,用于判定是非,然后更新入庫。若在編寫asp時,直接在一個程序中作多次數據庫操作,不僅iis要創建很多ado對象,消耗資源,而且加重了數據庫服務器的負擔,增大了網絡流量。若把多次數據庫操作流程定義為一個數據庫過程,用如下方式調用: [br]connection.execute “{call procedurename(..)}” [br]則可以利用數據庫的強大性能,大大減輕web系統的壓力,而且由于頁面內容與業務分開,管理維護也變得方便。 [br][br]6、 使用優化過的sql語句 [br]對于電子商務網站,最主要的就是要保證,不論訪問用戶的多少,系統都要有足夠快的響應速度。由于在asp技術中,ado對象消耗的資源是非常大的,若一個sql語句要執行很長的一段時間,對整個資源也將一直占用,使系統沒有足夠的資源服務于其它用戶。因此,盡量使用優化過的sql語句,減少執行時間。比如,不使用在in語句中包含子查詢的語句,充分利用索引。 [br][br]7、 利用數據庫的特性 [br]ado是一套通用的對象控件,本身沒有利用數據庫的任何特性。但若在asp程序編寫時,有意識地考慮結合數據庫的特性,往往可以有很好的效果。 [br]比如,oracle數據庫服務器對于執行過的sql語句,通常都經過了分析優化,并存儲在一個sql內存緩沖區中,當下次同樣的sql語句請求時,直接從內存緩沖區取出執行,不再進行分析優化,從而可以大幅度提高性能。這就要求在asp程序編寫時,盡量使用相同的sql語句,或者參數化的sql語句: [br]set cmd=server.createobject(“adodb.command”) [br]cmd.commandtext=”select * from product where productcode=?” [br][br]8、 用時創建,用完釋放 [br]在前面也提到過,ado對象是非常消耗資源的,因此一定要牢牢記住,只在用到ado對象時才創建,用完后馬上釋放: [br]set rs=server.createobject(“adodb.recordset”) [br]…. [br]rs.close [br]set rs=nothing

該文章在 2010/7/3 13:25:04 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved