(57)【特許請求の範囲】
【請求項１】
トランザクションの同時実行制御を行うトランザクション同時実行制御システムであって、
前記トランザクションを実行するトランザクション実行部と、
前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、
前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部を備え、
前記トランザクション実行部がトランザクション実行を開始してから完了するまでの実行時間を測定するトランザクション実行時間測定部を備え、
前記バックオフ時間決定部は、
前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間から前記実行時間を減算した値を、次回の再実行までの待ち時間とする、
トランザクション同時実行制御システム。
【請求項２】
前記バックオフ時間決定部は、所定の上限値および下限値の間に含まれる乱数値を用いて、前記トランザクションの再実行までの待ち時間を計算する、請求項１に記載のトランザクション同時実行制御システム。
【請求項３】
前記トランザクションの実行優先度を決定するトランザクション優先度決定部と、
前記実行優先度に基づいて、前記トランザクションを再実行するまでのインターバル時間を決定するインターバル時間決定部と、を備え、
前記バックオフ時間決定部は、
前記インターバル時間を用いて前記トランザクションの再実行までの待ち時間を調整する、請求項１または２に記載のトランザクション同時実行制御システム。
【請求項４】
前記バックオフ時間決定部は、
前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間に前記インターバル時間を加算した値を、次回の再実行までの待ち時間とする、請求項３に記載のトランザクション同時実行制御システム。
【請求項５】
前記トランザクションの同時実行制御は、楽観的ロックに基づくトランザクション同時実行制御である、請求項１から４のいずれかに記載のトランザクション同時実行制御システム。
【請求項６】
トランザクションの同時実行制御を行うトランザクション同時実行制御方法であって、
前記トランザクションを実行する工程と、
前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算する工程と、
前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させる工程と、を備え、
前記トランザクションを実行する工程がトランザクション実行を開始してから完了するまでの実行時間を測定する工程を備え、
前記待ち時間を計算する工程では、
前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間から前記実行時間を減算した値を、次回の再実行までの待ち時間とする、
トランザクション同時実行制御方法。
【請求項７】
コンピュータを、
トランザクションの同時実行制御を行うトランザクション同時実行制御装置として機能させるプログラムであって、
前記コンピュータを、
前記トランザクションを実行するトランザクション実行部と、
前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、
前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部、として機能させ、
前記トランザクション実行部がトランザクション実行を開始してから完了するまでの実行時間を測定するトランザクション実行時間測定部を備え、
前記バックオフ時間決定部は、
前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間から前記実行時間を減算した値を、次回の再実行までの待ち時間とする、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクション同時実行制御システム、トランザクション同時実行制御方法、およびプログラムに関する。
【背景技術】
【０００２】
リレーショナルデータベースのトランザクション同時実行制御方法として、悲観的ロック（排他制御機構）に基づく同時実行制御が知られている。悲観的ロックに基づく同時実行制御では、トランザクションＴＸ１は参照・更新する全レコードを予めロックし、同時実行される他トランザクションＴＸ２はロックが解放されるまで待機状態となる。これにより、トランザクションＴＸ１はアトミック性（トランザクション全体が失敗するか、成功するか）を担保できる。
【０００３】
しかし、例えば大量ユーザが参照アクセスするＷＥＢシステムで悲観的ロックを使用した場合、待機状態、デッドロック状態、プロトコルオーバヘッド等が原因となってユーザレスポンスに遅延が発生する場合がある。このため近年では楽観的ロックに基づくトランザクション同時実行制御を採用するＷＥＢシステムが増加している。
【０００４】
楽観的ロック（ＣＡＳ：Ｃｏｍｐａｒｅ Ａｎｄ Ｓｗａｐ）では、例えばアプリケーションは、トランザクションＴＸ１を開始する前に更新対象であるレコードＲ１およびバージョン番号Ｒ１＿Ｖ１を永続化装置（ストレージ）から取得する。さらにアプリケーションは、レコードＲ１をプロセスメモリ上で更新し、バージョン番号をＲ１＿Ｖ２にインクリメントする。その後、アプリケーションは、更新したレコードＲ１およびバージョン番号Ｒ１＿Ｖ２をストレージに書き込む。ストレージは「入力されたバージョン番号Ｒ１＿Ｖ２」および「レコードＲ１のバージョン番号」を比較（Ｃｏｍｐａｒｅ）する。レコードＲ１のバージョン番号がＲ１＿Ｖ１のままであれば、レコードＲ１およびバージョン番号Ｒ１＿Ｖ２を書き込み（Ｓｗａｐ）、コミット成功となる。それ以外の場合は、他トランザクションＴＸ２がレコードＲ１を更新したと判断してアボートし、コミット失敗となる。
【０００５】
楽観的ロックでは、ロック機構やトランザクション管理機構（ＴＰモニタ等）が不要となるため、トランザクション同時実行制御システムがシンプルな実装になるというメリットがある。さらに、最終的に永続化装置に書き込む時点でコミット成功・失敗を判断するため、同一レコードに対して複数トランザクションが同時に参照アクセスすることができる。このため、ＷＥＢシステムにおけるユーザ参照リクエストの処理スループットが大幅に向上する。
【０００６】
非特許文献１には、楽観的ロックを用いたトランザクション同時実行制御システムの例が記載されている。非特許文献１に記載されたトランザクション同時実行システムＶｏｌｄｅｍｏｒｔは、ストレージとしてＢｅｒｋｌｅｙ  ＤＢを使用している。Ｖｏｌｄｅｍｏｒｔは、クライアントアプリケーションから受信したトランザクション内で更新するデータおよび当該データのバージョン番号を取得した後、自身のメモリ空間でデータを更新する。そして、更新したデータをＢｅｒｋｌｅｙ  ＤＢに書き込む際に当該更新データのバージョン番号が取得済みバージョン番号と合致するか否かを判定する。合致している場合は、当該更新データ、および取得済みバージョン番号をインクリメントした新バージョン番号をＢｅｒｋｌｅｙ  ＤＢに書き込み、書き込みが完了した時点でコミット成功とする。バージョン番号が合致しなかった場合はコミット失敗とする。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“Project Voldemort", <http://project-voldemort.com/>, 2011/05/31
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１の同時実行制御システムでは、同時に実行されるトランザクション数が増えると、マシンリソースを無駄に消費してしまうという問題がある。その理由は、同時実行されているあるトランザクションがコミット成功することを把握していない他のトランザクションが、自身がコミット失敗するまでマシンリソースを消費するからである。
【０００９】
そこで、本発明は、同時実行されるトランザクションの数が増えても、マシンリソース消費量の増加を抑制することが可能なトランザクション同時実行制御システムを提供することを一つの目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るトランザクション同時実行制御システムは、トランザクションの同時実行制御を行うトランザクション同時実行制御システムであって、前記トランザクションを実行するトランザクション実行部と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部を備えたものである。
【発明の効果】
【００１１】
本発明によれば、同時実行されるトランザクションの数が増えても、マシンリソース消費量の増加を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１による、トランザクション同時実行制御システムの構成を示すブロック図。
【図２】本発明の実施の形態１による、トランザクション同時実行制御システムの動作のフローチャート
【図３】本発明の実施の形態１による、ストレージに記憶されているテーブルの例を示す図。
【図４】本発明の実施の形態１による、トランザクションの内容の例を示す図。
【図５】本発明の実施の形態１による、トランザクションの内容の例を示す図。
【図６】トランザクションの同時実行の例を示す図。
【図７】本発明の実施の形態２による、トランザクション同時実行制御システムの構成を示すブロック図。
【図８】本発明の実施の形態２による、トランザクション同時実行制御システムの動作のフローチャート
【図９】本発明の実施の形態２による、トランザクション実行優先度とインターバル時間の対応関係を示すインターバル時間マップの例を示す図。
【発明を実施するための形態】
【００１３】
実施の形態１．
次に、本発明を実施するための形態について、図面を参照して詳細に説明する。
図１は、本発明の実施の形態１によるトランザクション同時実行制御システム１００の構成を示すブロック図である。図に示すように、トランザクション同時実行制御システム１００は、トランザクション発行装置１、トランザクション同時実行制御装置２、およびストレージ（永続化装置）３を備えている。
【００１４】
トランザクション発行装置１は、トランザクションをトランザクション同時実行制御装置２に送信する装置であり、ＣＰＵ、ＲＯＭやＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。トランザクション発行装置１は複数存在していてもよい。
【００１５】
トランザクション同時実行制御装置２は、トランザクション発行装置１から受信したトランザクションの同時実行制御を行う装置であり、ＣＰＵ、ＲＯＭやＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。トランザクション同時実行制御装置２は複数存在していてもよい。また、トランザクション同時実行制御装置２は、単一のコンピュータにより構成されるものであっても、通信回線を介して互いに接続された複数のコンピュータにより構成されるものであってもよい。
【００１６】
トランザクション同時実行制御装置２は、トランザクション実行手段２１、トランザクション実行時間測定手段２２、ＣＡＳ操作手段２３、バックオフ時間決定手段２４、およびトランザクションプール手段２５を備えている。トランザクション実行手段２１、トランザクション実行時間測定手段２２、ＣＡＳ操作手段２３、バックオフ時間決定手段２４、およびトランザクションプール手段２５は、ＣＰＵがＲＯＭ等に格納された所定のプログラムを実行することにより実現される機能のモジュールに相当する。
【００１７】
トランザクション実行手段２１は、トランザクション発行装置１から受信したトランザクションを解析し、トランザクションの実行プランを決定する。
トランザクション実行時間測定手段２２は、トランザクション実行手段２１がトランザクション実行を開始してから完了（コミット成功または失敗）するまでの時間を測定する。
【００１８】
ＣＡＳ操作手段２３は、トランザクション実行手段２１が実行プランを実行して最終的にストレージ３にデータを反映する際にＣＡＳ操作を実行する。
バックオフ時間決定手段２４は、ＣＡＳ操作手段２３によって当該トランザクションがコミット失敗と判断された場合、トランザクション実行時間測定手段２２で測定したトランザクション実行時間に基づき、トランザクション再実行までの待ち時間（バックオフ時間）を計算する。
トランザクションプール手段２５は、バックオフ時間決定手段２４で計算したバックオフ時間が経過するまで、トランザクション再実行を待機するよう制御する。
ストレージ３は、記憶装置により実装される。
【００１９】
次に、トランザクション同時実行制御システム１００の動作について説明する。
図２は、トランザクション同時実行制御システム１００の動作のフローチャートである。
トランザクション同時実行制御装置２は、トランザクション発行装置１からトランザクションを受信すると、トランザクション実行手段２１において生成したプランにしたがってトランザクションを実行する（ステップＡ１）。
【００２０】
トランザクション実行時間測定手段２２において、ステップＡ１で実行されるトランザクション毎に実行時間を測定し、メモリ等に記憶する（ステップＡ２）。
【００２１】
ＣＡＳ操作手段２３において、トランザクション実行結果データをストレージ３に反映する際にＣＡＳ操作を実行する（ステップＡ３）。ＣＡＳ操作が成功した場合は（ステップＡ３；ＹＥＳ）コミット成功となり処理を終了する。
【００２２】
一方、ＣＡＳ操作が失敗した場合は（ステップＡ３；ＮＯ）、コミット失敗と判断し、バックオフ時間決定手段２４においてバックオフ時間を計算する（ステップＡ４）。初回のコミット失敗の場合は、乱数値から決定するウィンドウサイズと、予め設定されたスロットタイムに基づいてバックオフ時間を決定する。一方、２回目以降のコミット失敗の場合は、初回のコミット失敗時に決定したバックオフタイムからステップＡ２で測定したトランザクション実行時間を減算した値をバックオフ時間とする。
【００２３】
トランザクションプール手段２５において、ステップＡ４で決定したバックオフ時間が経過するまでトランザクション再実行を待機させる（ステップＡ５）。その後、ステップＡ１に戻りトランザクションを再実行する。
【００２４】
次に、本実施形態によるトランザクション同時実行制御システム１００の動作について具体例を用いて説明する。
トランザクション発行装置１は、ＷＥＢサーバ、アプリケーションサーバ等で実現される。トランザクション同時実行制御装置２は、データベースマネージメントシステム、Ｋｅｙ−Ｖａｌｕｅ−Ｓｔｏｒｅ（Ｖｏｌｄｅｍｏｒｔ，ＨＢａｓｅ，ｋｕｍｏｆｓ等）で実現される。ストレージ３は、ＤＢＭＳ（ＭｙＳＱＬ）の場合はＩｎｎｏＤＢ等、ＫＶＳ（Ｖｏｌｄｅｍｏｒｔ）の場合はＢｅｒｋｌｅｙＤＢ等で実現される。
【００２５】
ストレージ３には、図３に示すデータスキーマに従ったテーブルＸが格納されていると想定する。テーブルＸはプライマリキー（ＰＫ）およびカラム３件（ＣＯＬ１，ＣＯＬ２，ＣＯＬ３）で構成され、２件のレコード（ＰＫ＝１，２）が存在する。
【００２６】
トランザクション発行装置１は、図４に示すトランザクションＴＸ１をトランザクション同時実行制御装置２に送信する。トランザクションＴＸ１は、テーブルＸのＰＫ＝１，２のレコードそれぞれのＣＯＬ１の値をアトミックに変更するためのトランザクションである。
【００２７】
ここでは、トランザクション同時実行制御装置２は、トランザクション内部の一連のデータ更新処理を楽観的ロックによるＣＡＳ操作を用いてアトミックに実行できると仮定する。このような仮定が成立するトランザクション同時実行制御装置２としては、Ｖｏｌｄｅｍｏｒｔ、ＨＢａｓｅ、Ｋｕｍｏｆｓ等のＫＶＳが存在する。ＫＶＳでは、トランザクション内部で更新する全データ（図４に示すトランザクションＴＸ１ではＰＫ＝１，２の両レコード）に、単一のバージョン番号（Ｖ１とする。）を付与してストレージ３に保存する。そして、トランザクションＴＸ１のコミット時に再び両レコードのバージョン番号をストレージ３から取得（Ｖ２とする）して、Ｖ１とＶ２が一致するか否かを判定する（ＣＡＳ操作のＣｏｍｐａｒｅ処理）。一致する場合はコミット成功として、更新データおよびバージョン番号Ｖ１（ＰＫ＝１，２）をインクリメントした値Ｖ３をストレージ３に書き込む（ＣＡＳ操作のＳｗａｐ処置）。一方、一致しなかった場合はコミット失敗とする。
【００２８】
トランザクション発行装置１は、トランザクションＴＸ１と並行して図５に示すトランザクションＴＸ２をトランザクション同時実行制御装置２に送信する。トランザクションＴＸ２は、テーブルＸのＰＫ＝１のレコードのＣＯＬ１の値をアトミックに変更するためのトランザクションである。ＴＸ１およびＴＸ２では同一レコード（ＰＫ＝１）をトランザクション内で更新するため、同一のバージョン番号Ｖ（ＰＫ＝１，２）を使用してＣＡＳ操作を行う。
【００２９】
例えば、トランザクションＴＸ１およびトランザクションＴＸ２が図６に示すようなトランザクション開始・完了順序で実行された場合、トランザクションＴＸ１はＣＡＳ操作で失敗してコミット失敗となる。このため、トランザクション実行時間測定手段２２は、トランザクションＴＸ１およびＴＸ２のトランザクション実行時間を測定する。
【００３０】
ＣＡＳ操作手段２３において、トランザクションＴＸ２がＣＡＳ操作で失敗したためコミット失敗と判断された場合、バックオフ時間決定手段２４はバックオフ時間の計算を開始する。バックオフ時間決定手段２４は、予め設定する下限値（ｒａｎｄ＿ｍｉｎ）および上限値（ｒａｎｄ＿ｍａｘ）の間に存在する乱数値（ｒａｎｄ，ウィンドウサイズと呼ぶ）を生成する（式１）。
【００３１】
ｒａｎｄ＿ｍｉｎ＜ｒａｎｄ＜ｒａｎｄ＿ｍａｘ  …（１）
【００３２】
次に、バックオフ時間決定手段２４は、予め設定するスロットタイム（ｓｌｏｔ）にウィンドウサイズ（ｒａｎｄ）を乗算した値をバックオフ時間（Ｔ＿ｂｏ）とする（式２）。
【００３３】
Ｔ＿ｂｏ＝ｒａｎｄ×ｓｌｏｔ  …（２）
【００３４】
トランザクションプール手段２５は、コミット失敗（１回目）したトランザクションＴＸ２の再実行をトランザクションＴＸ２のバックオフ時間Ｔ＿ｂｏ（ＴＸ２）が経過するまで待機（プーリング）させる。さらに、バックオフ時間Ｔ＿ｂｏ（ＴＸ２）が経過した後、トランザクションＴＸ２をトランザクション実行手段２１に入力してトランザクションを再実行する。
【００３５】
次に、再実行されたトランザクションＴＸ２が再びコミット失敗（２回目以降）した場合のバックオフ時間の決定方法について説明する。バックオフ時間決定手段２４は、トランザクションＴＸ２のコミット失敗回数に応じてバックオフ時間を調整する。具体的には。コミット失敗（１回目）の時に決定したバックオフ時間Ｔ＿ｂｏ（ＴＸ２）から、コミット失敗（２回目）時のトランザクションＴＸ２の実行時間を減算した値を新たなバックオフ時間とする。すなわち、コミット失敗を繰り返す度にバックオフ時間はトランザクション実行時間分減算され、最終的には待ち時間無しでトランザクションが再実行されることになる。
【００３６】
以上のように、本実施形態によれば、楽観的ロック（ＣＡＳ）失敗時に、乱数に基づいて計算するバックオフ時間が経過するまでトランザクション再実行を待機するようにしたので、同時実行される複数トランザクションの実行タイミングが確率的に分散でき、トランザクション同士の再衝突を回避することができる。したがって、同時実行されるトランザクションの数が増えても、マシンリソース消費量の増加を抑制することができる。
【００３７】
また、２回目以降のＣＡＳ失敗時には、前回のＣＡＳ失敗時に決定したバックオフ時間からトランザクション実行時間を減算した値をバックオフ時間とするようにしたので、ＣＡＳ失敗の回数が増えるに従ってバックオフ時間が短くなり、永遠にコミット成功できないトランザクションが発生するのを防止することができる。特に、同時実行される他のトランザクションの実行時間が自身と比べて短い場合、独占的に実行できる区間が無く、長期間に渡ってコミット成功できないという事象が発生しやすいため、本実施形態のように再実行の度にバックオフ時間を短縮することが望ましい。
【００３８】
実施の形態２．
図７は、本発明の実施の形態２によるトランザクション同時実行制御システム２００の構成を示すブロック図である。図１と同一の符号は、同様の構成要素を表している。図７に示すように、実施の形態２によるトランザクション同時実行制御システム２００は、実施の形態１の構成に加え、トランザクション優先度決定手段３１と、インターバル時間決定手段３２を備えている。
【００３９】
実施の形態１では、バックオフ時間決定手段２４はバックオフ時間を乱数（ウィンドウサイズ）を用いてランダムに決定していた。本実施形態では、トランザクション発行装置１またはトランザクション同時実行制御装置２が設定するトランザクション実行優先度に基づいてバックオフ時間を決定する。
【００４０】
トランザクション優先度決定手段３１は、トランザクション毎の実行優先度を決定する。インターバル時間決定手段３２は、トランザクション優先度決定手段３１で決定した実行優先度に基づいて、固定長のインターバル時間を決定する。
【００４１】
バックオフ時間決定手段２４は、インターバル時間決定手段３２が決定したインターバル時間を用いてバックオフ時間を決定する。
【００４２】
次に、トランザクション同時実行制御システム２００の動作について説明する。
図８は、トランザクション同時実行制御システム２００の動作のフローチャートである。ステップＡ１〜Ａ３の動作は実施の形態１と同様である。
【００４３】
トランザクション優先度決定手段３１は、トランザクション発行装置１がトランザクション同時実行制御装置２に対してトランザクション毎に送信する優先度に基づいて、各トランザクションの優先度を決定する。または、予め設定された優先度決定ルールに従って、トランザクション優先度決定手段３１がトランザクション毎の優先度を決定するようにしてもよい（ステップＢ１）。
【００４４】
インターバル時間決定手段３２は、トランザクション優先度決定手段３１が決定した優先度と、予め設定されているインターバル時間マップを照合して、当該トランザクションに適用するインターバル時間を決定する（ステップＢ２）。
【００４５】
バックオフ時間決定手段２４は、インターバル時間決定手段３２が決定したインターバル時間と、コンテンションウィンドウおよびスロットタイムを用いてバックオフ時間を決定する（ステップＡ４）。
【００４６】
トランザクションプール手段２５は、ステップＡ４で決定したバックオフ時間が経過するまでトランザクション再実行を待機させる（ステップＡ５）。その後、ステップＡ１に戻りトランザクションを再実行する。
【００４７】
次に、本実施形態によるトランザクション同時実行制御システム２００の動作について具体例を用いて説明する。
トランザクション同時実行制御装置２のトランザクション優先度決定手段３１は、トランザクション発行装置１がトランザクション毎に指定する優先度（例えば、ＨＩＧＨ，ＭＩＤＤＬＥ，ＬＯＷ）を取得する。
【００４８】
また、予め設定された優先度決定ルールに従って、トランザクション優先度決定手段３１がトランザクション毎の優先度を自身で決定してもよい。優先度決定ルールは、例えばトランザクション内部で更新するデータの規模（テーブルレコード数等）に従って優先度ＨＩＧＨ，ＭＩＤＤＬＥ，ＬＯＷを決定するなどの方法が考えられる。トランザクション内部で多くのレコードを更新する大規模トランザクションは、他の小規模トランザクションと更新対象となるレコードの多くが重複するため、自身や他トランザクションのコミット失敗を誘発する可能性が高い。このため、大規模トランザクションの優先度をＨＩＧＨに決定し、直ちにトランザクションを実行することで、自身および他トランザクションのコミット失敗を防止することができる。
【００４９】
インターバル時間決定手段３２は、例えば図９に示すトランザクション実行優先度（ｐ）およびインターバル時間（ｉｎｔ（ｐ））の対応関係を示すインターバル時間マップを用いて、トランザクション毎のインターバル時間を決定する。
バックオフ時間決定手段２４は、実施の形態１で用いたバックオフ時間にインターバル時間を加算した値をバックオフ時間として算出する（式３）。
【００５０】
Ｔ＿ｂｏ＝ｉｎｔ（ｐ）＋ｒａｎｄ×ｓｌｏｔ  …（３）
【００５１】
以上のように、本実施形態によれば、ＣＡＳ失敗時におけるトランザクション再実行までのバックオフ時間を、トランザクション実行優先度に応じて調整するようにしたので、トランザクション毎に優先度を設定したサービス品質保証ができる。
【００５２】
上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）トランザクションの同時実行制御を行うトランザクション同時実行制御システムであって、
前記トランザクションを実行するトランザクション実行部と、
前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、
前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部を備えた、トランザクション同時実行制御システム。
【００５３】
（付記２）前記バックオフ時間決定部は、所定の上限値および下限値の間に含まれる乱数値を用いて、前記トランザクションの再実行までの待ち時間を計算する、付記１に記載のトランザクション同時実行制御システム。
【００５４】
（付記３）前記トランザクション実行部がトランザクション実行を開始してから完了するまでの実行時間を測定するトランザクション実行時間測定部を備え、
前記バックオフ時間決定部は、
前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間から前記実行時間を減算した値を、次回の再実行までの待ち時間とする、付記１または２に記載のトランザクション同時実行制御システム。
【００５５】
（付記４）前記トランザクションの実行優先度を決定するトランザクション優先度決定部と、
前記実行優先度に基づいて、前記トランザクションを再実行するまでのインターバル時間を決定するインターバル時間決定部と、を備え、
前記バックオフ時間決定部は、
前記インターバル時間を用いて前記トランザクションの再実行までの待ち時間を調整する、付記１から３のいずれかに記載のトランザクション同時実行制御システム。
【００５６】
（付記５）前記バックオフ時間決定部は、
前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間に前記インターバル時間を加算した値を、次回の再実行までの待ち時間とする、付記４に記載のトランザクション同時実行制御システム。
【００５７】
（付記６）前記トランザクションの同時実行制御は、楽観的ロックに基づくトランザクション同時実行制御である、付記１から５のいずれかに記載のトランザクション同時実行制御システム。
【００５８】
（付記７）トランザクションの同時実行制御を行うトランザクション同時実行制御方法であって、
前記トランザクションを実行する工程と、
前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算する工程と、
前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させる工程と、を備えた、トランザクション同時実行制御方法。
【００５９】
（付記８）コンピュータを、
トランザクションの同時実行制御を行うトランザクション同時実行制御装置として機能させるプログラムであって、
前記コンピュータを、
前記トランザクションを実行するトランザクション実行部と、
前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、
前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部、として機能させるプログラム。
【産業上の利用可能性】
【００６０】
本発明は、ＳＮＳ（Ｓｏｃｉａｌ Ｎｅｔｗｏｒｋ Ｓｅｒｖｉｃｅ）、ＥＣ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｍｍｅｒｃｅ）サービス等を提供する大規模ＷＥＢポータルサイトにおけるトランザクション同時実行制御システムや、大規模ＷＥＢポータルサイトをコンピュータで実現するためのトランザクション同時実行制御プログラム等に適用できる。
【符号の説明】
【００６１】
１  トランザクション発行装置、２  トランザクション同時実行制御装置、３  ストレージ、２１  トランザクション実行手段、２２  トランザクション実行時間測定手段、２３  ＣＡＳ操作手段、２４  バックオフ時間決定手段、２５  トランザクションプール手段、３１  トランザクション優先度決定手段、３２  インターバル時間決定手段、１００，２００  トランザクション同時実行制御システム
【図１】
0005754301.tif 000002
【図２】
0005754301.tif 000003
【図３】
0005754301.tif 000004
【図４】
0005754301.tif 000005
【図５】
0005754301.tif 000006
【図６】
0005754301.tif 000007
【図７】
0005754301.tif 000008
【図８】
0005754301.tif 000009
【図９】
0005754301.tif 000010