Asp 구현 데이터베이스 연결 탱크 기능 함수 공유

데이터베이스 연결 은 관건 적 인 유한 하고 비 싼 자원 이라는 점 은 다 중 사용자 의 웹 응용 프로그램 에서 특히 두드러진다.데이터베이스 연결 에 대한 관 리 는 전체 응용 프로그램의 신축성 과 건장 성에 현저 한 영향 을 주 고 프로그램의 성능 지표 에 영향 을 줄 수 있다.데이터베이스 연결 탱크 는 바로 이 문제 에 대해 제기 한 것 이다.데이터베이스 연결 탱크 는 데이터베이스 연결 을 분배,관리,방출 하 는 것 을 책임 집 니 다.이 는 응용 프로그램 이 기 존의 데이터 베 이 스 를 다시 만 드 는 것 이 아니 라 기 존의 데이터 베 이 스 를 반복 적 으로 사용 할 수 있 습 니 다.최대 여가 시간 을 초과 한 데이터베이스 연결 을 방출 하여 데이터베이스 연결 이 방출 되 지 않 아 발생 하 는 데이터베이스 연결 이 누락 되 지 않도록 합 니 다.이 기술 은 데이터베이스 조작 에 대한 성능 을 뚜렷하게 향상 시 킬 수 있다.
그러나 이 기술 은 일반적으로 자바,phop,.net 에서 사용 되 는데 asp 는 거의 사용 되 지 않 습 니 다.일부 기업 사이트 에 서 는 이러한 기술 이 필요 하지 않 기 때 문 입 니 다.
사용 할 수 없 는 것 도 아니 고 다음은 연 구 된 asp 버 전 으로 웹 페이지 의 방문 속 도 를 가속 화하 고 데이터 뱅 크 의 압력 을 낮 출 수 있 습 니 다.
1.데이터베이스 연결 파일 DbPool.asp

< %
Const PoolSize = 10
Const Connstr = "Driver={SQL Server};Server=(local);UID=sa;word=555;Database=db"
 
Function GetRandString(lenth)
Dim rndstr,i
Randomize
rndstr = ""
i = 1
do while i <= lenth
rndstr = rndstr & Chr(cint(((120 - 98 + 1) * Rnd )+ 97))
i = i + 1
loop
GetRandString = rndstr
End Function
 
Function CreateDbConn()
Dim DbConn,ConnKey
Set DbConn = Server.CreateObject("ADODB.Connection")
DbConn.Open Connstr
ConnKey = GetRandString(10)
DbPool.Add ConnKey,DbConn
End Function
 
 
Function GetDbConn()
Dim CurKey,Keys
If DbPool.Count > 0 Then
Keys = DbPool.Keys '     。
CurKey = Keys(0)
Response.Write "Cur DbConn Key Is : " & CurKey & "<br />"
Set Conn = Server.CreateObject("ADODB.Connection")
Set Conn = DbPool(CurKey)
If Conn.State = adStateClosed Then '          ,       ,                
DbPool.Remove CurKey
Call CreateDbConn() '            
Set GetDbConn = GetDbConn()
Else '    ,       ,          
DbPool.Remove CurKey
Set GetDbConn = Conn
Exit Function
End If
Else
Response.Write "      ,          "
Response.End
End if
End Function
 
Function FreeDbConn(DbConn)
DbPool.Add GetRandString(10),DbConn
End Function
2.전역 파일 global.asa

<object ID="DbPool" Progid="Scripting.Dictionary" Scope="Application" runat="server"></object>
<!--#include file="DbPool.asp"-->
< %
Sub Application_OnStart
Dim ConnKey
For i = 1 To PoolSize '            
CreateDbConn()
Next
End Sub
 
Sub Application_OnEnd
DbPool.RemoveAll
End Sub
%>
3.테스트 파일 test.asp

<!--#include file="DbPool.asp"-->
< %
Response.Write "Test Start:<br>"
Response.Write "Current Objects count : " & DbPool.Count & "<br />"
 
Set dbconn = Server.CreateObject("ADODB.Connection")
Set dbconn = GetDbConn()
Response.Write "get one connection from pool <br />"
Response.Write "Current Objects count : " & DbPool.Count & "<br />"
 
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.open "select * from mkdb",dbconn,1,1
Do While Not rs.eof
Response.write Rs("v_oid") & "<br />"
Rs.movenext
loop
 
FreeDbConn(dbconn)
Response.Write "free one connection to pool <br />"
Response.Write "Current Objects count : " & DbPool.Count & "<br />"
 
%>

좋은 웹페이지 즐겨찾기