狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

提高ASP性能的最佳選擇(續二)

提高ASP性能的最佳選擇(續二)

更新時間:2024-04-11 文章作者:未知 信息來源:網絡 閱讀次數:

當使用一個記錄集時,是否應該創建一個單獨的Connection對象?
  要想正確回答這個問題,需要在兩個不同情況下檢驗測試結果:第一是每頁執行一個數據庫處理的情況,第二是每頁執行多個數據庫處理的情況。

  在前面的例子中,我們已經創建了一個單獨的Connection對象,并將它傳遞到記錄集的ActiveConnection 屬性。但是也有可能僅僅把連接字符串傳遞到這個屬性中,從而可以避免一個額外的步驟,即在腳本( ADO__03.asp )中例示和配置一個單獨的組件:

  objRS.ActiveConnection = Application("Conn")


  盡管我們仍然在記錄集中創建了一個連接,但它是在非常優化的情況下創建的,所以剛一開始我們就看到啟動時間比以前的測試減少了23%,同預料中一樣,同每個記錄的顯示時間幾乎沒有什么差別。

  因此,我們的第二個規則是:

  * 當使用一個單個記錄集時,將連接字符串傳遞到ActiveConnection屬性中。

  下面要確定當在一個頁面上創建多個記錄集時,這個邏輯是否依然成立。為測試這個情況,我引入了FOR 循環,將前面的例子重復10次。在這個測試中,我們還將研究3種選擇:

  第一,我們在每個循環中創建并銷毀Connection 對象( ADO__04.asp ):

  Dim i

  For i = 1 to 10

  Set objConn = Server.CreateObject("ADODB.Connection")

  objConn.Open Application("Conn")

  Set objRS = Server.CreateObject("ADODB.Recordset")

  objRS.ActiveConnection = objConn

  objRS.CursorType = 0 'adOpenForwardOnly

  objRS.LockType = 1 'adLockReadOnly

  objRS.Open Application("SQL")

  If objRS.EOF Then

  Response.Write("No Records Found")

  Else

  'write headings

  ...

  'write data

  ...

  End If

  objRS.Close

  Set objRS = Nothing

  objConn.Close

  Set objConn = Nothing

  Next

  第二,在循環外創建一個單獨的Connection 對象,并與每個記錄集共享它( ADO__05.asp ):

  Set objConn = Server.CreateObject("ADODB.Connection")

  objConn.Open Application("Conn")

  Dim i

  For i = 1 to 10

  Set objRS = Server.CreateObject("ADODB.Recordset")

  objRS.ActiveConnection = objConn

  objRS.CursorType = 0 'adOpenForwardOnly

  objRS.LockType = 1 'adLockReadOnly

  objRS.Open Application("SQL")

  If objRS.EOF Then

  Response.Write("No Records Found")

  Else

  'write headings

  ...

  'write data

  ...

  End If

  objRS.Close

  Set objRS = Nothing

  Next

  objConn.Close

  Set objConn = Nothing

  第三,在每個循環中將連接字符串傳遞到ActiveConnection 屬性( ADO__06.asp ):

  Dim i

  For i = 1 to 10

  Set objRS = Server.CreateObject("ADODB.Recordset")

  objRS.ActiveConnection = Application("Conn")

  objRS.CursorType = 0 'adOpenForwardOnly

  objRS.LockType = 1 'adLockReadOnly

  objRS.Open Application("SQL")

  If objRS.EOF Then

  Response.Write("No Records Found")

  Else

  'write headings

  ...

  'write data

  ...

  End If

  objRS.Close

  Set objRS = Nothing

  Next


  你可能已經猜到了,在每個循環中創建并銷毀Connection 對象是一個低效率的方法。但是令人吃驚的是,僅僅在每個循環中傳遞連接字符串比共享單一連接對象的效率只低一點點。

  盡管如此,我們的第3條規則是:

  * 在一個頁面上使用多個記錄集時,創建一個Connection 對象,在ActiveConnection 屬性中重復使用它。

