application|session|資料|資料庫|最佳化 ....對於Asp開發中對資料庫的串連管理,目前一般的處理方法都是調用一個conn.asp頁面,在裡面定義好相關的變數,然後根據不同的資料庫類型,建立好對應的Connection;以後其他需要資料庫聯結的地方就調用該頁面,然後進行相應處理!
我在最近的研究中發現,其實這種方法並不是最佳化的,對於稍大型一下的系統論壇來說,在每個頁面調用時候如果超過連線時間,就需要重建立立一遍對於資料庫的串連;我的初步想法是:在conn.asp頁面裡面,將一個開啟的Connection賦給Application儲存,然後,對於每個新串連使用者,再將該Application的串連賦給Session;這樣就可以保證每一個使用者的只建立一個Connection,對於速度提升和資料庫負載會有一定的協助尤其是使用者多的時候。(最近因為要做一個資訊平台,才接觸Asp開發,難免說錯,請見諒!)
附上我的conn.asp代碼:
<%
xzcInforCookies = "xzcInfor"
on error resume next
If g_dataBaseSort = "A" Then
g_connStr = "DBQ="& server.MapPath (""&g_dataPath&"\"&g_DBMasterName&"") &";DRIVER={Microsoft Access Driver (*.mdb)};"
SqlNowString = "Now()"
SqlChar = "'"
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&g_dataPath&"\"&g_DBMasterName&"")
Else
SqlLocalName ="192.1.*.*" '串連IP
SqlUsername ="****" '使用者名稱
SqlPassword ="****" '使用者密碼
SqlDatabaseName="***" '資料庫名
g_connStr = "Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"
SqlNowString = "GetDate()"
SqlChar = ""
ver = "4.10 SQL"
End If
'========================================================
'-- use Application 's connection for better performance
'--------------------------------------------------------
if isObject(Application(xzcInforCookies & "conn")) = False then
set g_conn = server.CreateObject("adodb.connection")
g_conn.CommandTimeout = 60 '以秒為單位
g_conn.Open g_connStr
if g_conn.Errors.count>0 then '錯誤處理(包括串連錯誤和oracle資料庫錯誤)
for i=0 to g_conn.Errors.count-1
tempErr=replace(replace(replace(g_conn.Errors(i).Description,vbcrlf,""),vbcr,""),vblf,"")
Response.Write "<script language='vbscript'>" + vbcrlf
Response.write "MsgBox ""發生資料庫連接錯誤,請於管理員聯絡。錯誤提示如下:""&vbcrlf&vbcrlf&"""&tempErr&""",vbOKonly,""錯誤提示資訊""" + vbcrlf
Response.Write "</script>"
next
Response.End
end if
Application.Lock
set Application(xzcInforCookies & "conn") = g_conn
Application.UnLock
end if
'=========================================
'-- every user use own session connection
'-----------------------------------------
if session(session.sessionid & "conn") = "" then
set session(session.sessionid & "conn") = Application(xzcInforCookies & "conn")
end if
set g_conn = session(session.sessionid & "conn")
%>