(57)【要約】【課題】  コネクションのプールでキャッシュしているオブジェクトの再利用率を高め、コンパイル処理を省略し、データ処理のアクセス性能及びシステム全体の性能の向上を図ることが可能な技術を提供する。【解決手段】  コネクションプールに蓄積しているコネクションの割り当て制御を行うコネクション割り当て方法において、コネクションの確立要求を行ったプログラムの情報とそれ以前にコネクションを利用したプログラムの情報を示す履歴情報とを比較し、コネクションの確立要求を行ったプログラムの情報に一致する履歴情報の未使用コネクションを、当該コネクションの確立要求を行ったプログラムへ通信装置により渡すステップと、前記プログラムへ渡したコネクションの履歴情報に当該プログラムの情報を記憶装置により格納して履歴情報を更新するステップとを有するものである。【選択図】図２
2006127362.tif 000002
【特許請求の範囲】
【請求項１】
コネクションプールに蓄積しているコネクションの割り当て制御を行うコネクション割り当て方法において、
コネクションの確立要求を行ったプログラムの情報とそれ以前にコネクションを利用したプログラムの情報を示す履歴情報とを比較し、コネクションの確立要求を行ったプログラムの情報に一致する履歴情報の未使用コネクションを、当該コネクションの確立要求を行ったプログラムへ通信装置により渡すステップと、前記プログラムへ渡したコネクションの履歴情報に当該プログラムの情報を記憶装置により格納して履歴情報を更新するステップとを有することを特徴とするコネクション割り当て方法。
【請求項２】
前記プログラムの情報に一致する履歴情報の未使用コネクションが複数存在する場合に、その内の任意の１つを選択して前記プログラムへ渡すことを特徴とする請求項１に記載されたコネクション割り当て方法。
【請求項３】
前記プログラムの情報に一致する履歴情報の未使用コネクションが存在しない場合に、全未使用コネクションの任意の１つを選択して前記プログラムへ渡すことを特徴とする請求項１または請求項２のいずれかに記載されたコネクション割り当て方法。
【請求項４】
コネクションプールに未使用コネクションが存在しない場合に、新規のコネクションを記憶装置上に作成し、その作成したコネクションを前記プログラムへ渡すことを特徴とする請求項１乃至請求項３のいずれか１項に記載されたコネクション割り当て方法。
【請求項５】
コネクションの確立要求を行ったプログラムの情報と、履歴情報中の最後にコネクションを利用したプログラムの情報とが一致する場合に、そのコネクションを前記プログラムへ渡すことを特徴とする請求項１乃至請求項４のいずれか１項に記載されたコネクション割り当て方法。
【請求項６】
コネクションの確立要求を行ったプログラムの情報と、履歴情報中の最後から２番目以前にコネクションを利用したプログラムの情報とが一致する場合に、そのコネクションを前記プログラムへ渡すことを特徴とする請求項１乃至請求項５のいずれか１項に記載されたコネクション割り当て方法。
【請求項７】
コネクションの確立要求を行ったプログラムの情報と、履歴情報中の最後にコネクションを利用したプログラムの情報とが一致するものが複数存在する場合に、履歴情報中の最後から２番目以前にコネクションを利用したプログラムの情報との一致を調べることにより、前記プログラムへ渡すコネクションの絞り込みを行うことを特徴とする請求項１乃至請求項６のいずれか１項に記載されたコネクション割り当て方法。
【請求項８】
コネクションをプログラムへ渡す際に、当該コネクションを利用したプログラムの情報としてそのプログラムの名称を当該コネクションの履歴情報へ格納して履歴情報の更新を行うことを特徴とする請求項１乃至請求項７のいずれか１項に記載されたコネクション割り当て方法。
【請求項９】
コネクションプールに蓄積しているコネクションの割り当て制御を行う情報処理装置において、
コネクションの確立要求を行ったプログラムの情報とそれ以前にコネクションを利用したプログラムの情報を示す履歴情報とを比較し、コネクションの確立要求を行ったプログラムの情報に一致する履歴情報の未使用コネクションを、当該コネクションの確立要求を行ったプログラムへ通信装置により渡すコネクション割り当て制御部と、前記プログラムへ渡したコネクションの履歴情報に当該プログラムの情報を記憶装置により格納して履歴情報を更新する履歴情報制御部とを備えることを特徴とする情報処理装置。
【請求項１０】
コネクションプールに蓄積しているコネクションの割り当て制御を行うコネクション割り当て方法をコンピュータに実行させる為のプログラムにおいて、
コネクションの確立要求を行ったプログラムの情報とそれ以前にコネクションを利用したプログラムの情報を示す履歴情報とを比較し、コネクションの確立要求を行ったプログラムの情報に一致する履歴情報の未使用コネクションを、当該コネクションの確立要求を行ったプログラムへ通信装置により渡すステップと、前記プログラムへ渡したコネクションの履歴情報に当該プログラムの情報を記憶装置により格納して履歴情報を更新するステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコネクションプールに蓄積しているコネクションの割り当て制御を行うコネクション割り当て技術に関するものである。
【背景技術】
【０００２】
データベース管理システムとアプリケーションサーバが連携して処理を行うとき、まずコネクションを確立する必要があるが、そのコネクションの確立には時間がかかる。そこで、予めコネクションを確立し、その確立済みのコネクションをアプリケーションサーバのコネクションプールで蓄積する技術がある。
【０００３】
アプリケーションを実行する時には、アプリケーションサーバのコネクションプールに蓄積されている未使用コネクションがあれば、その未使用コネクションをアプリケーションへ渡し、アプリケーションはこの渡された未使用コネクションを使ってデータベース管理システムにアクセスしながら処理を実行する流れになる。
【０００４】
このコネクションプールで蓄積しているコネクションを利用するのに先立ち、コネクションが正常に動作するのかを確認する技術が特許文献１で紹介されている。この従来技術である特許文献１に記載の技術はコネクションプールに蓄積しているコネクションが有効である確率を高める技術である。すなわち、データベース管理システムとのコネクションを確立する時の性能劣化の改善に着目した技術である。
【０００５】
このコネクションプールに蓄積している各コネクションには、SQL文をコンパイルしたSQLオブジェクトをキャッシュするステートメントプールが用意されている。このステートメントプールは、各コネクションで専用のため、他のコネクションと共用できない。アプリケーションへ割り当てたコネクションに用意されているステートメントプールでキャッシュされているSQLオブジェクトに、実行したいアプリケーションのSQL文と一致するSQLオブジェクトがキャッシュされていれば、その一致したSQLオブジェクトを再利用できる。SQLオブジェクトの再利用ができれば、コンパイル処理は不要となるため、データベースのアクセス性能及びシステム全体の性能が向上する。
【０００６】
また、このステートメントプールのキャッシュ領域は有限のため、キャッシュできるSQLオブジェクトは上限があり、上限を超えてキャッシュしようとすると、代わりに既にキャッシュ済みのSQLオブジェクトを破棄することになる。SQLオブジェクトを破棄した後、破棄したSQLオブジェクトと同一の要求があると再度コンパイル処理を行うことになるため、コンパイルしたSQLオブジェクトを破棄することは好ましくない。
【０００７】
【特許文献１】特開２００３−２１６４７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前記従来技術においてアプリケーション（プログラムやオブジェクト、スレッド、プロセスでも良い）を実行する際に、アプリケーションサーバのコネクションプールに蓄積されている任意の未使用コネクションを使ってデータベースへのアクセスを実行した場合、その未使用コネクションのステートメントプールに当該アプリケーションで使用するSQLオブジェクトがキャッシュされているとは限らない為、そのステートメントプールにキャッシュしているSQLオブジェクトを再利用する確率が下がり、データベースのアクセス性能及びシステム全体の性能が低下するという問題がある。
【０００９】
本発明の目的は上記問題を解決し、コネクションのプール（コネクションの管理手段）でキャッシュしているオブジェクトの再利用率を高め、コンパイル処理を省略し、データ処理のアクセス性能及びシステム全体の性能の向上を図ることが可能な技術を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、アプリケーションサーバのコネクションプールに蓄積している各コネクションを識別する為の履歴情報を付けたものであり、この履歴情報を活用して、アプリケーションサーバのコネクションプールに蓄積されているコネクションの中から最適な未使用コネクションを選択してアプリケーションへ渡す様にしたものである。
【００１１】
本発明のアプリケーションサーバは、クライアントマシンよりコネクションの確立要求を受け取ると、そのコネクションの確立要求を行ったアプリケーションプログラムの情報を通信装置によりクライアントマシンから取得する。
【００１２】
次にアプリケーションサーバは、コネクションプールに存在する未使用コネクションの履歴情報を記憶装置から取得した後、前記取得したアプリケーションプログラムの情報と前記履歴情報中の情報とを比較して、前記取得したプログラムの情報に一致する履歴情報の未使用コネクションを選択し、その選択したコネクションを前記コネクションの確立要求を行ったアプリケーションプログラムへ渡す。そして、そのアプリケーションプログラムへ渡したコネクションの履歴情報に当該アプリケーションプログラムの情報を記憶装置により格納して履歴情報を更新する。
【発明の効果】
【００１３】
本発明によれば、コネクションのプールでキャッシュしているオブジェクトの再利用率を高め、データ処理のアクセス性能の向上を図ることが可能である。
【発明を実施するための最良の形態】
【００１４】
以下にコネクションプールに蓄積しているコネクションの割り当て制御を行う一実施形態のコネクション割り当て装置について説明する。
【００１５】
図１は本実施形態のデータ通信システムのシステム全体の構成を示す図である。クライアントマシン１０１とアプリケーションサーバ１０２とデータベースサーバ１０３はそれぞれに主記憶装置１０４とＣＰＵ１０５を持ち、ネットワーク１１０で繋がっている。クライアントマシン１０１の主記憶装置１０４で、アプリケーションプログラムＡ１０６やアプリケーションプログラムＢ１０７を実行し、アプリケーションサーバ１０２の主記憶装置１０４で、本実施形態で検討するコネクションプールプログラム１０８を実行する。またデータベースサーバ１０３の主記憶装置１０４では、データベースマネージメントシステム１０９を実行する。ここで、クライアントマシン１０１、アプリケーションサーバ１０２やデータベースサーバ１０３は、計算機や情報処理装置であるものとするが、その様な処理を実施するプログラムやオブジェクトでも良い。
【００１６】
図２は本実施形態のコネクションプールプログラム１０８を詳細化したプログラム構成の一例を示す図である。図２に示す様に本実施形態のアプリケーションサーバ２０２は、コネクション割り当て制御部２０７と、履歴情報制御部２０９とを有している。
【００１７】
コネクション割り当て制御部２０７は、コネクションの確立要求を行ったアプリケーションプログラムの情報とそれ以前にコネクションを利用したアプリケーションプログラムの情報を示す履歴情報とを比較し、コネクションの確立要求を行ったアプリケーションプログラムの情報に一致する履歴情報の未使用コネクションを、当該コネクションの確立要求を行ったアプリケーションプログラムへ通信装置により渡す処理部である。
【００１８】
履歴情報制御部２０９は、前記履歴情報へのアクセスを制御し、前記アプリケーションプログラムへ渡したコネクションの履歴情報に当該アプリケーションプログラムの情報を記憶装置により格納してその履歴情報を更新する処理部である。
【００１９】
アプリケーションサーバ２０２をコネクション割り当て制御部２０７及び履歴情報制御部２０９として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２０】
図１で説明した通り、アプリケーションサーバ２０２でコネクションプールプログラム２０６が実行される。
【００２１】
コネクションプールプログラム２０６は、コネクション２１０を蓄積するプール２０８の他に、クライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５を実行時に、プール２０８で蓄積している未使用コネクション２１０をクライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５へ渡す処理を行うコネクション割り当て制御部２０７からなる。
【００２２】
プール２０８に蓄積している、データベースサーバ２０３のデータベースマネージメントシステム２１２との接続を確立する為の情報であるコネクション２１０には、ステートメントプール２１１が用意されていて、このステートメントプール２１１はSQLオブジェクトをキャッシュする。本例の各サーバは、計算や仮想計算機、論理サーバでも実現可能である。
【００２３】
クライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５を実行時にプール２０８の未使用コネクション２１０を渡すときは、ステートメントプール２１１も一緒にクライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５に渡される。そのため、クライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５でSQL文を実行するのに必要なオブジェクトが、渡された未使用コネクション２１０に用意されているステートメントプール２１１にキャッシュしているSQLオブジェクトと一致して再利用できれば、データベースサーバ２０３のデータベースマネージメントシステム２１２でコンパイルしなくてもSQLオブジェクトが得られるため性能が向上する。
【００２４】
このSQLオブジェクトの再利用率を高める為に、プール２０８に蓄積している複数のコネクション２１０の中から、個々のコネクション２１０を識別する為の履歴情報を付ける。コネクション割り当て制御部２０７は、履歴情報制御部２０９でこの履歴情報を活用し、クライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５で実行するSQL文が多く再利用できる確率の高いSQLオブジェクトをステートメントプール２１１にキャッシュした未使用コネクション２１０を選択する。その選択した未使用コネクション２１０をクライアントマシン２０１のアプリケーションプログラムＡ２０４やアプリケーションプログラムＢ２０５に渡すことで、SQLオブジェクトの再利用率を高め性能も向上させる。本例の各プログラムや各処理部は、ハードウェアやオブジェクト、スレッド、プロセスで実現することが可能である。各処理部は、プログラムで実現することが可能である。
【００２５】
図３は本実施形態の図２で示したプログラム構成の各要素の役割を示す図である。クライアントマシン３０１のアプリケーションプログラム３０４は、アプリケーションサーバ３０２のコネクションプールプログラム３０５にあるコネクション割り当て制御部３０６に対して、アプリケーションサーバ３０２のコネクションプールプログラム３０５とデータベースサーバ３０３のデータベースマネージメントシステム３１１間のコネクション接続要求を行う。
【００２６】
コネクション割り当て制御部３０６は、履歴情報制御部３０８で履歴情報を活用し、プール３０７で蓄積しているコネクション３０９に用意されているステートメントプール３１０でキャッシュしているSQLオブジェクトが再利用される確率の高い未使用コネクション３０９を選択する。
【００２７】
プール３０７に蓄積している全コネクション３０９が使用中の場合には、プール３０７からデータベースサーバ３０３のデータベースマネージメントシステム３１１へコネクション３０９の確立要求を行う。データベースサーバ３０３のデータベースマネージメントシステム３１１とのコネクション３０９が確立できたらプール３０７へ蓄積するが、そのときのコネクション３０９に用意されているステートメントプール３１０にはSQLオブジェクトは何もキャッシュされていない。そのため、クライアントマシン３０１のアプリケーションプログラム３０４にあるSQL文を実行時に、データベースサーバ３０３のデータベースマネージメントシステム３１１でSQL文をコンパイルしてSQLオブジェクトを得てから、コネクション３０９に用意されているステートメントプール３１０にキャッシュすることになる。
【００２８】
プール３０７から取り出す未使用コネクション３０９を決定できたのでコネクション割り当て制御部３０６は、この決定した未使用コネクション３０９をプール３０７から取り出してクライアントマシン３０１のアプリケーションプログラム３０４へ渡す。
【００２９】
図４は本実施形態の図３のコネクション割り当て制御部３０６による未使用コネクション３０９の割り当て処理の処理手順を示すフローチャートである。まずコネクション割り当て制御部３０６は、実行するクライアントマシン３０１のアプリケーションプログラム３０４の情報を通信装置によりクライアントマシン３０１から取得する（ステップ４０１）。このときに取得する情報は、クライアントマシン３０１はどのアプリケーションプログラム３０４を実行するのかという情報である。
【００３０】
次にコネクション割り当て制御部３０６は、プール３０７中のコネクション３０９の使用状態を示す情報を参照し、プール３０７に未使用コネクション３０９が１つでも存在するかを確認する（ステップ４０２）。プール３０７に未使用コネクション３０９が１つでも存在する場合は、プール３０７に存在する全未使用コネクション３０９の履歴情報を取得する（ステップ４０３）。
【００３１】
ステップ４０３でプール３０７に存在する全未使用コネクション３０９の履歴情報を取得後は、その取得した履歴情報とステップ４０１で取得した実行するクライアントマシン３０１のアプリケーションプログラム３０４の情報とを比較し、それらの情報が一致する未使用コネクション３０９が１つでも存在するか確認する（ステップ４０４）。
【００３２】
ステップ４０４で比較した結果、前記の情報が一致する未使用コネクション３０９がプール３０７に１つでも存在する場合は、その一致する全未使用コネクション３０９だけを選択候補とする（ステップ４０５）。もし、この選択候補の未使用コネクション３０９が１つだけしか存在しない場合は、それがクライアントマシン３０１のアプリケーションプログラム３０４に渡す未使用コネクション３０９となる。または、この選択候補の未使用コネクション３０９が複数ある場合は、この選択候補の全未使用コネクション３０９から任意の１つを選択する（ステップ４０６）。
【００３３】
この選択した１つの未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４に渡すことを決定する（ステップ４０７）。この決定した未使用コネクション３０９の履歴情報を、ステップ４０１で取得したクライアントマシン３０１のアプリケーションプログラム３０４の情報を用いて更新する（ステップ４０８）。そして、その履歴情報が更新済みの未使用コネクション３０９を、クライアントマシン３０１のアプリケーションプログラム３０４に渡す（ステップ４０９）。
【００３４】
また、ステップ４０４でクライアントマシン３０１のアプリケーションプログラム３０４の情報とプール３０７に存在する全未使用コネクション３０９の履歴情報を比較した結果、一致する未使用コネクション３０９が１つも存在しない場合は、比較した全未使用コネクション３０９を選択範囲とし、その選択範囲から任意の１つを選択する（ステップ４０６）。そして、その選択した未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡すことを決定する（ステップ４０７）。あとは同様に、この決定した未使用コネクション３０９の履歴情報をステップ４０１で得たクライアントマシン３０１のアプリケーションプログラム３０４の情報を用いて更新し（ステップ４０８）、この履歴情報を更新済みの未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡す（ステップ４０９）。
【００３５】
また、ステップ４０２でプール３０７に未使用コネクション３０９が１つも存在しない場合は、コネクション３０９を１つ作成する（ステップ４１０）。その作成したコネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡すことを決定する（ステップ４０７）。あとは同様に、この決定した未使用コネクション３０９の履歴情報をステップ４０１で得たクライアントマシン３０１のアプリケーションプログラム３０４の情報を用いて更新（ステップ４０８）し、この履歴情報を更新済みの未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡す（ステップ４０９）。
【００３６】
上記の処理により、割り当て処理が完結する。複数のクライアントマシン３０１のアプリケーションプログラム３０４を実行する場合は、この割り当て処理を繰り返す。
【００３７】
図５は本実施形態の図３の履歴情報制御部３０８で活用する履歴情報を管理するテーブルの第１の例を示す図である。図４のステップ４０８でクライアントマシン３０１のアプリケーションプログラム３０４へ渡すことを決定した未使用コネクション３０９の履歴情報の更新を実行するたび、この履歴情報を管理するテーブルの更新を行う。
【００３８】
この履歴情報を管理するテーブルは、プール３０７に存在する各コネクション３０９を識別する為のコネクション名５０１と、そのコネクション３０９の履歴情報（最後に当該コネクションを利用したアプリケーション名）５０２でペアになり１つの要素を形成する。
【００３９】
ステップ４１０でコネクション３０９を１つ作成すると、この履歴情報を管理するテーブルに新たな要素が追加され、そのコネクション名５０１にはユニークな名前が付与されるが、対応する履歴情報（最後に当該コネクションを利用したアプリケーション名）５０２の値は無くnullになる。この履歴情報（最後に当該コネクションを利用したアプリケーション名）５０２の値が更新されるのは、ステップ４０８でクライアントマシン３０１のアプリケーションプログラム３０４へ渡すことを決定した未使用コネクション３０９の履歴情報の更新を実行するときである。
【００４０】
ステップ４１０でコネクション３０９を１つ作成した後は、ステップ４０７の実行でこの作成したコネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡すことを決定し、ステップ４０８の実行でこの決定した未使用コネクション３０９の履歴情報を更新するときに初めて履歴情報（最後に当該コネクションを利用したアプリケーション名）５０２に値が入る。
【００４１】
また、ステップ４０３ではプール３０７に存在する未使用コネクション３０９の要素だけのテーブルを取得する。ステップ４０４ではこの取得したテーブルとステップ４０１で得たクライアントマシン３０１のアプリケーションプログラム３０４の情報とを比較して、一致する履歴情報（最後に当該コネクションを利用したアプリケーション名）５０２があるかを確認する。一致する履歴情報（最後に当該コネクションを利用したアプリケーション名）５０２があれば、この履歴情報を管理するテーブルで対応する要素のコネクション名５０１を取得する。この取得したコネクション名５０１に対応するプール３０７に蓄積している未使用コネクション３０９が、クライアントマシン３０１のアプリケーションプログラム３０４へ渡す候補として選択される。
【００４２】
図６は本実施形態の図３の履歴情報制御部３０８で活用する履歴情報を管理するテーブルの第２の例を示す図である。図５と同様に、コネクション名６０１と履歴情報（当該コネクションを利用したアプリケーション名）６０２でペアになり１つの要素を形成する。
【００４３】
図５と違う点は、プール３０７に蓄積しているコネクション３０９の履歴情報（当該コネクションを利用したアプリケーション名）６０２を、最後に利用したアプリケーション名だけでなく、過去複数回前以降に利用したアプリケーション名を履歴情報として管理していることである。
【００４４】
この履歴情報を管理するテーブルの要素である履歴情報（当該コネクションを利用したアプリケーション名）６０２は、最後に利用したアプリケーション名６０３、最後から２番目に利用したアプリケーション名６０４、・・・、最後からｎ番目に利用したアプリケーション名の様に、過去ｎ回分の履歴情報を要素として管理している。
【００４５】
そして、図４のステップ４０８を実行するときにこのテーブルの更新を行うが、その際には過去ｎ回分の利用履歴情報の更新を行う。また、ステップ４０３ではプール３０７に存在する未使用コネクション３０９の情報だけを抽出してテーブルを作成する。
【００４６】
この抽出したテーブルとステップ４０１で得たクライアントマシン３０１のアプリケーションプログラム３０４の情報とを比較するステップ４０４では、この抽出したテーブルの履歴情報（当該コネクションを利用したアプリケーション名）６０２の要素の最後に利用したアプリケーション名６０３で一致する未使用コネクション３０９がなくても、最後から２番目に利用したアプリケーション名６０４、・・・、最後からｎ番目の様に、最大ｎ回の比較を行う。
【００４７】
最大ｎ回の比較を行うことで各未使用コネクション３０９を識別する特徴が増え、より厳密にクライアントマシン３０１のアプリケーションプログラム３０４へ渡す未使用コネクション３０９の選択が可能になる。
【００４８】
ｎ回の比較を行うときは、図４のステップ４０４とステップ４０５をｎ回繰り返す。その繰り返しのたびに履歴情報を管理するテーブルで活用する要素を変えるため、ステップ４０４で比較する未使用コネクション３０９の履歴情報は変わる。すなわちｎ回目の繰り返しで実行するステップ４０４で活用する未使用コネクション３０９の履歴情報は、履歴情報を管理するテーブルの履歴情報（当該コネクションを利用したアプリケーション名）６０２の要素である最後からｎ番目に利用したアプリケーション名の値になる。
【００４９】
ステップ４０４では、この繰り返しのたびに変わる未使用コネクション３０９の履歴情報と、不変であるクライアントマシン３０１のアプリケーションプログラム３０４の情報とを比較する。この繰り返しの最大値であるｎの値は、テーブルの履歴情報（当該コネクションを利用したアプリケーション名）６０２で過去何回分の履歴情報を管理しているかに依存し、テーブルで管理している回数分以下の値である必要がある。
【００５０】
また、最大であるｎ回分の履歴情報まで比較しても一致する未使用コネクション３０９が存在しないときは、あまり適切でない未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４に渡すことになる。これは、クライアントマシン３０１のアプリケーションプログラム３０４が実行すると思われるSQL文に対応するSQLオブジェクトをステートメントプール３１０に多くキャッシュしている可能性が高い未使用コネクション３０９がプール３０７に存在しないためであり、どの未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４に渡しても性能向上があまり見込めないケースである。
【００５１】
また、ステップ４０４での履歴情報の最後に利用したアプリケーション名６０３で比較した結果、複数の未使用コネクション３０９が一致した場合は、ステップ４０５でその一致した未使用コネクション３０９のみを選択候補に絞る。更にステップ４０４を繰り返し、この絞った未使用コネクション３０９のみに対し今度は履歴情報の最後から２番目に利用したアプリケーション名６０４で比較する。もし、履歴情報の最後から２番目に利用したアプリケーション名６０４で比較しても複数の未使用コネクション３０９が一致した場合は、その一致した未使用コネクション３０９のみに対し今度は履歴情報の最後から３番目に利用したアプリケーション名と比較する。この繰り返しを最大ｎ回、すなわち過去ｎ回分の履歴情報を活用して行う。
【００５２】
最大ｎ回までの比較の過程で一致する未使用コネクション３０９が１つだけになれば、その未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡す。未使用コネクション３０９を１つに絞れなくても、一致する未使用コネクション３０９が無くなる繰り返しの１回手前の繰り返しで選択候補になっている未使用コネクション３０９の中から任意の１つを選択することで、最適に近い未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡せる。
【００５３】
この様に、履歴情報を管理するテーブルの履歴情報（当該コネクションを利用したアプリケーション名）６０２で過去ｎ回前以降の履歴情報を活用して比較した場合は、最大ｎ回の比較により絞りこむため、最適な未使用コネクション３０９をクライアントマシン３０１のアプリケーションプログラム３０４へ渡す確率を高くすることができる。
【００５４】
前記の様に本実施形態では、アプリケーションを実行する時に渡す未使用コネクションとして、ステートメントプールにキャッシュしているSQLオブジェクトを再利用する確率が高い未使用コネクションを割り当てており、この割り当てを繰り返すことで、更にSQLオブジェクトを再利用する確率を高め、SQL文のコンパイル処理を省くことにより、データベースのアクセス性能及びシステム全体の性能を向上させることが可能という利点がある。
【００５５】
以上説明した様に本実施形態のコネクション割り当て装置によれば、コネクションの確立要求を行ったプログラムの情報に一致する履歴情報の未使用コネクションを当該プログラムへ渡すので、コネクションのプールでキャッシュしているオブジェクトの再利用率を高め、コンパイル処理を省略し、データ処理のアクセス性能及びシステム全体の性能の向上を図ることが可能である。
【図面の簡単な説明】
【００５６】
【図１】本実施形態のデータ通信システムのシステム全体の構成を示す図である。
【図２】本実施形態のコネクションプールプログラム１０８を詳細化したプログラム構成の一例を示す図である。
【図３】本実施形態の図２で示したプログラム構成の各要素の役割を示す図である。
【図４】本実施形態の図３のコネクション割り当て制御部３０６による未使用コネクション３０９の割り当て処理の処理手順を示すフローチャートである。
【図５】本実施形態の図３の履歴情報制御部３０８で活用する履歴情報を管理するテーブルの第１の例を示す図である。
【図６】本実施形態の図３の履歴情報制御部３０８で活用する履歴情報を管理するテーブルの第２の例を示す図である。
【符号の説明】
【００５７】
１０１…クライアントマシン、１０２…アプリケーションサーバ、１０３…データベースサーバ、１０４…主記憶装置、１０５…ＣＰＵ、１０６…アプリケーションプログラムＡ、１０７…アプリケーションプログラムＢ、１０８…コネクションプールプログラム、１０９…データベースマネージメントシステム、１１０…ネットワーク、２０１…クライアントマシン、２０２…アプリケーションサーバ、２０３…データベースサーバ、２０４…アプリケーションプログラムＡ、２０５…アプリケーションプログラムＢ、２０６…コネクションプールプログラム、２０７…コネクション割り当て制御部、２０８…プール、２０９…履歴情報制御部、２１０…コネクション、２１１…ステートメントプール、２１２…データベースマネージメントシステム、２１３…ネットワーク、３０１…クライアントマシン、３０２…アプリケーションサーバ、３０３…データベースサーバ、３０４…アプリケーションプログラム、３０５…コネクションプールプログラム、３０６…コネクション割り当て制御部、３０７…プール、３０８…履歴情報制御部、３０９…コネクション、３１０…ステートメントプール、３１１…データベースマネージメントシステム、５０１…コネクション名、５０２…履歴情報（最後に当該コネクションを利用したアプリケーション名）、６０１…コネクション名、６０２…履歴情報（当該コネクションを利用したアプリケーション名）、６０３…最後に利用したアプリケーション名、６０４…最後から２番目に利用したアプリケーション名。
【図１】
2006127362.tif 000003
【図２】
2006127362.tif 000004
【図３】
2006127362.tif 000005
【図４】
2006127362.tif 000006
【図５】
2006127362.tif 000007
【図６】
2006127362.tif 000008