指針和鎖的類型中,哪些是最有效的?
  到目前為止,我們所有測試都只用了只向前(Forward Only )的指針在記錄集中循環。但是,ADO還為記錄集提供了3種類型的指針:Static(靜態), Dynamic(動態)和 Keyset(鍵盤)。每一種都提供了額外的功能,比如向前和向后移動以及當別人建立數據時可以看到修改情況的功能。不過,討論這些指針類型的內涵不是本文討論的范圍。我把這些留給你自己。下面是各種類型的比較分析。


  與它們的同類Forward Only 相比,這些額外的指針都明顯地造成了更大的負載( ADO__03.asp )。另外這些指針在循環期間也更慢。我想與你一起分享的一條忠告是要避免這種想法:“我不時地需要一下Dynamic 指針,所以干脆總是用它算了。”

  從本質上說,同樣的問題也適用于鎖的類型。前面的測試中只使用了Read Only(只讀)類型的鎖。但是,還有三種類型的鎖:Lock Pessimistic、 Lock Optimistic和Lock Batch Optimistic。同指針的選擇一樣,這些鎖也為處理記錄集中的數據提供了額外的功能和控制。同樣,我將學習每種鎖設置的適當用途的內容留給你自己。


  所以引導我們考慮規則4的邏輯很簡單:使用最適合你的任務的最簡單的指針和鎖的類型。

獲取一個記錄集最好的方式是什么?
  到目前為止,我們只是通過Recordset 對象來恢復記錄集。但是ADO還提供了一些獲取記錄集的間接方法。下一個測試就將ADO__03.asp 中的值與直接從一個Connection對象中創建一個記錄集對象( CONN_01.asp )來比較。

  Set objConn = Server.CreateObject("ADODB.Connection")

  objConn.Open Application("Conn")

  Set objRS = objConn.Execute(Application("SQL"))


  我們看到,負載有一個輕微的增加,顯示每條記錄的時間沒有變化。

  然后,我們看看從一個Command 對象中直接創建一個Recordset 對象( CMD__01.asp ):

  Set objCmd = Server.CreateObject("ADODB.Command")

  objCmd.ActiveConnection = Application("Conn")

  objCmd.CommandText = Application("SQL")

  Set objRS = objCmd.Execute


  我們再次看到負載有一個輕微的增加,每個記錄的顯示時間有一個名義上的區別。雖然最后這兩種方法對性能的影響很小,卻有一個大問題需要考慮。

  通過Recordset 類創建一個記錄集對于控制如何處理記錄集提供了最大的靈活性。雖然其它方法也沒有提出一個壓倒性的性能問題,但是你會被默認狀態下返回何種指針類型和鎖類型而困惑,這些對于你的特定需求來說不一定是最優的。

  所以,除非因為某種特殊原因你需要其它方法的話,請遵循第5條規則:通過ADODB.Recordset 類例示記錄集以獲得最好的性能和最大的靈活性。

是否應該斷開記錄集?
  ADO為斷開一個記錄集提供了一種選擇,記錄集要在一個向前查詢中恢復所有數據、關閉連接、使用一個本地(或客戶)指針在數據集中移動。這還提供了一個早期釋放連接的機會。這種情況對于處理遠程數據服務是必要的,因為這種情況下數據必須從數據庫斷開。但是對于普通的用途,這樣做有好處嗎?

  下面我們增加了CursorLocation 屬性,打開記錄集后關閉連接( CLIENT1.asp ):

  Set objRS = Server.CreateObject("ADODB.Recordset")

  objRS.CursorLocation = 3 ' adUseClient

  objRS.ActiveConnection = Application("Conn")

  objRS.LockType = 1 ' adLockReadOnly

  objRS.Open Application("SQL")

  objRS.ActiveConnection = Nothing


  從理論上說,這個技術應該導致性能更快。原因有兩個:首先,在記錄集中移動時,避免了通過連接的重復請求;其次通過較早地取消連接減輕了資源需求。但是,在使用客戶端指針時,效率低得很明顯。可能是由于當使用客戶指針位置時,不管你的設置是什么,CursorType 都被修改成Static。

  規則6是這樣的:除非是一個斷開的環境中所要求的,避免使用斷開的記錄集。

