(57)【要約】【課題】不要データとなる契機を高速に検知する【解決手段】本発明は、あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を検出する際に、走行中のトランザクションのスナップショット情報を格納する共有メモリ領域から、着目するトランザクションＡと、これと同時走行しているトランザクションXそれぞれのスナップショット情報S_A，S_Xを取得し、該スナップショット情報S_A，該スナップショット情報S_Xを所定の条件に基づいて比較することで不要データとなる契機を検出する。【選択図】図１
2010146113.tif 000002
【特許請求の範囲】
【請求項１】
マルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムにおけるデータ管理方法であって、
不要データ特定処理手段が、あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を検出する際に、走行中のトランザクションのスナップショット情報を格納する共有メモリ領域から、着目するトランザクションＡと、これと同時走行しているトランザクションXそれぞれのスナップショット情報S_A，S_Xを取得し、該スナップショット情報S_A，該スナップショット情報S_Xを所定の条件に基づいて比較することで不要データとなる契機を検出する
ことを特徴とするデータ管理方法。
【請求項２】
前記不要データ特定処理手段が、
トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれもが、トランザクションAのスナップショット情報S_AにおいてもAと同時走行していると見做される場合は、該トランザクションXを走行させたままとし、トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれかが、トランザクションAのスナップショット情報S_Aにおいては走行完了していると見做される場合は、該トランザクションXが走行完了するのを待つ、もしくは、該トランザクションXがスナップショット情報を更新するのを待つ
請求項１記載のデータ管理方法。
【請求項３】
マルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムにおけるデータ管理装置であって、
あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を検出する際に、走行中のトランザクションのスナップショット情報を格納する共有メモリ領域から、着目するトランザクションＡと、これと同時走行しているトランザクションXそれぞれのスナップショット情報S_A，S_Xを取得し、該スナップショット情報S_A，該スナップショット情報S_Xを所定の条件に基づいて比較することで不要データとなる契機を検出する不要データ特定処理手段を有することを特徴とするデータ管理装置。
【請求項４】
前記不要データ特定処理手段は、
トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれもが、トランザクションAのスナップショット情報S_AにおいてもAと同時走行していると見做される場合は、該トランザクションXを走行させたままとし、トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれかが、トランザクションAのスナップショット情報S_Aにおいては走行完了していると見做される場合は、該トランザクションXが走行完了するのを待つ、もしくは、該トランザクションXがスナップショット情報を更新するのを待つ手段を含む請求項３記載のデータ管理装置。
【請求項５】
請求項３または４記載のデータ管理装置を構成する各手段としてコンピュータを機能させるためのデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理方法及び装置及びプログラムに係り、特に、マルチバージョン式の同時実行制御機能を有するリレーショナルデータベースシステムにおけるデータベース管理方法及び装置及びプログラムに関する。
【背景技術】
【０００２】
データのマルチバージョン管理によりデータの参照と更新の同時実行を可能とするマルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムでは、どのトランザクションからも参照されなくなったデータ（以下、不要データと記す）を特定の上、この格納領域（以下、不要領域と記す）を再利用する不要領域回収処理が必要である。
【０００３】
また、当該データベースに格納されているデータの構造劣化を解消して性能回復を図るデータベース再編成では、この不要データを除くデータについてのみ再編成を行うことが有効である（例えば、非特許文献１，２参照）。
【非特許文献１】M. Stonebraker, The design of the POSTGRES storage system, Proc. VLDB Conference, Sept. 1987. (http://www.signmod.org/vldb/conf/1987/P289.PDF)
【非特許文献２】T. Lane, Transaction Processing in PostgreSQL, PostgreSQLグローバル開発グループ技術文書, Oct, 2000. (http://www.postgresql.org/files/developer/transakucitons.pdf)
【発明の開示】
【発明が解決しようとする課題】
【０００４】
不要領域回収処理並びにデータベース再編成処理における不要データの特定処理では、当該処理を司るトランザクションによって参照されることのないデータが、他のトランザクションからも参照されなくなる契機を高速に検知することが必要となる。この契機としては従来より、当該処理を司るトランザクションと同時に走行するトランザクションの完了時点を契機とする方法が用いられているが、この方法では、同時走行トランザクションがロングトランザクションの場合にこの検知に時間がかかるという問題がある。
【０００５】
本発明は、上記の点に鑑みなされたもので、マルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムにおいて、あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を、前述のトランザクションが高速に検知することが可能なデータベース管理方法及び装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
図１は、本発明の原理を説明するための図である。
【０００７】
本発明（請求項１）は、マルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムにおけるデータ管理方法であって、
不要データ特定処理手段が、あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を検出する際に、走行中のトランザクションのスナップショット情報を格納する共有メモリ領域から、着目するトランザクションＡと、これと同時走行しているトランザクションXそれぞれのスナップショット情報S_A，S_Xを取得し、該スナップショット情報S_A，該スナップショット情報S_Xを所定の条件に基づいて比較することで不要データとなる契機を検出する。
【０００８】
また、本発明（請求項２）において、不要データ特定処理手段が、
トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれもが、トランザクションAのスナップショット情報S_AにおいてもAと同時走行していると見做される場合は、該トランザクションXを走行させたままとし、トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれかが、トランザクションAのスナップショット情報S_Aにおいては走行完了していると見做される場合は、該トランザクションXが走行完了するのを待つ、もしくは、該トランザクションXがスナップショット情報を更新するのを待つ。
【０００９】
図２は、本発明の原理構成図である。
【００１０】
本発明（請求項３）は、マルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムにおけるデータ管理装置であって、
あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を検出する際に、走行中のトランザクションのスナップショット情報を格納する共有メモリ領域から、着目するトランザクションＡと、これと同時走行しているトランザクションXそれぞれのスナップショット情報S_A，S_Xを取得し、該スナップショット情報S_A，該スナップショット情報S_Xを所定の条件に基づいて比較することで不要データとなる契機を検出する不要データ特定処理手段を有する。
【００１１】
また、本発明（請求項４）において、不要データ特定処理手段は、
トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれもが、トランザクションAのスナップショット情報S_AにおいてもAと同時走行していると見做される場合は、該トランザクションXを走行させたままとし、トランザクションXのスナップショット情報S_XにおいてXと同時走行していると見做されるトランザクションのいずれかが、トランザクションAのスナップショット情報S_Aにおいては走行完了していると見做される場合は、該トランザクションXが走行完了するのを待つ、もしくは、該トランザクションXがスナップショット情報を更新するのを待つ手段を含む。
【００１２】
本発明（請求項５）は、請求項３または４記載のデータ管理装置を構成する各手段としてコンピュータを機能させるためのデータ管理プログラムである。
【発明の効果】
【００１３】
上記のように本発明によれば、マルチバージョン式の同時実行制御を有するリレーショナルデータベースシステムにおいて、着目するトランザクションとその同時走行トランザクションのスナップショット情報の比較により対象データの参照可能性を判定することにより、あるトランザクションから見て参照されることのないデータが他のどのトランザクションからも参照されなくなる契機を、従来のように同時走行トランザクションの完了を必ずしも待つことなく高速に検知できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面と共に本発明の実施の形態を説明する。
【００１５】
まず、本実施の形態では、あるトランザクションによって参照されることのないデータが、他のどのトランザクションからも参照されなくなり不要データとなる契機を、同時走行トランザクションの完了時点とするのではなく、マルチバーション式の同時実行制御を有するリレーショナルデータベースシステムの構造に基づいて同時走行トランザクションからの対象データの非参照性を保証する時点とすることにより、前述した契機の検知を高速化する。
【００１６】
前述した契機の検知では、同時走行するトランザクションに与えられているスナップショットの情報に基づいて当該トランザクションによる対象データの参照可能性を判定する。ここで、スナップショット（詳細は後述する）とは、そのトランザクションから参照可能なデータ、あるいは、データのバージョンを特定するのに用いられる情報であって、本発明で前提とするトランザクションの分離レベルがコミット済み読み込みの場合は、トランザクション開始時もしくはトランザクション中のSELECTなどSQLコマンドの実行毎に、リレーショナルデータベースシステムのトランザクション管理部により与えられる。
【００１７】
以下、本発明で用いるリレーショナルデータベースシステムの概念について説明する。
【００１８】
＜トランザクション識別子＞
リレーショナルデータベースでは、各々のトランザクションに対して、当該トランザクションを一意に識別するための識別子が、トランザクション開始時にリレーショナルデータベースシステムのトランザクション管理部より払い出される。例えば、トランザクションの開始時に"１"，"２"，"３"…とトランザクション識別子が払い出される。
【００１９】
＜トランザクションのスナップショット＞
トランザクションのスナップショットとは、トランザクション開始時もしくはトランザクション中のSELECTなどSQLコマンドの実行毎に当該トランザクションと同時走行するトランザクションの情報として、リレーショナルデータベースシステムのトランザクション管理部より与えられるものである。この情報により、該トランザクションから参照可能なデータあるいは、データのバージョンが特定可能となる（詳細には例により後述する）。
【００２０】
トランザクションは開始時もしくはトランザクション中のSELECTなどSQLコマンドの実行毎にリレーショナルデータベースシステムのトランザクション管理部にスナップショット情報を要求し、トランザクション管理部はその時点で走行中のトランザクションを特定の上、それらのトランザクションを表現するデータ構造としてスナップショットを生成し、要求元のトランザクションに返却する。スナップショットは、トランザクションからの要求時までに走行完了しているトランザクションのうち識別子が最大のもの（そのような識別子をi_maxとする）と、識別子がi_maxを超えない走行中のトランザクション（そのようなトランザクションの識別子をそれぞれi_１，…，i_mとする）により表現される。すなわち、次のように表される。
【００２１】
スナップショット情報を要求したトランザクションから見た走行完了トランザクションのうち識別子が最大のもの＝i_max；
スナップショット情報を要求したトランザクションから見た走行中のトランザクション＝｛i_1，i_2，…，i_m｝（i_1からi_mはそれぞれi_maxを超えない）
ここで、識別子がi_maxを超えるトランザクションについてはすべて走行中であるとみなされる。
【００２２】
＜データの複数版管理による同時実行制御＞
データの複数版管理の実現方法には様々なものがあるが、その一つである追記型と呼ばれる方法では、データの更新の際、更新対象のデータを上書きするのではなく、更新後の新しいデータを作成の上、更新対象データとは別領域に別途格納することにより対象データを複数版管理する。そして、トランザクションは与えられているスナップショット情報に基づいて参照可能データ、あるいは、データのバージョンを特定できる。
【００２３】
以下にその例を示す。
【００２４】
識別子"１"のトランザクションが、あるテーブルにデータを挿入し、走行完了（コミット）した後に、識別子がそれぞれ"２"、"３"のトランザクションが順に走行を開始したとすると、識別子"２"のトランザクションのスナップショット情報S_2は、
S_2
・識別子"２"のトランザクションから見た走行完了しているトランザクションのうち識別子が最大のもの＝"１"；
・識別子"２"のトランザクションから見た走行中のトランザクション＝空集合；
同様に、識別子"３"のトランザクションのスナップショット情報S_3は、
S_3
・識別子"３"のトランザクションから見た走行完了しているトランザクションのうち識別子が最大のもの＝"１"；
・識別子"３"のトランザクションから見た走行中のトランザクション＝空集合；
となる。識別子"２"のトランザクションと同時走行している識別子"３"のトランザクションは、識別子"２"のトランザクションのスナップショットの「走行完了しているトランザクションのうち識別子が最大のもの」の"１"より大きいことから、走行中と判定される。また、識別子"３"のトランザクションと同時走行している識別子"２"のトランザクションは、識別子"３"のトランザクションのスナップショットの「走行完了しているトランザクションのうち識別子が最大のもの」の"１"より大きいことからやはり走行中と判定される。
【００２５】
また、本発明で対象とする追記型と呼ばれる方法では、データ更新の際、識別子"１"のトランザクションによる挿入データを、識別子"３"のトランザクションが更新する場合は、識別子"３"のトランザクションが、更新後の新しいデータを作成の上、識別子"１"のトランザクションによる挿入データとは別の領域に格納することにより複数版管理する。すなわち、次のようにデータの更新チェインを形成していく。
【００２６】
"１"による挿入データ→"３"による更新データ
一方、識別子"２"のトランザクションからは、識別子"３"のトランザクションは走行中と見做されることから、その更新データは操作中と見做されることとなり、参照対象となることはない。すなわち、識別子"２"のトランザクションからは、識別子"１"のトランザクションによる挿入データのみ参照可能となる。このように、識別子"２"のトランザクションによる、識別子"１"のトランザクションによる挿入データの参照可能性を確保しながら、識別子"３"のトランザクションによる更新処理を許容することがマルチバーション式の同時実行制御を有するリレーショナルデータベースシステムの大きな特徴である。
【００２７】
さて、識別子"３"のトランザクションが走行完了（コミット）し、その後に識別子"４"のトランザクションが走行開始したとすると、識別子"４"のトランザクションのスナップショット情報S_4は次のようになる。
【００２８】
S_4
・識別子"４"のトランザクションから見た走行完了しているトランザクションのうち識別子が最大のもの＝"３"；
・識別子"４"のトランザクションから見た走行中のトランザクション＝"２"；
このスナップショット情報により、識別子"４"のトランザクションからは、識別子"１"及び"３"の２つのトランザクションが走行完了（コミット）しており、識別子"１"のトランザクションによる挿入データと識別子"３"のトランザクションによる更新データがいずれも参照可能となるが、前述した更新チェインの情報により、後者の更新データが有効であると見做される。したがって、識別子"１"のトランザクションによる挿入データは、識別子"４"のトランザクションからは参照されることはないが、識別子"２"のトランザクションからは参照可能である。ここで、識別子"４"のトランザクションを着目するトランザクションとすると、識別子"２"のトランザクションから参照されなくなることが保証されるまでは、識別子"１"のトランザクションによる挿入データを不要データと見做すことができない。本発明ではこのような場合に不要データとなる契機を高速に検知することを目的とするものである。
【００２９】
なお、マルチバージョン式の同時実行制御を有するリレーショナルデータベースでは、トランザクションAの開始後に走行を開始するトランザクションBは、Aによって参照されることのないデータを参照しないことから、着目するトランザクションによって参照されることのないデータが不要データとなる契機の検知には、着目するトランザクションの開始時に走行中のトランザクションのみを考慮すればよい。
【００３０】
以下では、上記の準備を元に上述した契機の検知方法を説明する。
【００３１】
図３は、本発明の一実施の形態におけるデータベース管理装置の構成図である。
【００３２】
同図に示すデータベース管理装置は、データ格納部１０、トランザクション管理部２０、スナップショット格納部３０、不要データ特定処理部４０から構成される。
【００３３】
本発明では、個々のトランザクションがトランザクション管理部２０によりスナップショットを取得した場合は、当該スナップショット情報を他のどのトランザクションからも参照できるように、共有メモリ領域のスナップショット格納部３０に当該トランザクションの識別子情報とあわせて格納するように拡張する。
【００３４】
トランザクションの分離レベルがコミット済み読み込みの場合は、トランザクションの開始時もしくはSQLコマンドの実行毎にトランザクション管理部２０よりスナップショットを取得すると、その都度この領域に格納する。トランザクションが走行完了する場合はこの領域に格納しているスナップショットの情報を削除するようにする。
【００３５】
なお、トランザクション管理部２０とは、リレーショナルデータベースに備わるトランザクション処理のための機能であって、トランザクションからの要求に応じて識別子を払い出すと共にスナップショットを生成し、該トランザクションに提供する。
【００３６】
また、スナップショット格納部３０は、書き込み用及び読み込み用ロックを用いて排他制御を行うようにするのが望ましい。すなわち、トランザクションがトランザクション管理部２０よりスナップショットを取得した場合には、書き込み用ロックを用いて当該領域への他トランザクションによる書き込み及び読み込みの両操作を禁止した上で、当該スナップショットの情報を格納するようにする。一方、トランザクションがスナップショット格納部３０に格納されている他のトランザクションのスナップショット情報を参照する場合は、読み込み用ロックを用いて他のトランザクションによる書き込み操作を禁止した上で対象トランザクションのスナップショット情報を参照するようにする。
【００３７】
図４に、スナップショット格納部３０の例を示す。同図では、着目するトランザクションと同時走行しているトランザクションの識別子とスナップショット情報（走行中のトランザクションの識別子の集合、走行完了しているトランザクションのうち識別子が最大のもの）を格納する。
【００３８】
不要データ特定処理部４０は、あるトランザクションから参照されることのないデータが不要データとなる契機の検知を行う。そのために、着目するトランザクションの開始時に走行しているトランザクションについて、対象データの参照可能性を判定する。
【００３９】
以下では、不要データ特定処理を実施するトランザクションを開始させた際に、識別子i1，…，im-1（i1＜…＜im-1）のｍ−１個のトランザクションが走行しているものとして説明する（不要データ特定処理を実施するトランザクションには識別子としてimが与えられているものとする）。識別子がそれぞれi1，…，im-1のトランザクションに与えられているスナップショットがそれぞれ次のように表されるものとする。
【００４０】
S_i1：
・識別子i1のトランザクションから見た走行完了トランザクションのうち識別子が最大のもの＝j1_max；
・識別子i1のトランザクションから見た走行中トランザクション＝｛j1_1，j1_2，…，ｊ1_n1｝（j1_1からj1_n1はそれぞれj1_maxを超えない）
……
S_im-1：
・識別子"im-1"のトランザクションから見た走行完了トランザクションのうち識別子が最大のもの＝jm-1_max：
・識別子"im-1"のトランザクションから見た走行中トランザクション＝｛im-1_1，jm-1_2，…，jm-1_nm-1｝（jm-1_1からjm-1_nm-1はそれぞれjm-1_maxを超えない）
以下では、トランザクションの分離レベルがコミット済み読み込みであることを前提とする。
【００４１】
図５は、本発明の一実施の形態における不要データ特定処理部の動作のフローチャートである。
【００４２】
カウンタｋを初期化（ｋ＝１）し（ステップ１０１）、共有メモリ領域のスナップショットが格納された識別子i1，…，im−1のスナップショット情報を順次取得し（ステップ１０２）、ｋ＝ｍになるまで処理を繰り返す。X=ikのスナップショット情報を取得すると、次の条件Ａが成立するかどうかを判定する（ステップ１０３）。
【００４３】
条件Ａ：
X=ikと同時走行しているトランザクションのうち一つでも、識別子imのトランザクションから見て走行完了していると見做されるものが存在するかを判定する。
【００４４】
この条件判定は、Xから見た同時走行トランザクションである、識別子がそれぞれjk_1，…，jk_nkのトランザクション及び識別子がjk_maxより大きいトランザクションのそれぞれについて、そのトランザクションが識別子imのトランザクションから見て走行完了と見做されるかどうかを判定することにより実施する。なお、リレーショナルデータベースシステムのトランザクション管理部２０に、条件判定時まで払い出しているトランザクション識別子の最大値を問い合わせることにより、識別子がjk_maxより大きく該最大値以下となるトランザクションを判定対象とするようにする。
【００４５】
識別子imのトランザクションと同時走行しているトランザクションは、識別子がそれぞれi_1，…，i_m-1のm-1個のトランザクションであることから、判定対象のトランザクションの識別子がこれらのうちのいずれかもしくはimに一致する場合は識別子imのトランザクションから見ても走行中となり、いずれにも一致しない場合は識別子imのトランザクションから見ると走行完了していることとなる。そこで、後者の場合、条件Ａが成立すると判定する。
【００４６】
なお、識別子imのトランザクションと同時走行している、識別子がそれぞれi_1，…，i_m-1のm-1個のトランザクションは、識別子imのトランザクションのスナップショット情報を用いて表現されることから、該スナップショット情報を用いる判定方法を説明する。識別子imのトランザクションのスナップショット情報S_imが次のように表されるものとする。
【００４７】
S_im：
・識別子imのトランザクションから見た走行完了トランザクションのうち識別子が最大のもの＝jm_max；
・識別子imのトランザクションから見た走行中トランザクション＝｛jm_1，jm_2，…，jm_nm｝；（jm_1からjm_nmはそれぞれjm_maxを超えない）
スナップショット情報を用いる場合、Xと同時走行している、識別子がそれぞれjk_1，…，jk_nkのｋ個のトランザクション及び識別子がjk_maxより大きいトランザクションのそれぞれについて、そのトランザクションの識別子がjm_1，jm_2，…，jm_nmの内のいずれかに一致するか、もしくは、該識別子がjm_maxよりも大きいか判定する。この条件を満たす場合、該トランザクションは識別子imのトランザクションから見ても走行中となり、この条件を満たさない場合は該トランザクションは識別子imのトランザクションから見ると走行完了していることとなるから、後者の場合、条件Ａが成立すると判定する。
【００４８】
Xがこの条件Ａを満たす場合は（ステップ１０３、Ｙｅｓ）、Xが走行完了するか、もしくはXが現在のSQLコマンドを終え、新しいSQLコマンドを開始するのを待つ処理に移る（ステップ１０４）。Xがこの条件Ａを満たさない場合は（ステップ１０３、Ｎｏ）、Xに対する処理を終え、kに１を加え（ステップ１０９）、処理の始めに戻る。
【００４９】
なお、前述の例で説明すれば、識別子"４"のトランザクションを着目するトランザクションとするとき、識別子"２"のトランザクションは条件Ａを満たす。なぜなら、識別子"２"のトランザクションから見た走行中トランザクションは自身を除けば、識別子"３"及び"４"のトランザクションであり、識別子"４"のトランザクションから見れば走行完了している、識別子"３"のトランザクションを、識別子"２"のトランザクションは自身の同時走行トランザクションとするからである。前述した通り、識別子"２"のトランザクションは、識別子"４"のトランザクションから参照されることのない、識別子"１"のトランザクションによる挿入データを参照する可能性があることから、識別子"２"のトランザクションから参照されなくなることが保証されるまで、識別子"４"のトランザクションは待機することが必要となる。前述した判定処理は、識別子"２"のようなトランザクションを識別子"４"のトランザクションが特定するためのものである。
【００５０】
処理の説明に戻る。前者の場合、条件Ａを成立させる、Xと同時走行しているトランザクションの識別子の情報（jk_Aとする）を不要データ特定処理部４０のメモリ（図示せず）に保存の上、一定期間スリープする（ステップ１０４）。前述の例で説明すれば、識別子"２"のトランザクションに対して、jk_Aとして、識別子"２"のトランザクションと同時走行している識別子"３"のトランザクションの識別子"３"を不要データ特定処理部４０のメモリに保存の上、一定期間スリープする。その後、スナップショット格納部３０に格納されている、Xのスナップショット情報の再取得を試みる（ステップ１０５）。スナップショットが存在せず、Xが完了している場合は（ステップ１０６、Ｎｏ）、kに１を加え（ステップ１０９）、処理のはじめに戻る。完了していない場合は（ステップ１０６、Ｙｅｓ）、不要データ特定処理部４０のメモリ（図示せず）に保存しておいたjk_Aを用いて、Xが新しいSQLコマンドを実行したかどうかを判定する。識別子jk_Aのトランザクションは、実際には走行完了しているトランザクションであることから、Xが新しいSQLコマンドを実行し、スナップショット情報を更新しているならば、そのスナップショット情報において識別子jk_Aのトランザクションはもはや走行中のトランザクションとして含まれることはない。したがって、次の条件Ｂによりスナップショット情報が更新されているか否か判定する（ステップ１０７）。
【００５１】
条件Ｂ：
識別子jk_Aのトランザクションが、スナップショット格納部３０より再取得したXのトランザクションのスナップショットにおいて走行中のトランザクションとして含まれるかを判定する。
【００５２】
以下では、スナップショット格納部３０より再取得した、X＝ikのトランザクションのスナップショット情報が次のように表されるものとする。
【００５３】
S_reset_ik：
・識別子X=ikのトランザクションから見た走行完了トランザクションのうち識別子が最大のもの＝jk_reset_max；
・識別子X=ikのトランザクションから見たトランザクション＝｛jk_reset_1，jk_reset_2，…，jk_reset_nk｝ （jk_reset_1からjk_reset_nkはそれぞれjk_reset_maxを超えない）
このとき、識別子jk_Aが、jk_reset_1，jk_reset_2，…，jk_reset_nkのうちのいずれかの識別子に一致するか、もしくはjk_reset_maxより大きいかを判定する。この条件を満たす場合、識別子jk_Aのトランザクションは識別子X=ikのトランザクションの再取得したスナップショットにおいて走行中のトランザクションとしてまだ含まれることとなることから、条件Ｂが成立すると判定する。なお、前述の例で説明すれば、スナップショット格納部３０より再取得した識別子"２"のトランザクションのスナップショットにおいて識別子"３"のトランザクションが走行中のトランザクションとしてまだ含まれる場合、条件Ｂが成立すると判定する。
【００５４】
Xがこの条件Ｂを満たす場合は（ステップ１０７、Ｙｅｓ）、Xが走行完了するか、もしくはXが現在のSQLコマンドを終え、新しいSQLコマンドを開始するのを待つ（ステップ１０４）。Xがこの条件Ｂを満たさない場合は（ステップ１０７、Ｎｏ）、Xに対する処理を終え、kに１を加え（ステップ１０９）、処理の始めに戻る。前者の場合、一定時間スリープの上、再度前述の処理を繰り返す。識別子がそれぞれi1，…，im−1のすべてのトランザクションに対して以上説明した処理が終了したら所望の契機を検知したとして処理を終了する。
【００５５】
なお、上記の図３の不要データ特定処理部の動作をプログラムとして構築し、データ管理装置として利用されるコンピュータにインストールして、ＣＰＵに実行させる、または、ネットワークを介して流通させることが可能である。
【００５６】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００５７】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【産業上の利用可能性】
【００５８】
本発明は、リレーショナルデータベースシステムのデータ管理技術に適用可能である。
【図面の簡単な説明】
【００５９】
【図１】本発明の原理を説明するための図である。
【図２】本発明の原理構成図である。
【図３】本発明の一実施の形態におけるデータベース管理装置の構成図である。
【図４】本発明の一実施の形態におけるスナップショット格納部の例である。
【図５】本発明の一実施の形態における不要データ特定処理部の分離レベルがコミット済み読み込みの場合の動作である。
【符号の説明】
【００６０】
１０  データ格納部
２０  トランザクション管理手段、トランザクション管理部
３０  スナップショット格納部、共有メモリ領域
４０  不要データ特定処理部、不要データ特定処理手段
【図１】
2010146113.tif 000003
【図２】
2010146113.tif 000004
【図３】
2010146113.tif 000005
【図４】
2010146113.tif 000006
【図５】
2010146113.tif 000007