高清国产av一区二区三区_亚洲欧美日韩在线_无码熟妇人妻av在线影片免费_在线无码一级伊伊_爽好舒服高H自慰软件_亚洲熟女区偷拍区高清区_午夜福利影院啪啪_亚洲国产黄片在线播放_中文字幕日韩精品乐乐影院_久久国产亚洲日韩欧美精品

掃描二維碼關(guān)注

首頁(yè) APP開發(fā)小程序開發(fā) 微信公眾號(hào) 網(wǎng)站建設(shè) 營(yíng)銷推廣 經(jīng)典案列 產(chǎn)品服務(wù) 關(guān)于我們

“學(xué)習(xí)不僅是掌握知識(shí)”

向書本學(xué)習(xí),還要向?qū)嵺`學(xué)習(xí)、向生活學(xué)習(xí)。消化已有知識(shí),
而且要力求有所發(fā)現(xiàn)、有所發(fā)明、有所創(chuàng)造

在ASP中優(yōu)化數(shù)據(jù)庫(kù)處理

2019/3/8 18:58:23

在ASP中優(yōu)化數(shù)據(jù)庫(kù)處理

ASP是一個(gè)WEB服務(wù)器端的開發(fā)環(huán)境,它提供了一種簡(jiǎn)單易學(xué)的腳本(VBScript或Jscript),并帶有許多內(nèi)置的對(duì)象,從而提供了一條簡(jiǎn)捷的編程之路。更為重要的是,ASP中提供了ADO對(duì)象,讓程序員可以輕松操作各種數(shù)據(jù)庫(kù),從而可以產(chǎn)生和運(yùn)行動(dòng)態(tài)的、交互的WEB服務(wù)應(yīng)用程序。目前,國(guó)內(nèi)很多電子商務(wù)站點(diǎn)都采用了ASP技術(shù)來與數(shù)據(jù)庫(kù)交互,為用戶提供各類服務(wù)。
由于電子商務(wù)站點(diǎn)的大部分信息都存放在數(shù)據(jù)庫(kù)中,要提高WEB的響應(yīng)速度,建立高性能的電子商務(wù)站點(diǎn),很大一部分取決于ASP與數(shù)據(jù)庫(kù)之間的處理性能。因此,在ASP編寫時(shí),要注意數(shù)據(jù)庫(kù)處理方法。
1、 使用Connection pool機(jī)制
在數(shù)據(jù)庫(kù)處理中,資源花銷最大的是建立數(shù)據(jù)庫(kù)連接,而且用戶還會(huì)有一個(gè)較長(zhǎng)的連接等待時(shí)間。若每一個(gè)用戶訪問時(shí),都重新建立連接,不僅用戶要長(zhǎng)時(shí)間等待,而且系統(tǒng)有可能會(huì)由于資源消耗過大而停止響應(yīng)。如果能夠重用以前建立的數(shù)據(jù)庫(kù)連接,而不是每次訪問時(shí)都重新建立連接,則可以很好地解決這些問題,從而提高整個(gè)系統(tǒng)的性能。在IIS+ASP處理體系中,采用了Connection pool機(jī)制來保證這一點(diǎn)。
Connection pool的原理是,IIS+ASP體系中維持了一個(gè)連接緩沖池,建立好的數(shù)據(jù)庫(kù)連接在ASP程序中的斷開都是邏輯斷開,而實(shí)際的物理連接被存儲(chǔ)在池中并被維護(hù)。這樣,當(dāng)下一個(gè)用戶訪問時(shí),直接從連接緩沖池中取得一個(gè)數(shù)據(jù)庫(kù)連接,而不需重新連接數(shù)據(jù)庫(kù),因此,可以大大地提高系統(tǒng)的響應(yīng)速度。
為了正確使用Connection pool時(shí),必須注意以下幾點(diǎn):
a). 在MDAC2.0以前的版本中,必須經(jīng)過數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的配置才能使用Connection Pool;在以后的版本中(比如MDAC2.1),缺省是使用Connection Pool機(jī)制。具體配置情況可以參見微軟公司的站點(diǎn)(http://www.microsoft.com/data/)。
順便提一句,在使用ORACLE數(shù)據(jù)庫(kù)時(shí),最好使用微軟提供的驅(qū)動(dòng)程序。
b). 每次數(shù)據(jù)庫(kù)連接串參數(shù)必須相同,否則會(huì)被認(rèn)為是不同的連接而重新去連接數(shù)據(jù)庫(kù),而不是使用緩沖池中的連接。最好的做法是將連接串存儲(chǔ)在Application變量中,所有的程序在建立連接時(shí)使用Application變量的值。
c). 為了更好地使用和維護(hù)連接緩沖池,建議在程序中使用以下的方法對(duì)數(shù)據(jù)庫(kù)連接進(jìn)行操作,因?yàn)殡[式使用數(shù)據(jù)庫(kù)連接時(shí)不能利用緩沖池的機(jī)制:
¨ 顯示地創(chuàng)建連接對(duì)象: Set conn=Server.CreateObject(“Adodb.connection”)
¨ 建立數(shù)據(jù)庫(kù)連接:conn.open Application(“connection_string”),…
¨ 進(jìn)行數(shù)據(jù)庫(kù)操作:…
¨ 顯式地關(guān)閉連接對(duì)象:conn.close

2、 利用直接的Ole DB驅(qū)動(dòng)程序
在Asp中,通過ADO可以使用兩種方式連接數(shù)據(jù)庫(kù),一種是傳統(tǒng)的ODBC方式,一種是Ole DB方式。由于ADO是建立在Ole DB技術(shù)上的,為了支持ODBC,必須建立相應(yīng)的Ole DB 到ODBC的調(diào)用轉(zhuǎn)換(如MS Oledb provider for ODBC)。而使用直接的Ole DB方式(如MS Oledb provider for Sql, Oracle),則不需轉(zhuǎn)換,從而提高處理速度,同時(shí),還能利用Ole DB的新特性。

3、 在內(nèi)存中緩存ADO對(duì)象或其內(nèi)容
通常,在ASP程序中,都會(huì)涉及到一些存儲(chǔ)在數(shù)據(jù)庫(kù)中的常用信息,如省份列表,商品分類等,這些信息對(duì)于每一個(gè)訪問用戶都是相同的。若每一個(gè)用戶訪問時(shí),都要去數(shù)據(jù)庫(kù)里取出來,然后顯示給用戶,不僅會(huì)使數(shù)據(jù)庫(kù)服務(wù)器負(fù)載加重,無(wú)法快速服務(wù)于更重要的事務(wù)處理,而且WEB服務(wù)器也必須不停地創(chuàng)建ADO對(duì)象,消耗大量資源,導(dǎo)致了當(dāng)用戶很多時(shí)幾乎失去響應(yīng)。若能把一些常用信息事先存儲(chǔ)在內(nèi)存中,當(dāng)用戶訪問時(shí),直接從內(nèi)存中取出,顯示給用戶,則可以大大減小系統(tǒng)的壓力,提高響應(yīng)速度。
比如,我們可以把已經(jīng)取得了數(shù)據(jù)的RecordSet對(duì)象存儲(chǔ)在Application變量中,當(dāng)用戶訪問時(shí),從Application變量中取得RecordSet對(duì)象,而不需再次建立數(shù)據(jù)庫(kù)連接;也可以將RecordSet對(duì)象里的數(shù)據(jù)以其他方式存儲(chǔ),比如存儲(chǔ)在數(shù)組中,然后再將數(shù)組存儲(chǔ)在Application變量中,使用時(shí)用數(shù)組的方式讀取。
需要注意的是,一個(gè)對(duì)象要存儲(chǔ)在Application變量中,線程模式必須是Both;對(duì)于不滿足該條件的對(duì)象,必須以其他方式,比如轉(zhuǎn)換成數(shù)組的方式存儲(chǔ)在Application變量中,這也是上面所說的將內(nèi)容存儲(chǔ)在數(shù)組中的原因。

4、 使用數(shù)字序列
在Asp程序中,從諸如RecordSet中讀取數(shù)據(jù)時(shí),為了方便,常使用數(shù)據(jù)庫(kù)列名的方式進(jìn)行:
Response.write rs(“fieldnameN”)
而很少采用該數(shù)據(jù)庫(kù)列名所在的數(shù)字序列來讀取,即:
Response.write rs(N)
其實(shí),為了從RecordSet得到列值,ADO必須將列名轉(zhuǎn)化為數(shù)字序列,因此,若直接使用數(shù)字序列,則可以提高讀取速度。若感覺使用數(shù)字序列,程序可讀性不直觀,可以采用建立常量的方法,定義: <b


深圳市南山區(qū)南山街道南海大道西桂廟路北陽(yáng)光華藝大廈1棟4F、4G-04

咨詢電話:136 8237 6272
大客戶咨詢:139 0290 5075
業(yè)務(wù)QQ:195006118
技術(shù)QQ:179981967

精銳軟件

Copyright? 2018-2023 深圳精銳軟件技術(shù)有限公司 All Rights Reserved. ICP備案號(hào):粵ICP備18108116號(hào)-8 公安備案號(hào):粵公網(wǎng)安備44030502009460號(hào)