什么是設置記錄集屬性的最好方法?
  前面所有的測試都是通過單獨的屬性設置來直接設置記錄集的屬性的。但是Recordset.Open 函數可以為我們所需要的全部屬性接收額外的參數。雖然對于每個屬性來說,單獨的代碼行易于閱讀和維護,它們還是要分別執行一個單獨函數調用,必須通過COM界面來集合( ADO__07.asp ):

  Set objRS = Server.CreateObject("ADODB.Recordset")

  objRS.Open Application("SQL"), Application("Conn"), 0, 1

  ' adForwardOnly, adLockReadOnly


  這些方法在負載上帶來得差別小得驚人,于是我們得到規則7:不要對單獨設置記錄集屬性感到擔心

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
日韩成人一级大片| 日韩高清在线不卡| 国产98色在线|日韩| 欧美亚洲色图校园春色| 亚洲视频一二区| 97精品视频在线观看自产线路二| 欧美久久久久久久久| 日本欧美一区二区三区| 午夜在线视频观看日韩17c| 18成人在线视频| 欧美日韩四区| 国产精品视频线看| 91丝袜美腿高跟国产极品老师| 日韩视频免费观看高清完整版在线观看 | 精品国产伦一区二区三区免费| 精品在线免费观看| 精品视频在线免费| 精彩视频一区二区三区| 欧美日韩一区二区三区高清| 日韩精品91亚洲二区在线观看| 久久九九99| 五月天亚洲精品| 色哟哟一区二区三区| 日本三级亚洲精品| 91极品视觉盛宴| 精品一区二区在线看| 国产精品白丝在线| 黄色另类av| 亚洲一区在线免费观看| 制服丝袜一区二区三区| 国产精品一区二区三区四区| 在线成人av网站| 国产成人免费在线观看| 欧美不卡在线视频| 女生裸体视频一区二区三区| 中文天堂在线一区| 亚洲美女色禁图| 午夜婷婷国产麻豆精品| 欧美综合亚洲图片综合区| 国产综合久久久久影院| 日韩精品一区二区三区中文精品| 波多野结衣在线一区| 国产日本欧洲亚洲| 亚洲日本激情| 亚洲成国产人片在线观看| 欧美亚洲一区二区在线观看| 国产激情一区二区三区| 久久嫩草精品久久久精品一| 精品福利av| 日韩电影在线免费| 欧美大片一区二区三区| 欧美成人综合| 亚洲国产精品麻豆| 欧美精品粉嫩高潮一区二区| av电影天堂一区二区在线观看| 国产精品久久久久久久久图文区| 香蕉久久夜色精品国产| 国内欧美视频一区二区| 精品国产1区2区3区| 99国产精品久久久久久久成人热| 日韩电影在线一区二区三区| 日韩精品一区二区三区swag| 亚洲视频精品| 美女看a上一区| 国产日韩欧美一区二区三区综合 | eeuss鲁一区二区三区| 亚洲欧美另类图片小说| 欧美日韩国产高清一区二区| 欧美国产三区| 免费成人在线网站| 国产日韩在线不卡| 久久一二三四| 99视频在线精品| 亚洲电影一区二区| 精品日韩欧美在线| 男人的天堂成人在线| 不卡的av在线| 日韩福利视频导航| 欧美国产综合一区二区| 在线观看欧美精品| 国产精品99免费看| 激情久久五月天| 亚洲美女视频在线| 精品捆绑美女sm三区| 一区二区三区三区在线| 不卡影院免费观看| 日本aⅴ精品一区二区三区| 成+人+亚洲+综合天堂| 洋洋av久久久久久久一区| 日韩一级片在线观看| 国产亚洲网站| 欧美黄色一区| 国产传媒久久文化传媒| 亚洲狠狠爱一区二区三区| 国产亚洲va综合人人澡精品| 欧美日韩午夜在线视频| 99综合视频| 欧美成人69| 国产激情偷乱视频一区二区三区| 亚洲午夜一二三区视频| 中文字幕第一区| 日韩一区二区三区免费看| 色偷偷久久一区二区三区| 一区二区在线不卡| 91在线porny国产在线看| 国产乱理伦片在线观看夜一区| 亚洲福利一区二区三区| 日韩毛片在线免费观看| 久久久亚洲综合| 欧美一区二区三区免费观看视频| 久久久久国产精品午夜一区| 精品91在线| 欧美精品黄色| 91丨九色丨蝌蚪富婆spa| 国产精品香蕉一区二区三区| 日韩激情一二三区| 亚洲国产人成综合网站| 亚洲另类春色校园小说| 中日韩av电影| 国产日韩欧美精品在线| 日韩精品最新网址| 91精品免费在线| 欧美夫妻性生活| 欧美日韩视频专区在线播放| 色婷婷久久久久swag精品| 国产精品一二| 香蕉成人久久| 亚洲综合欧美| 免费在线观看成人av| 亚洲主播在线| 久久福利毛片| 久久久久久久尹人综合网亚洲| 国产精品一区二区你懂得| 国产欧美一级| 国产一区成人| 免费久久99精品国产自| 国产伦精品一区二区三区四区免费| 亚洲日韩视频| 国产精品久久国产愉拍| 亚洲欧美日韩精品在线| 色婷婷亚洲综合| 在线精品视频免费观看| 欧美精选一区二区| 日韩欧美综合一区| 久久男人中文字幕资源站| 国产日韩欧美综合在线| 中文字幕在线不卡| 亚洲精品中文字幕乱码三区| 亚洲一二三区视频在线观看| 午夜精品在线视频一区| 蜜桃av一区二区在线观看| 激情综合色丁香一区二区| 国产成人免费视频网站高清观看视频| 在线免费视频一区二区| 欧美丰满美乳xxx高潮www| 日韩欧美一级二级三级久久久| 精品理论电影在线| 中文字幕一区二区在线观看| 一区二区欧美在线观看| 天堂成人国产精品一区| 久草热8精品视频在线观看| 成人中文字幕合集| 午夜欧美精品| 国产伦精品一区二区三| 欧美影片第一页| 日韩色在线观看| 国产精品美女www爽爽爽| 伊人婷婷欧美激情| 精品一区二区三区影院在线午夜| 国产成人精品一区二| 欧美日韩亚洲一区三区 | 精品1区2区| 在线中文字幕一区二区| 精品久久久久久无| 一区二区三区中文字幕在线观看| 日本不卡的三区四区五区| 不卡av电影在线播放| 亚洲裸体视频| 欧美日韩精品一区二区三区蜜桃| 久久女同精品一区二区| 亚洲综合网站在线观看| 国产精品一区免费视频| 红杏aⅴ成人免费视频| 色先锋资源久久综合| 精品国产一区a| 一区二区三区欧美亚洲| 国产精品一区二区久久不卡| 欧美视频网站| 欧美天天综合网| 欧美国产一区二区在线观看| 婷婷一区二区三区| 99久久精品国产一区二区三区| 国产精品一区免费观看| 欧美电影免费观看高清完整版在线| 亚洲欧美国产三级| 国产999精品久久| 国产伦精品一区二区三区四区免费| 日韩视频永久免费| 亚洲成av人片在线| 91丨九色丨国产丨porny|