この記事では、Asp が実装するデータベース接続プールの共有機能を中心に紹介します。この機能により、Web ページのアクセス速度が向上し、必要な友人がデータベースを参照できるようになります。
データベース接続は、特にマルチユーザー Web アプリケーションにおいて、重要かつ制限があり、高価なリソースです。データベース接続の管理は、アプリケーション全体のスケーラビリティと堅牢性に大きく影響し、プログラムのパフォーマンス指標に影響を与える可能性があります。この問題に対処するために、データベース接続プールが提案されました。データベース接続プールは、データベース接続の割り当て、管理、解放を担当します。これにより、アプリケーションは、アイドル時間が最大アイドル時間を超えるデータベース接続を再確立する代わりに、既存のデータベース接続を再利用して、解放の失敗によるエラーを回避できます。データベース接続の欠落が原因です。このテクノロジーにより、データベース操作のパフォーマンスが大幅に向上します。
ただし、このテクノロジは Java、php で一般的に使用されており、一部の企業 Web サイトではそのようなテクノロジがまったく必要ないため、ASP はほとんど使用されません。
使えないわけではありませんが、Webページのアクセス速度を高速化し、データベースへの負担を軽減できるASPバージョンを調査しました。
1. データベース接続ファイル DbPool.asp
< %Const PoolSize = 10Const Connstr = Driver={SQL Server};Server=(local);UID=sa;word=555;Database=db Function GetRandString(lenth)Dim rndstr,iRandomizerndstr = i = 1do while i <= lenthrndstr = rndstr & Chr(cint(((120 - 98 + 1) * Rnd )+ 97))i = i + 1loopGetRandString = rndstrEnd Function Function CreateDbConn()Dim DbConn,ConnKeySet DbConn = Server.CreateObject(ADODB.Connection)DbConn. Open ConnstrConnKey = GetRandString(10)DbPool.Add ConnKey,DbConnEnd Function Function GetDbConn()Dim CurKey,KeysIf DbPool.Count > 0 thenKeys = 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 CurKeyCall CreateDbConn() '新しい接続を作成してプールに追加します Set GetDbConn = GetDbConn()Else 'それ以外の場合、削除します プールからログアウトし、コピーしたオブジェクトを DbPool に返します。Remove CurKeySet GetDbConn = ConnExit FunctionEnd IfElseResponse.Write 接続プールを使い果たしました。アプリケーションを再初期化してください。Response.EndEnd ifEnd Function Function FreeDbConn(DbConn)DbPool。 GetRandString(10) 、DbConnEnd 関数を追加
2. グローバル ファイル global.asa
<object ID=DbPool Progid=Scripting.Dictionary Scope=Application runat=server></object><!--#include file=DbPool.asp-->< %Sub Application_OnStartDim ConnKeyFor i = 1 To PoolSize '指定された数を作成しますデータベース接続のCreateDbConn()NextEnd Sub Sub Application_OnEndDbPool.RemoveAllEnd Sub%>
3. テスト ファイル test.asp
<!--#include file=DbPool.asp-->< %Response.Write テスト開始:<br>Response.Write 現在のオブジェクト数 : & DbPool.Count & <br /> Set dbconn = Server.CreateObject(ADODB. Connection)Set dbconn = GetDbConn()Response.Write プールから 1 つの接続を取得します <br />Response.Write 現在のオブジェクト数 : & DbPool.Count & <br /> Set Rs = Server.CreateObject(ADODB.Recordset)Rs.open select * from mkdb,dbconn,1,1Do While Not rs.eofResponse.write Rs(v_oid) & <br />Rs.movenextloop FreeDbConn(dbconn)Response.Write 1 つの接続をプールに解放します <br />Response.Write 現在のオブジェクトカウント : & DbPool.Count & <br /> %>