(57)【要約】【課題】複数の装置に実行させる処理の効率化を図る。【解決手段】情報処理装置１０は、決定手段１２と制御手段１３とを有する。決定手段１２は、並列に処理を実行させる複数の装置１〜３のうち、処理に要する時間が所定値より長い装置への処理要求が、他の装置よりも先に送信されるように、処理要求の送信順を決定する。制御手段１３は、決定された送信順で、複数の装置１〜３それぞれに対して処理要求を送信し、複数の装置１〜３に並列に処理を実行させる。【選択図】図１
2014199534.tif 000002
【特許請求の範囲】
【請求項１】
並列に処理を実行させる複数の装置のうち、処理に要する時間が所定値より長い装置への処理要求が、他の装置よりも先に送信されるように、前記複数の装置への処理要求の送信順を決定する決定手段と、
該送信順で、前記複数の装置それぞれに対して処理要求を送信し、前記複数の装置に並列に処理を実行させる制御手段と、
を有する情報処理装置。
【請求項２】
前記決定手段は、装置によって処理が実行されるごとに、該装置の処理に要する時間に関する統計情報を更新することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記決定手段は、処理時間が長いほど上位となる複数の等級を設け、並列に処理を実行させる複数の装置それぞれについて、処理時間に基づいて等級を決定し、等級が上位の装置ほど処理要求が先に送信されるように送信順を決定することを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記決定手段は、並列に処理を実行させる複数の装置の処理時間の平均からの、前記複数の装置それぞれの処理時間のかい離率を計算し、処理時間のかい離率が閾値より大きい装置を、処理に要する時間が所定値より長い装置とすることを特徴とする請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
前記決定手段は、前記複数の装置それぞれで提供されるリソースを更新するトランザクションの実行時に、送信順を決定し、
前記制御手段は、トランザクションの結果を前記複数の装置それぞれに確定させる処理要求を、前記複数の装置それぞれに送信する、
ことを特徴とする請求項１乃至４のいずれかに記載の情報処理装置。
【請求項６】
前記決定手段は、トランザクションで更新されるリソースを提供する複数の装置から、処理の成功率が所定の成功率判定値未満であり、かつ処理時間が所定の処理時間判定値未満の装置を特定し、前記複数の装置のうちの、該特定した装置以外の装置を、並列に処理を実行させる複数の装置とすることを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記決定手段は、トランザクションで更新されるリソースを提供する複数の装置における処理の平均の成功率からの、前記複数の装置それぞれの成功率のかい離率を計算し、成功率のかい離率が閾値未満の装置を特定することを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記制御手段は、前記特定された装置に対して先行して処理要求を送信し、該装置から処理が正常に完了したことを示す応答を受信した後、並列に処理時を実行させる複数の装置それぞれに対して処理要求を送信することを特徴とする請求項６または７記載の情報処理装置。
【請求項９】
前記制御手段は、トランザクションの２フェーズコミットにおけるリソース操作の処理要求を、決定された送信順で送信することを特徴とする請求項５乃至８のいずれかに記載の情報処理装置。
【請求項１０】
情報処理装置に、
並列に処理を実行させる複数の装置のうち、処理に要する時間が所定値より長い装置への処理要求が、他の装置よりも先に送信されるように、処理要求の送信順を決定し、
該送信順で、前記複数の装置それぞれに対して処理要求を送信し、前記複数の装置に並列に処理を実行させる、
処理を実行させる処理要求プログラム。
【請求項１１】
情報処理装置が、
並列に処理を実行させる複数の装置のうち、処理に要する時間が所定値より長い装置への処理要求が、他の装置よりも先に送信されるように、処理要求の送信順を決定し、
該送信順で、前記複数の装置それぞれに対して処理要求を送信し、前記複数の装置に並列に処理を実行させる、
処理要求方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置に処理要求を送信する情報処理装置、処理要求プログラム、および処理要求方法に関する。
【背景技術】
【０００２】
コンピュータで実行される処理として、トランザクションがある。トランザクションは、複数の処理を１つの処理単位としてまとめたものである。トランザクションでは、実行するすべての処理について、すべて成功するか、すべて失敗するかのいずれかになることが保証される。
【０００３】
トランザクションのなかには、複数のリソースを操作するものがある。ここでリソースとは、データベースやサービスである。またトランザクションで操作されるリソースには、例えばThe Open Groupの「Distributed Transaction Processing : The XA Specification」の仕様に規定されているリソースマネージャで提供されるリソースも含まれる。
【０００４】
複数のリソースを操作するトランザクションでは、それらのリソースの内容の整合性を保つために、例えば２フェーズコミットと呼ばれる技術が用いられる。２フェーズコミットでは、トランザクションを実行するコンピュータは、各リソースを提供するサーバの準備確認を行う。準備確認では、トランザクションを実行するコンピュータは、リソースを提供するサーバに対して、リソースの更新が可能かどうかを問い合わせる。各サーバは、その問い合わせに応じて更新準備を行い、準備が完了すると、準備完了を応答する。トランザクションを実行するコンピュータは、リソースを提供するすべてのサーバからの準備完了の応答を確認すると、各サーバに対して操作反映（コミット）を指示する。各サーバは、操作反映の指示に応じて、リソースの内容を更新する。操作反映が不可能なリソースが１つでも存在する場合は、トランザクションを実行するコンピュータは、リソースを管理するすべてのサーバに対して、リソース操作の取り消し（ロールバック）を指示する。
【０００５】
２フェーズコミットに関する技術としては、例えば、計算機間の通信ネットワークを経由したメッセージの送信回数が最小となる経路でコミット制御メッセージを送信する技術が考えられている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−２５９３８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、２フェーズコミットでは、リソースを提供する複数のサーバそれぞれへの、準備確認や操作反映のメッセージを送信する順番について考慮されていない。そのため、非効率的な順番でメッセージが送信され、全体の処理時間を長期化させるおそれがある。なお、２フェーズコミットに限らず、複数の装置に処理要求を送信し、各装置からの応答を待つ技術であれば、効率の悪い順番で処理要求が送信されると、処理時間が長期化する。
【０００８】
１つの側面では、本件は、複数の装置に実行させる処理の効率化を図ることを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、決定手段と制御手段とを有する情報処理装置が提供される。決定手段は、並列に処理を実行させる複数の装置のうち、処理に要する時間が所定値より長い装置への処理要求が、他の装置よりも先に送信されるように、複数の装置への処理要求の送信順を決定する。制御手段は、該送信順で、複数の装置それぞれに対して処理要求を送信し、複数の装置に並列に処理を実行させる。
【発明の効果】
【００１０】
１態様によれば、複数の装置に処理を効率的に実行させることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るシステムの一例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いるアプリケーションサーバのハードウェアの一構成例を示す図である。
【図４】第２の実施の形態を実現するための機能を示すブロック図である。
【図５】リソース統計情報記憶部のデータ構造の一例を示す図である。
【図６】トランザクションの手順の一例を示すシーケンス図である。
【図７】処理時間によるリソース一覧の並べ替えの一例を示す図である。
【図８】成功率に基づくリソース一覧の並べ替えの第１の例を示す図である。
【図９】成功率に基づくリソース一覧の並べ替えの第２の例を示す図である。
【図１０】順番判定処理の手順の一例を示す図である。
【図１１】コミット処理の第１の例を示す図である。
【図１２】コミット処理の第２の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るシステムの一例を示す図である。第１の実施の形態では、情報処理装置１０がネットワーク４を介して複数の装置１〜３に接続されている。情報処理装置１０は、複数の装置１〜３それぞれに対して、処理要求を送信し、処理を実行させることができる。情報処理装置１０は、複数の装置１〜３に処理を実行させるために、記憶手段１１、決定手段１２、および制御手段１３を有する。
【００１３】
記憶手段１１は、複数の装置１〜３の処理に要する時間に関する統計情報１１ａを記憶する。
決定手段１２は、複数の装置１〜３のうち、処理に要する時間（処理時間）が所定値より長い装置への処理要求が、他の装置よりも先に送信されるように、処理要求の送信順を決定する。例えば決定手段１２は、統計情報１１ａを参照し、複数の装置１〜３それぞれの処理時間を認識する。そして、決定手段１２は、処理に要する時間が長いほど処理要求が先に送信されるように、送信順を決定することができる。また決定手段１２は、処理時間が長いほど上位となる複数の等級（ランク）を設け、並列に処理を実行させる複数の装置１〜３それぞれについて、処理時間に基づいて等級を決定することもできる。等級としては、例えば処理時間が「長い」、「普通」、「短い」の３等級とすることができる。そして決定手段１２は、等級が上位の装置ほど処理要求が先に送信されるように送信順を決定する。また決定手段１２は、装置によって処理が実行されるごとに、その装置の処理に要する時間に関する統計情報１１ａを更新することもできる。
【００１４】
制御手段１３は、決定手段１２で決定された送信順で、複数の装置１〜３それぞれに対して処理要求を送信し、複数の装置１〜３に並列に処理を実行させる。
このようなシステムによれば、情報処理装置１０の決定手段１２により、複数の装置１〜３それぞれに対し、処理時間が長い装置から順に処理要求を送信するように、処理要求の送信順が決定される。例えば統計情報１１ａに、各装置１〜３の処理時間が設定されている。図１の例では、装置１の処理時間「ｔ１」、装置２の処理時間「ｔ２」、装置３の処理時間「ｔ３」との関係が、「ｔ２＜ｔ１＜ｔ３」である（ｔ１，ｔ２，ｔ３は、正の実数）。この場合、決定手段１２は、例えば統計情報１１ａを参照し、各装置１〜３の処理時間を比較する。そして決定手段１２は、処理時間が最も長い装置３を、処理要求の送信順の１番目に決定し、処理時間が２番目に長い装置１を、処理要求の送信順の２番目に決定し、処理時間が最も短い装置２を、処理要求の送信順の３番目に決定する。決定手段１２は、決定した送信順を、制御手段１３に通知する。
【００１５】
制御手段１３は、決定された送信順で、複数の装置１〜３それぞれに処理要求を送信する。図１の例では、最初に装置３に対して処理要求を送信し、次に装置１に対して処理要求を送信し、最後に装置２に対して処理要求を送信する。なお制御手段１３は、装置１〜３に並列に処理を実行させる。すなわち制御手段１３は、先に送信した処理要求に対する結果の応答を待たずに、次の処理要求を送信する。
【００１６】
制御手段１３が送信した処理要求は、ネットワーク４を介して複数の装置１〜３それぞれに送られる。処理要求を受信した複数の装置１〜３それぞれは、処理要求に応じて処理を実行する。そして複数の装置１〜３それぞれは、処理が終了すると、処理結果を情報処理装置１０に応答する。
【００１７】
これにより、情報処理装置１０は、処理要求を他の送信順で送信した場合に比べて効率的に処理が行われる。その結果、短い時間で、すべての装置１〜３からの応答を受信することができる。
【００１８】
例えば、処理時間の短い装置２から順に処理要求を送信した場合、処理要求の送信間隔の分だけ、他の装置１，３への処理要求の送信が遅れる。すると、最も処理時間が長い装置３への処理要求の送信が遅れ、装置３から処理結果の応答を受信するのも遅れることとなる。それに対し、請求項１に示すように、最も処理時間が長い装置３への処理要求を最初に送信することで、装置３からの応答を、可能な限り早く受信することができる。しかも他の装置１，２は、装置３よりも処理時間が短いため、装置３からの応答の送信より前に、装置１，２からの応答の送信が期待できる。すなわち装置３に最初に処理要求を送信し、処理を迅速に開始させることで、複数の装置１〜３に対して処理を並列で実施させた場合において、すべての装置１〜３で処理が完了するまでの所要時間が短縮される。
【００１９】
しかも処理要求がネットワーク４を介して転送される場合、ネットワーク４の負荷状況に応じて、処理要求の転送の遅延時間も変化する。ネットワーク４上で通信を中継する装置は、情報を受信した順に転送するため、処理要求を短い時間間隔で連続して送信しても、送信が後の処理要求は、前の処理要求よりも転送の遅延時間が長くなる可能性がある。そこで第１の実施の形態では、処理時間が長い装置３への処理要求を最初に送信することで、装置３への処理要求が他の装置１，２への処理要求よりも優先して転送されるようにし、全体としての処理の遅延を抑止している。
【００２０】
なお決定手段１２は、並列に処理を実行させる複数の装置１〜３の処理時間の平均からの、複数の装置１〜３それぞれの処理時間のかい離率に基づいて、複数の装置１〜３それぞれの等級を決定するようにしてもよい。例えば決定手段１２は、複数の装置１〜３の処理時間の平均からの、複数の装置１〜３それぞれの処理時間のかい離率を計算し、処理時間のかい離率が閾値より大きい装置を、処理時間が所定値より長い装置とする。この場合、かい離率が閾値となる処理時間が、処理時間の所定値である。処理時間の平均からのかい離率を用いることで、並列で処理を実行する装置の処理時間の相対的な関係により、処理時間の長さの等級を決定できる。その結果、並列に処理を実行させる装置の組み合わせに応じた適切な階級分けを行うことができる。
【００２１】
また決定手段１２は、例えば複数の装置１〜３それぞれで提供されるリソースを更新するトランザクションの実行時に、送信順を決定することができる。その場合、制御手段１３は、トランザクションの結果を複数の装置１〜３それぞれに確定させる処理要求を、複数の装置１〜３それぞれに送信する。トランザクションの結果を確定させる処理は、コミットと呼ばれる。コミットを効率的に行うことで、トランザクションの処理の効率化を図ることができる。
【００２２】
なおコミットとしては、例えば２フェーズコミットの技術を用いることができる。この場合、制御手段１３は、２フェーズコミットのリソース操作の処理要求（準備確認の処理要求、または操作反映確定の処理要求）を、決定手段１２が決定した送信順に従って送信する。これにより、２フェーズコミットを効率的に実行することができる。
【００２３】
また決定手段１２は、トランザクションで更新されるリソースを提供する複数の装置１〜３のうちの一部のみを、並列に処理を実行させる装置とすることができる。例えば決定手段１２は、処理の成功率が所定の成功率判定値未満であり、かつ処理時間が所定の処理時間判定値未満の装置を特定する。そして決定手段１２は、複数の装置１〜３から特定した装置を除いた装置を、並列に処理を実行させる複数の装置に決定する。この場合、制御手段１３は、特定下装置に対して先行して処理要求を送信する。制御手段１３は、先行して処理要求を送信した装置から処理が正常したことを示す応答を受信した後、並列に処理を実行させる複数の装置それぞれに対して処理要求を送信する。これにより、成功率が悪い装置で処理に失敗した場合、他の装置に無駄な処理を行わせずにすみ、処理失敗時の処理効率が向上する。なお先行して処理要求を送信する装置は、処理時間が短いため、その装置からの正常の応答を待ってから、他の装置に処理要求を送信しても、処理の遅延は少なくてすむ。
【００２４】
また決定手段１２は、トランザクションで更新されるリソースを提供する複数の装置における処理の平均の成功率からの、複数の装置それぞれの成功率のかい離率を計算し、成功率のかい離率が閾値未満の装置を、処理の成功率が所定値未満の装置と判断することができる。このように、複数の装置の処理の平均の成功率からのかい離率を用いることで、複数の装置の処理の成功率の相対的な関係により、処理の成功率が所定値未満の装置を特定できる。その結果、トランザクションの処理を行う装置の組み合わせに応じた適切な装置を、処理の成功率が所定値以下の装置とすることができる。
【００２５】
なお図１に示す決定手段１２、制御手段１３は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、記憶手段１１は、例えば情報処理装置１０が有するメモリにより実現することができる。
【００２６】
また図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、アプリケーションソフトウェアの実行時に行われるトランザクションを効率的に行うものである。
【００２７】
図２は、第２の実施の形態のシステム構成例を示す図である。アプリケーションサーバ１００には、ネットワーク２０を介して、端末装置３０や、複数のサーバ２１０，２２０，２３０，・・・が接続されている。アプリケーションサーバ１００は、アプリケーションソフトウェアを実行する。例えばアプリケーションサーバ１００は、端末装置３０からの要求に応じて、アプリケーションソフトウェアを実行する。
【００２８】
サーバ２１０，２２０，２３０，・・・は、各種のリソースをアプリケーションサーバ１００に提供する。提供されるリソースは、データベースやその他のサービス機能である。アプリケーションサーバ１００は、サーバ２１０，２２０，２３０，・・・で提供されるリソースを利用したトランザクションを行うことができる。アプリケーションソフトウェアに基づいて実行する処理には、例えばサーバ２１０，２２０，２３０，・・・で提供されるリソースの更新を含むトランザクションがある。
【００２９】
アプリケーションサーバ１００は、複数のリソースを更新するトランザクションを実行する場合、操作対象のリソースを提供する複数のサーバに対して、処理要求を送信する。そしてアプリケーションサーバ１００は、例えば２フェーズコミットによって、トランザクションの結果の整合性を担保する。アプリケーションサーバ１００は、２フェーズコミットにおける調整者（coordinator）であり、操作対象のリソースを管理するサーバは参加者（cohorts）である。トランザクションを実行する場合、アプリケーションサーバ１００は、効率的に処理できるように、処理要求の送信先のサーバの順番を決定する。そしてアプリケーションサーバ１００は、決定した順番で、サーバに処理要求を送信する。これにより、トランザクションの効率化を図ることができる。
【００３０】
図３は、第２の実施の形態に用いるアプリケーションサーバのハードウェアの一構成例を示す図である。アプリケーションサーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１の機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３１】
メモリ１０２は、アプリケーションサーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３２】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３３】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、アプリケーションサーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００３４】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３５】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３６】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３７】
機器接続インタフェース１０７は、アプリケーションサーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３８】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３９】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した情報処理装置１０も、図３に示したアプリケーションサーバ１００と同様のハードウェアにより実現することができる。
【００４０】
アプリケーションサーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。アプリケーションサーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、アプリケーションサーバ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またアプリケーションサーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４１】
図４は、第２の実施の形態を実現するための機能を示すブロック図である。サーバ２１０は、リソースとしてデータベースシステム２１１を有している。データベースシステム２１１は、サーバ２１０がソフトウェアを実行することで実現される。データベースシステム２１１は、データを管理しており、アプリケーションサーバ１００からの要求に応じてデータを更新する。
【００４２】
サーバ２２０は、リソースとしてメッセージングシステム２２１を有している。メッセージングシステム２２１は、サーバ２２０がソフトウェアを実行することで実現される。メッセージングシステム２２１は、ユーザに通知するメッセージを管理する。例えばメッセージングシステム２２１は、アプリケーションサーバ１００からの要求に応じて、メッセージを更新する。
【００４３】
サーバ２３０は、リソースとしてエンタープライズ情報システム（ＥＩＳ：Enterprise Information System）２３１を有している。エンタープライズ情報システム２３１は、サーバ２３０がソフトウェアを実行することで実現される。エンタープライズ情報システム２３１は、企業の業務を行う情報処理システムである。エンタープライズ情報システム２３１は、アプリケーションサーバ１００からの要求に応じて、業務に関する情報を更新する。
【００４４】
アプリケーションサーバ１００は、アプリケーション１１０とトランザクション制御部１２０とを有する。アプリケーション１１０は、アプリケーションサーバ１００がアプリケーションソフトウェアを実行することで実現される。アプリケーション１１０は、処理の実行過程で、ネットワーク２０を介して接続されたサーバで提供されるリソースの内容を更新する処理が発生すると、そのリソースのトランザクションによる操作の要求を送信する。
【００４５】
トランザクション制御部１２０は、アプリケーション１１０からの、トランザクションに関する処理要求に応じて、２フェーズコミットによるトランザクションを実行する。トランザクションを実行するために、トランザクション制御部１２０は、処理要求管理部１２１、順番判定部１２２、および通信制御部１２３を有する。
【００４６】
処理要求管理部１２１は、アプリケーション１１０からの処理要求を取得し、順番判定部１２２に、リソースへの要求の送信順の判定を依頼する。処理要求管理部１２１は、順番判定部１２２からリソースを提供するサーバへの要求の送信順を受け取ると、その順番でのリソースへの処理要求の送信を、通信制御部１２３に通知する。そして処理要求管理部１２１は、通信制御部１２３から処理結果を受け取ると、その処理結果をアプリケーション１１０に通知する。
【００４７】
順番判定部１２２は、リソースを提供するサーバへの要求の送信順を判定する。例えば順番判定部１２２は、処理に要する時間が長いリソースへの要求ほど、先に送信するように、順番を判定する。順番判定部１２２は、順番を判定するために、リソース統計情報記憶部１２２ａ、リソース統計情報更新部１２２ｂ、およびリソース統計情報解析部１２２ｃを有する。
【００４８】
リソース統計情報記憶部１２２ａは、トランザクション中でのリソースの更新に関する統計情報（リソース統計情報）を記憶する。リソース統計情報には、例えば更新処理の平均の所要時間が含まれる。リソース統計情報記憶部１２２ａとしては、例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００４９】
リソース統計情報更新部１２２ｂは、リソース統計情報を算出し、リソース統計情報記憶部１２２ａ内のリソース統計情報を更新する。例えばリソース統計情報更新部１２２ｂは、トランザクションが実行されるごとに、リソース統計情報を更新する。
【００５０】
リソース統計情報解析部１２２ｃは、リソース統計情報記憶部１２２ａに格納されているリソース統計情報を解析し、トランザクションで更新される複数のリソースそれぞれを有するサーバへの、要求の送信順を決定する。リソース統計情報解析部１２２ｃは、決定した送信順を、処理要求管理部１２１に通知する。
【００５１】
通信制御部１２３は、処理要求管理部１２１から、トランザクションに関する要求の送信の通知を受け取ると、その要求を、トランザクションで更新されるリソースを有するサーバに送信する。この際、通信制御部１２３は、処理要求管理部１２１から指示された順番で要求を送信する。通信制御部１２３は、要求に対する結果の応答を各サーバから受信すると、処理結果を処理要求管理部１２１に通知する。
【００５２】
このような機能を有するシステムにより、トランザクションを効率的に実行することができる。なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また図４に示すリソース統計情報記憶部１２２ａは、図１に示す第１の実施の形態の記憶手段１１の一例である。図４に示す順番判定部１２２は、図１に示す第１の実施の形態の決定手段１２の一例である。図４に示す通信制御部１２３は、図１に示す第１の実施の形態の制御手段１３の一例である。
【００５３】
次にリソース統計情報記憶部１２２ａに格納されるリソース統計情報について詳細に説明する。
図５は、リソース統計情報記憶部のデータ構造の一例を示す図である。図５の例では、リソース統計情報記憶部１２２ａには、データテーブル形式のリソース統計情報３２が格納されている。リソース統計情報３２には、リソース、場所、トランザクション回数、成功回数、処理時間、および成功率の欄が設けられている。
【００５４】
リソースの欄には、リソースの識別情報が設定される。図５の例では、リソースの欄に、リソースの名称が設定されている。
場所の欄には、リソースの提供場所が設定される。リソースの提供場所としては、例えばリソースが操作しているサーバのアドレス、そのサーバ内でのリソースの場所が設定される。サーバ内でのリソースの場所は、例えばディレクトリパスとファイル名とで表される。
【００５５】
トランザクション回数の欄には、トランザクションによってリソースに対して行われた更新処理の回数が設定される。
成功回数の欄には、トランザクションによってリソースに対して行われた更新処理のうち、成功終了した回数が設定される。
【００５６】
処理時間の欄には、トランザクションにおけるリソース更新に関する要求に応じた処理に要した時間の平均が設定される。
成功率の欄には、トランザクションにおけるリソース更新に関する要求に応じた処理の成功率が設定される。
【００５７】
このようなリソース統計情報３２を用いて、トランザクションが効率的に実行される。以下、トランザクションの手順について詳細に説明する。
図６は、トランザクションの手順の一例を示すシーケンス図である。まずアプリケーション１１０が、トランザクション制御部１２０に対して、トランザクションの開始を通知する（ステップＳ１１）。トランザクションの開始の通知を受け取ったトランザクション制御部１２０は、トランザクションの制御を開始する（ステップＳ１２）。
【００５８】
次にアプリケーション１１０は、トランザクションにおいて更新する複数のリソースそれぞれに対して、リソース更新操作を行うこと通知する（ステップＳ１３）。図６の例では、データベースシステム２１１、メッセージングシステム２２１、およびエンタープライズ情報システム２３１が操作対象のリソースであり、これらのリソースに、リソース更新操作を行うことが通知されている。例えばデータベースシステム２１１に対するＳＱＬ（Structured Query Language）文の発行や、メッセージングシステム２２１へのメッセージ送受信などが行われる。
【００５９】
このとき、トランザクション制御部１２０は、アプリケーション１１０から各リソースへの通知を監視し、どのリソースに対して通知が行われたのかを認識する。そしてトランザクション制御部１２０は、操作対象のリソースを記憶する（ステップＳ１４）。
【００６０】
続いて、アプリケーション１１０は、トランザクション制御部１２０へ、操作反映を通知する（ステップＳ１５）。トランザクション制御部１２０は、アプリケーション１１０からの操作反映の通知を受け取ると、ステップＳ１４で記憶しておいた操作対象のリソース一覧を、順番判定部１２２へ通知する（ステップＳ１６）。
【００６１】
順番判定部１２２は、操作対象のリソース一覧を受信すると、リソース統計情報に基づいて、操作対象のリソースそれぞれの、要求に対する平均処理時間を比較する。また順番判定部１２２は、処理の成功率に基づいて、各リソースにおける処理の成功率の善し悪しを判断する。そして順番判定部１２２は、平均処理時間の比較結果と、成功率の善し悪しとに基づいて、要求を送信するリソースの順番を判定する（ステップＳ１７）。例えば順番判定部１２２は、リソース統計情報記憶部１２２ａ内のリソース統計情報３２を参照し、受信した操作対象のリソース一覧を、処理時間が長いリソースほど上位となるように並べ替える。リソース一覧の上位に登録されたリソースほど、先に要求を送信するリソースであることを示している。また順番判定部１２２は、処理時間が短いが、成功率が悪いリソースがある場合、そのリソースを一覧の最上位に移動し、他のリソースよりも先に要求を送信するように、送信順を判定することもできる。要求の送信順を判定すると、順番判定部１２２は、判定した順番を示すリソース一覧を、トランザクション制御部１２０に通知する（ステップＳ１８）。
【００６２】
トランザクション制御部１２０は、順番判定部１２２から要求の送信順を示すリソース一覧を取得する（ステップＳ１９）。そしてトランザクション制御部１２０は、取得した一覧の上位のリソースほど処理要求の送信が先となるように送信順を指定して、操作反映依頼を通信制御部１２３に送信する（ステップＳ２０）。
【００６３】
通信制御部１２３は、操作反映依頼に従って、操作反映処理を並列処理で実施する。なお並列処理であっても、要求の送信は順番に行うこととなる。そこで通信制御部１２３は、操作反映依頼で指定された送信順で、各リソースへ準備確認の要求を送信する（ステップＳ２１）。
【００６４】
準備確認の要求を受信したデータベースシステム２１１、メッセージングシステム２２１、およびエンタープライズ情報システム２３１は、２フェーズコミットにおける操作反映の準備をする。操作反映の準備とは、リソースの更新（コミット）を行える状態まで、処理を進めることである。このとき実施した処理を取り消すことができるように、実施した処理の履歴が、各リソースにおいて記録される。データベースシステム２１１、メッセージングシステム２２１、およびエンタープライズ情報システム２３１は、それぞれ操作反映の準備が完了すると、通信制御部１２３へ準備状況を応答する（ステップＳ２２，Ｓ２３，Ｓ２４）。
【００６５】
通信制御部１２３は、各リソースからの準備状況の応答を受信し、操作対象のすべてのリソースにおいて操作準備が正常に完了したことを確認する。そして通信制御部１２３は、操作反映依頼で指定された送信順で、各リソースに操作反映確定の要求を送信する（ステップＳ２５）。
【００６６】
操作反映確定の要求を受信したデータベースシステム２１１、メッセージングシステム２２１、およびエンタープライズ情報システム２３１は、２フェーズコミットにおける操作反映の確定処理（コミット）を実行する。そしてデータベースシステム２１１、メッセージングシステム２２１、およびエンタープライズ情報システム２３１は、それぞれコミット完了の応答を、通信制御部１２３へ送信する（ステップＳ２６，Ｓ２７，Ｓ２８）。
【００６７】
通信制御部１２３は、各リソースからコミット完了の応答を受信すると、操作反映処理の結果をトランザクション制御部１２０に通知する（ステップＳ２９）。トランザクション制御部１２０は、操作反映処理の結果を順番判定部１２２とアプリケーションに１１０に通知する（ステップＳ３０）。なお順番判定部１２２への結果の通知には、例えば処理時間、処理結果などの情報が含まれる。
【００６８】
順番判定部１２２は、結果の通知内容に応じて、リソース統計情報記憶部１２２ａ内のリソース統計情報３２を更新する（ステップＳ３１）。例えば順番判定部１２２のリソース統計情報更新部１２２ｂは、操作対象の各リソースのトランザクション回数を１ずつカウントアップする。またリソース統計情報更新部１２２ｂは、操作反映が成功したリソースの成功回数を、１ずつカウントアップする。さらにリソース統計情報更新部１２２ｂは、今回の操作反映の処理時間に基づいて、各リソースの処理時間を更新する。例えばリソース統計情報更新部１２２ｂは、リソースのカウントアップ前のトランザクション回数と処理時間を乗算し、乗算結果に今回の処理時間を加算する。そしてリソース統計情報更新部１２２ｂは、加算結果を、カウントアップ後のトランザクション回数で除算する。除算結果が、更新後の処理時間となる。またリソース統計情報更新部１２２ｂは、各リソースの成功率を計算する。例えばリソース統計情報更新部１２２ｂは、カウントアップ後の成功回数を、カウントアップ後のトランザクション回数で除算する。そしてリソース統計情報更新部１２２ｂは、除算結果を、そのリソースの成功率とする。
【００６９】
アプリケーション１１０は、トランザクション制御部１２０から処理結果を受信する（ステップＳ３２）。アプリケーション１１０は、通知された処理結果に応じて以降の業務処理を継続する。
【００７０】
このような手順でトランザクションが実行される。そして第２の実施の形態では、各リソースへ操作反映を並列処理で実行する際に、高速に処理が実行できるような適切な順番で、リソースに要求を送信する。
【００７１】
高速に処理が実行できる順番は、リソース統計情報解析部１２２ｃによって判定される。例えばリソース統計情報解析部１２２ｃは、リソース一覧３３に含まれる各リソースの処理時間および成功率を解析し、処理時間が最短となる処理順番を決定する。そしてリソース統計情報解析部１２２ｃは、処理順番が早い順となるように、リソース一覧を並べ替える。
【００７２】
例えばリソース統計情報解析部１２２ｃは、まず、処理時間によってリソース一覧の並べ替えを行う。
図７は、処理時間によるリソース一覧の並べ替えの一例を示す図である。例えばリソース統計情報解析部１２２ｃは、まず操作対象のリソースの処理時間を評価する。処理時間の評価は、例えば「短い」、「普通」、「長い」の３段階で行われる。３段階で処理時間を評価する場合、「短い」と判定するための閾値（第１の時間閾値）と、「長い」と判定するための閾値（第２の時間閾値）とが設けられる。処理時間が第１の時間閾値より短いリソースは、処理時間が「短い」と評価される。処理時間が第２の時間閾値より長いリソースは、処理時間が「長い」と評価される。処理時間が第１の時間閾値から第２の時間閾値までの範囲に含まれるリソースは、処理時間が「普通」と評価される。
【００７３】
処理時間の閾値は、操作対象の各リソースの処理時間の平均値とのかい離率に基づいて設定することもできる。例えばリソース統計情報解析部１２２ｃは、操作対象の各リソースの処理時間の平均値を計算する。そしてリソース統計情報解析部１２２ｃは、例えば操作対象のリソースの処理時間から平均値を減算し、減算結果を平均値で除算する。リソース統計情報解析部１２２ｃは、除算結果を、処理時間のかい離率とする。リソース統計情報解析部１２２ｃは、処理時間のかい離率の閾値と、各リソースの処理時間のかい離率とを比較して、処理時間を評価する。
【００７４】
処理時間のかい離率の閾値としては、例えば「短い」と判定するための閾値と、「長い」と判定するための閾値との２つを予め設定しておく。また、１つのかい離率の閾値で、処理時間を３段階に評価することもできる。例えばリソース統計情報解析部１２２ｃは、リソースの処理時間のかい離率の絶対値が、処理時間のかい離率の閾値より大きく、かつそのリソースの処理時間のかい離率が正の値の場合、処理時間が「長い」と評価する。またリソース統計情報解析部１２２ｃは、リソースの処理時間のかい離率の絶対値が、処理時間のかい離率の閾値より大きく、かつそのリソースの処理時間のかい離率が負の値の場合、処理時間が「短い」と評価する。さらにリソース統計情報解析部１２２ｃは、リソースの処理時間のかい離率の絶対値が、処理時間のかい離率の閾値以下であれば、処理時間が「普通」であると評価する。
【００７５】
なお、具体的な処理時間のかい離率の閾値は、運用形態やマシンスペックなどに応じて、任意に設定できる。
図７の例では、「リソースＢ」の処理時間が最も短く、その次に「リソースＡ」の処理時間が短く、「リソースＣ」の処理時間が最も長い。リソース統計情報解析部１２２ｃは、リソース一覧３３に登録されている各リソースを、処理時間が長いほど上位となるようにソートする。すると、ソート後のリソース一覧３３では、「リソースＣ」が最も上位となり、その次に「リソースＡ」が配置され、最下位に「リソースＢ」が配置される。
【００７６】
ここで、ソート後のリソース一覧３３に示される順番を、そのまま要求の送信順とすることができる。また、操作反映処理の成功率に基づいて、順番を入れ替えることもできる。
【００７７】
図８は、成功率に基づくリソース一覧の並べ替えの第１の例を示す図である。例えばリソース統計情報解析部１２２ｃは、リソース一覧３３に含まれる各リソースの成功率を評価する。成功率の評価は、例えば「悪い」か「良い」かの２段階で行われる。２段階で成功率を評価する場合、「悪い」と判定するための閾値（成功率閾値）が設けられる。成功率が成功率閾値より悪い（値が小さい）リソースは、成功率が「悪い」と評価される。成功率が成功率閾値以上のリソースは、成功率が「良い」と評価される。
【００７８】
成功率の閾値は、操作対象の各リソースの成功率の平均値とのかい離率に基づいて設定することもできる。例えばリソース統計情報解析部１２２ｃは、操作対象の各リソースの成功率の平均値を計算する。そしてリソース統計情報解析部１２２ｃは、例えば操作対象のリソースの成功率から平均値を減算し、減算結果を平均値で除算する。リソース統計情報解析部１２２ｃは、除算結果を、成功率のかい離率とする。リソース統計情報解析部１２２ｃは、成功率のかい離率の閾値と、各リソースの成功率のかい離率とを比較して、成功率を評価する。例えばリソース統計情報解析部１２２ｃは、リソースの成功率のかい離率の絶対値が、成功率のかい離率の閾値より大きく、かつそのリソースの成功率のかい離率が負の値の場合、成功率が「悪い」と評価する。またリソース統計情報解析部１２２ｃは、リソースの成功率のかい離率の絶対値が、成功率のかい離率の閾値以下である場合、またはリソースの成功率のかい離率の絶対値が正の値の場合、成功率が「良い」と評価する。
【００７９】
なお、具体的な成功率のかい離率の閾値は、運用形態やマシンスペックなどに応じて、任意に設定できる。
図８の例では、処理時間が短い「リソースＢ」について成功率が「悪い」と評価され、他のリソースは成功率が良いと評価されている。この場合、リソース統計情報解析部１２２ｃは、リソース一覧３３に登録されている各リソースのうち、成功率が「悪い」リソースが最上位となるように並べ替える。
【００８０】
このとき、リソース統計情報解析部１２２ｃは、各リソースへの処理（例えば準備確認処理）の処理方法を、リソース一覧３３に設定する。例えば処理時間は短いが成功率は「悪い」リソースの処理の処理方法は「先行実施」に設定される。成功率が「良い」リソースの送信方法は、「並列処理」に設定される。図８の例では、「リソースＢ」の処理方法が「先行実施」であり、その他のリソースの処理方法が「並列処理」である。
【００８１】
処理方法「先行実施」とされたリソースは、処理方法「並列処理」のリソースよりも先に処理の要求が送信される。そして、処理方法「先行実施」のリソースの処理が完了するまで、処理方法「並列処理」のリソースへの処理の要求は待たされる。
【００８２】
処理方法「並列処理」とされたリソースは、処理方法「並列処理」の他のリソースと共に、並列に処理される。すなわち「並列処理」のリソースへは、「並列処理」の他のリソースの処理が完了するのを待たずに、処理の要求が送信される。なお「並列処理」の複数のリソースそれぞれへの処理の要求は、リソース一覧３３の上位のリソースから順番に送信される。
【００８３】
処理時間が短いリソースの成功率が悪い場合、そのリソースの処理が成功したことを確認後に他のリソースへの処理の要求を送信することで、処理時間が短いリソースでの処理失敗時のロールバックを短時間で行うことができる。ロールバックとは、リソースの状態を、処理の実行前の状態に戻すことである。処理時間が短いリソースでの処理に失敗したとき、他のリソースへは、まだ処理の要求が送信されていない。そのため、他のリソースへの処理要求の送信を抑止でき、通信回数が削減されると共に、処理時間が短縮される。
【００８４】
また、処理時間が長いリソースの成功率が悪い場合もある。この場合の並べ替えの例を図９に示す。
図９は、成功率に基づくリソース一覧の並べ替えの第２の例を示す図である。図９の例では、処理時間が長い「リソースＣ」について成功率が「悪い」と評価され、他のリソースは成功率が良いと評価されている。この場合、リソース統計情報解析部１２２ｃは、リソース一覧３３に登録されている各リソースの並べ替えを行わない。
【００８５】
このとき、リソース統計情報解析部１２２ｃは、各リソースへの処理（例えば準備確認処理）の処理方法を、リソース一覧３３に設定する。例えば成功率に関係なく、すべてのリソースの処理の処理方法が「並列処理」に設定される。
【００８６】
このように処理時間が長いリソースの成功率が悪い場合、そのリソースに処理を先行して実施させると、他のリソースへ処理の要求を送信するのが遅れてしまい、全体として処理の効率の低下が大きくなる。そのため、処理時間が長いリソースの成功率が悪い場合には、すべてのリソースに並列に処理を実行させる方が適切となる。
【００８７】
なお、成功率が「悪い」リソースがない場合には、要求の送信順は、処理時間に応じた順番のままとなる。その場合の処理方法は、すべてのリソースについて「並列処理」となる。
【００８８】
このような処理の順番の判定処理の手順の詳細を、以下に説明する。
図１０は、順番判定処理の手順の一例を示す図である。
［ステップＳ１０１］リソース統計情報解析部１２２ｃは、操作対象の各リソースの処理時間のかい離率を計算する。
【００８９】
［ステップＳ１０２］リソース統計情報解析部１２２ｃは、操作対象の各リソースについて、かい離率に基づいて処理時間を評価する。例えば、かい離率の絶対値が閾値により高く、かい離率が正の値のリソースは、処理時間が「長い」と判断される。また例えば、かい離率の絶対値が閾値により高く、かい離率が負の値のリソースは、処理時間が「短い」と判断される。さらにかい離率が閾値以下のリソースは、処理時間が「普通」と判断される。
【００９０】
［ステップＳ１０３］リソース統計情報解析部１２２ｃは、リソース一覧３３を、処理時間の評価によってソートする。例えば、処理時間が「長い」リソースが最上位、処理時間が「普通」のリソースをその次、処理時間が「短い」リソースが最下位となるように、リソースがソートされる。
【００９１】
［ステップＳ１０４］リソース統計情報解析部１２２ｃは、成功率の悪いリソースを抽出する。例えばリソース統計情報解析部１２２ｃは、リソース一覧３３から、成功率の平均からのかい離率が所定値以上ある、平均より悪い成功率のリソースを抽出する。
【００９２】
［ステップＳ１０５］リソース統計情報解析部１２２ｃは、成功率の悪いリソースがあったか否かを判断する。成功率の悪いリソースがある場合、処理がステップＳ１０６に進められる。成功率の悪いリソースがなければ、処理がステップＳ１０９に進められる。
【００９３】
［ステップＳ１０６］成功率が悪いリソースが存在する場合、リソース統計情報解析部１２２ｃは、成功率が悪いリソースの処理時間の評価が「短い」か否かを判断する。処理時間の評価が「短い」であれば、処理がステップＳ１０７に進められる。処理時間の評価が「長い」または「普通」であれば、処理がステップＳ１０９に進められる。
【００９４】
［ステップＳ１０７］成功率が悪いリソースの処理時間の評価が「短い」である場合、リソース統計情報解析部１２２ｃは、抽出したリソースを、リソース一覧３３の最上位に移動する。
【００９５】
［ステップＳ１０８］リソース統計情報解析部１２２ｃは、抽出したリソースの処理方法を「先行処理」に決定し、その処理方法をリソース一覧３３に設定する。またリソース統計情報解析部１２２ｃは、抽出したリソース以外のリソースの処理方法を「並列処理」に決定し、その処理方法をリソース一覧３３に設定する。その後、順番判定処理が終了する。
【００９６】
［ステップＳ１０９］成功率が悪いリソースがないか、あるいは成功率の悪いリソースの処理時間の評価が「短い」以外の場合、リソース統計情報解析部１２２ｃは、すべてのリソースの処理方法を「並列処理」に決定する。そして、リソース統計情報解析部１２２ｃは、決定した処理方法を、リソース一覧３３に設定する。その後、順番判定処理が終了する。
【００９７】
このようにして、効率的な処理順が決定される。
図１１は、コミット処理の第１の例を示す図である。図１１には、処理時間の短いリソースでの処理の成功率が悪くない場合の例が示されている。この場合、処理時間が長い順に、各リソースに、リソース操作処理の要求が送信される。そして各リソースでの処理が、並列に実行される。
【００９８】
図１１の例では、エンタープライズ情報システム２３１の処理時間が最も長く、次にデータベースシステム２１１の処理時間が長く、メッセージングシステム２２１の処理時間が最も短い。この場合、トランザクション制御部１２０は、エンタープライズ情報システム２３１、データベースシステム２１１、メッセージングシステム２２１の順で、リソース操作処理の要求を送信する。図１１の例は、２フェーズコミットでのトランザクションである。そこで、まず準備確認フェーズのリソース操作が以下の手順で行われる。
【００９９】
最初に、トランザクション制御部１２０は、準備確認のリソース操作の要求をエンタープライズ情報システム２３１に送信する（ステップＳ４１）。これにより、エンタープライズ情報システム２３１において、準備確認の処理が実行される（ステップＳ４２）。次にトランザクション制御部１２０は、準備確認のリソース操作の要求をデータベースシステム２１１に送信する（ステップＳ４３）。これにより、データベースシステム２１１において、準備確認の処理が実行される（ステップＳ４４）。さらにトランザクション制御部１２０は、準備確認のリソース操作の要求をメッセージングシステム２２１に送信する（ステップＳ４５）。これにより、メッセージングシステム２２１において、準備確認の処理が実行される（ステップＳ４６）。各リソースは、リソース操作の準備が完了すると、準備完了の応答をトランザクション制御部に送信する。
【０１００】
トランザクション制御部１２０により、すべてのリソースから準備完了を示す応答を受信したことが確認されると、操作反映フェーズのリソース操作が以下の手順で行われる。
最初に、トランザクション制御部１２０は、操作反映のリソース操作の要求をエンタープライズ情報システム２３１に送信する（ステップＳ５１）。これにより、エンタープライズ情報システム２３１において、操作反映の処理が実行される（ステップＳ５２）。次にトランザクション制御部１２０は、操作反映のリソース操作の要求をデータベースシステム２１１に送信する（ステップＳ５３）。これにより、データベースシステム２１１において、操作反映の処理が実行される（ステップＳ５４）。さらにトランザクション制御部１２０は、操作反映のリソース操作の要求をメッセージングシステム２２１に送信する（ステップＳ５５）。これにより、メッセージングシステム２２１において、操作反映の処理が実行される（ステップＳ５６）。各リソースは、リソース操作の反映が完了すると、反映完了の応答をトランザクション制御部に送信する。
【０１０１】
図１１に示したような順番でリソース操作の要求を送信することで、２フェーズコミットによるトランザクションが効率的に実行される。すなわち、各フェーズの処理時間は、最も処理時間の長いリソースの処理時間と等しくなる。一方、処理時間の短いリソースへ先に処理要求を送信すると、図１１の例では、メッセージングシステム２２１への処理要求の送信からエンタープライズ情報システム２３１への処理要求の送信までの時間だけ、余分に時間がかかる。
【０１０２】
しかも、ネットワーク上では、処理要求の転送が出力順に行われるため、処理要求の送信時刻の差が、ネットワーク上での処理要求の転送順に影響を及ぼす。すなわちネットワークにおいて処理要求を転送する機器（ルータやスイッチ）は、先に送信された処理要求を優先的に転送する。そのためネットワークが混雑していると、トランザクション制御部１２０からの処理要求の送出時間の差よりも、各リソースでの処理要求の受信時間の差が拡大することがある。図１１に示すように、処理時間が短いリソースに対する処理要求のネットワークでの転送の遅延が多少拡大しても、各フェーズにおける処理時間に対して影響を及ぼさずにすむ。その結果、ネットワークの混雑によるトランザクションの長期化が抑止される。
【０１０３】
次に、処理時間が短いリソースの処理の成功率が低い場合の例について説明する。
図１２は、コミット処理の第２の例を示す図である。図１２には、処理時間の短いリソースでの処理の成功率が悪い場合の例が示されている。この場合、処理時間が短いリソースに、リソース操作の要求が先行して送信される。そして、そのリソースの処理の結果に応じたリソース操作の要求が送信される。例えば処理時間が短いリソースの準備確認が正常に完了すれば、他のリソースへの準備確認のリソース操作の要求が送信される。他方、処理時間が短いリソースの準備確認が異常終了すれば、すべてのリソースへのロールバックのリソース操作の要求が送信される。図１２には、処理時間が短いリソースの準備確認が異常終了した場合の例が示されている。
【０１０４】
図１２の例では、エンタープライズ情報システム２３１の処理時間が最も長く、次にデータベースシステム２１１の処理時間が長く、メッセージングシステム２２１の処理時間が最も短い。またメッセージングシステム２２１の処理の成功率は低い。この場合、トランザクション制御部１２０は、最初に準備確認のリソース操作の要求を、メッセージングシステム２２１に送信する（ステップＳ６１）。これにより、メッセージングシステム２２１において、準備確認の処理が実行される（ステップＳ６２）。準備確認が異常終了すると、メッセージングシステム２２１は、異常を示す操作結果を、トランザクション制御部１２０に応答する。
【０１０５】
トランザクション制御部１２０は、準備確認に対する異常の応答を受け取ると、すべてのリソースに対してロールバックのリソース操作の要求を送信する。例えばトランザクション制御部１２０は、ロールバックのリソース操作の要求を、処理時間が長いリソースから順に送信する。図１２の例では、トランザクション制御部１２０は、まず、エンタープライズ情報システム２３１に送信する（ステップＳ７１）。これにより、エンタープライズ情報システム２３１において、ロールバックの処理が実行される（ステップＳ７２）。次に、トランザクション制御部１２０は、データベースシステム２１１に対して、ロールバックのリソース操作の要求を送信する（ステップＳ７３）。これにより、データベースシステム２１１において、ロールバックの処理が実行される（ステップＳ７４）。さらにトランザクション制御部１２０は、メッセージングシステム２２１に対して、ロールバックのリソース操作の要求を送信する（ステップＳ７５）。これにより、メッセージングシステム２２１において、ロールバック処理が実行される（ステップＳ７６）。
【０１０６】
このように、成功率が低く、かつ処理時間が短いメッセージングシステム２２１に対するリソース操作を先行実施することで、操作が異常終了した場合のロールバックを迅速に行うことができる。すなわち、図１１に示したように、メッセージングシステム２２１へのリソース操作の処理要求の送信を最後に行うと、メッセージングシステム２２１から異常の応答を受信する時期が遅れる。その結果、ロールバックを開始する時期が遅れてしまう。図１２に示すように、メッセージングシステム２２１へのリソース操作を先行実施すれば、早期に異常終了の応答を受信し、ロールバックを開始できる。しかも、メッセージングシステム２２１の処理時間は短いため、トランザクション全体の処理の長期化は、最小限に抑えることができる。
【０１０７】
以上説明したように、第２の実施の形態によれば、処理的に処理できる順番で、処理の要求を送信するようにしたため、トランザクション全体の効率化を図ることができる。しかも第２の実施の形態では、処理時間が短いリソースでの成功率が低い場合、そのリソースへの処理要求を先行して実施し、そのリソースでの処理が正常に完了したことを確認した後に、他のリソースへの処理要求を送信するようにしている。これにより、処理の成功率の低いリソースでの処理が異常終了した場合のロールバックを迅速に行うことができる。
【０１０８】
〔その他の実施の形態〕
第２の実施の形態では、トランザクションが行われるごとに、リソース統計情報を更新している。この場合、システムの運用開始後の初期段階では、リソース統計情報算出の元となるトランザクションの数が少なく、統計的な信頼性に乏しくなる。そこで、リソース統計情報の初期設定として、数パターンのデフォルトの統計情報雛型を容易することができる。例えば、以下の手順でリソース統計情報の初期設定をすることができる。
【０１０９】
［第１のステップ］システムの管理者は、リソース統計情報の複数の雛形から、使用する雛形を決定する。
例えば、以下の観点でデフォルトのリソース統計情報の雛型を数パターン用意される。
・リソース数（参加リソース数の少ない、多い）
・ネットワーク環境（回線速度、回線品質）
・マシンスペック（高スペック、低スペック）
管理者は、数パターンの雛型より適用する環境に最も近い雛型を選択する。雛形には、例えばリソース名や場所が空欄の状態で、リソースの処理時間や成功率が予め設定されている。また雛形には、所定量のトランザクション回数が設定されている。例えば適用するシステムと同程度の規模のシステムにおいて、所定期間（例えば１日）に処理するトランザクション回数が設定される。雛形の成功回数は、トランザクション回数と成功率から算出した値である。
【０１１０】
［第２のステップ］システムの管理者は、適用するシステムのリソースの情報（リソース名や場所）を、決定した雛形に入力する。この際、管理者は、処理時間が遅いと想定される以下のリソースの優先順位が高くなるように、リソース情報を登録する。
・回線速度が遅いネットワークに配置されるリソース
・マシンスペックが低いマシンに配置されるリソース
［第３のステップ］システムの管理者は、処理時間の評価における「長い／短い」の判断の閾値を変更する。例えば、管理者は以下の考え方で閾値を変更する。
・各リソースの処理時間のバラツキが小さい場合は、閾値を小さくする。
・各リソースの処理時間のバラツキが大きい場合は、閾値を大きくする。
【０１１１】
このような閾値の変更は、例えば管理者がアプリケーションサーバ１００に、「長い／短い」の判断の閾値を入力することで実施される。なおアプリケーションサーバ１００には、処理時間の評価における「長い／短い」の判断の閾値の初期値（デフォルト値）を予め設定しておくことができる。閾値として初期値を使用できる場合、管理者は、閾値の変更処理を行わなくてもよい。
【０１１２】
［第４のステップ］システムの管理者は、成功率の評価における「良い／悪い」の判断の閾値を変更する。例えば管理者は、以下の考え方で閾値を変更する。
・各リソースの成功率が良い場合は、閾値を小さくする。
・各リソースの成功率が悪い場合は、閾値を大きくする。
【０１１３】
このような閾値の変更は、例えば管理者がアプリケーションサーバ１００に、「良い／悪い」の判断の閾値を入力することで実施される。なおアプリケーションサーバ１００には、成功率の評価における「良い／悪い」の判断の閾値の初期値（デフォルト値）を予め設定しておくことができる。閾値として初期値を使用できる場合、管理者は、閾値の変更処理を行わなくてもよい。
【０１１４】
［第５のステップ］システムの管理者は、編集した雛形を、リソース統計情報３２の初期値として適用する。例えばシステムの管理者は、編集後の雛形のリソース統計情報記憶部１２２ａへの格納指示を、アプリケーションサーバ１００に入力する。するとアプリケーションサーバ１００において、編集後の雛形が、リソース統計情報３２としてリソース統計情報記憶部１２２ａに格納される。そして、システムの運用が開始される。
【０１１５】
このように、雛形を用いてリソース統計情報の初期値を設定できるようにすることで、以下の利点がある。
・運用の当初から、効率的なトランザクションを実施できる。
・処理順番の決定における精度向上までの時間を短縮できる。
【０１１６】
また、リソース統計情報を不揮発化することもできる。不揮発化とは、不揮発性の記録媒体に保存することである。
リソース統計情報を不揮発化することで、以下の利点がある。
・予期しないシステムダウンによるリソース統計情報の損失を防止できる。
・不揮発化することでリソース統計情報のマシン間における持ち運びが可能となり、適用環境からクローン環境へ、または試験環境から運用環境へなどの持ち運びでリソース統計情報の流用が可能になる。
【０１１７】
リソース統計情報の不揮発化方法としては、例えば、トランザクション制御部１２０がメモリ１０２上に展開しているリソース統計情報３２を、入出力装置であるＨＤＤ１０３にコピーする。不揮発化を行うタイミングは任意に指定可能である。例えば不揮発化のタイミングとして、以下のようにしてタイミングを指定可能である。
・不揮発化の実施時刻を指定する。
・運用停止時に不揮発化を実施することを指定する。
・通信時における処理時間の「短い／長い」の閾値を超過するリソースの検出時に不揮発化を実施することを指定する。
・処理時間の「短い／長い」の閾値の超過回数が所定値を超えた場合に、不揮発化を実施することを指定する。
・処理結果における成功率の「良い／悪い」の閾値を超過するリソース検出時に不揮発化を実施することを指定する。
・処理結果における成功率の「良い／悪い」の閾値の超過回数が所定値を超えた場合に、不揮発化を実施することを指定する。
【０１１８】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１９】
１〜３  装置
４  ネットワーク
１０  情報処理装置
１１  記憶手段
１１ａ  統計情報
１２  決定手段
１３  制御手段
【図１】
2014199534.tif 000003
【図２】
2014199534.tif 000004
【図３】
2014199534.tif 000005
【図４】
2014199534.tif 000006
【図５】
2014199534.tif 000007
【図６】
2014199534.tif 000008
【図７】
2014199534.tif 000009
【図８】
2014199534.tif 000010
【図９】
2014199534.tif 000011
【図１０】
2014199534.tif 000012
【図１１】
2014199534.tif 000013
【図１２】
2014199534.tif 000014