(57)【要約】  データベース管理システム（ＤＢＭＳ）は、第１の記憶デバイスよりアクセス速度の遅い第２の記憶デバイスに存在するデータベースを管理する。ＤＢＭＳは、クエリの実行において、タスクを動的に生成し、実行可能な２以上のタスクが存在する場合には、２以上のタスクのうちの少なくとも２つを並行して実行するようになっている。ＤＢＭＳは、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成して管理し、前記タスクにより、前記タスク開始情報が示す内容を実行する。前記タスク開始情報には、前記第２の記憶デバイスに存在するデータアドレス集合を含む。ＤＢＭＳは、前記タスク開始情報の管理状態に基づいて、前記第１の記憶デバイスと前記第２の記憶デバイスとの間での１以上のデータアドレス集合の移動を制御する。また、ＤＢＭＳは、前記データアドレス集合が、前記第１の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択する。
2013175609.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶デバイスよりアクセス速度の遅い第２の記憶デバイスに存在するデータベースを管理するデータベース管理システムであって、
前記データベースへのクエリを受け付けるクエリ受付部と、
前記受け付けたクエリを実行するために必要な１以上のＤＢオペレーションと前記１以上のＤＢオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成するクエリ実行プラン生成部と、
前記生成したクエリ実行プランに基づいて前記クエリを実行し、前記クエリの実行において、前記１以上のＤＢオペレーションを実行するためのタスクを動的に生成し、実行可能な２以上のタスクが存在する場合には、前記２以上のタスクのうちの少なくとも２つを並行して実行するクエリ実行部と、
前記タスクの実行を管理する実行タスク管理部と、
前記第２の記憶デバイスに存在する前記データベースのデータを、前記第１の記憶デバイスに一時的に読出して管理するＤＢバッファ管理部と
を有し、
前記クエリ実行部はコンテキスト管理部とタスク割当て管理部とを有し、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成し、前記タスクにより前記タスク開始情報が示す内容を実行し、
前記タスク開始情報は、コンテキストと前記コンテキストに関連づけられたデータアドレス集合とを含み、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するＤＢオペレーションが、前記クエリ実行プランに含まれる情報である１以上のＤＢオペレーションのうちのいずれであるかを示す第１の情報と、前記第１の情報が示すＤＢオペレーションに要するデータのアクセス先に関する第２の情報と、前記新たに生成するタスクにより前記１以上のＤＢオペレーションに関する結果を生成するために必要なデータに関する第３の情報とを含む情報であり、
前記データアドレス集合は、前記第２の記憶デバイスに存在し、前記データのアクセス先に関する第２の情報に基づいて、アクセス先データのアドレスを特定するための情報であり、
前記コンテキスト管理部は、前記生成されたコンテキストを管理し、
前記タスク割当て管理部は、
（Ａ）前記コンテキストと関連づけられたデータアドレス集合が前記第１の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択し、
前記ＤＢバッファ管理部は、
（Ｂ）タスク開始情報の管理状態に基づいて、前記第２の記憶デバイスから前記第１の記憶デバイスへデータアドレス集合を読み出し、又は、前記第１の記憶デバイスに読み出されたデータアドレス集合を削除する、
ことを特徴とする、データベース管理システム。
【請求項２】
前記タスク割当て管理部は、
前記（Ａ）で、前記第１の記憶デバイスに格納されているデータアドレス集合を含んだタスク開始情報が存在するか否かを判定し、その判定の結果が肯定的の場合に、前記第１の記憶デバイスに存在する前記データアドレス集合を含むタスク開始情報を選択し、前記判定が否定的の場合に、前記第２の記憶デバイスに存在するデータアドレス集合を選択し、前記選択されたデータアドレス集合を前記第１の記憶デバイスへ読み出し、前記読み出されたデータアドレス集合を含むタスク開始情報を選択する、
請求項１に記載のデータベース管理システム。
【請求項３】
前記タスク割当て管理部は、
前記（Ａ）で、前記第１の記憶デバイスに複数のデータアドレス集合が存在する場合に、前記複数のデータアドレス集合をそれぞれ含む複数のタスク開始情報のうち、アクセスされていないデータアドレス数が最も少ないデータアドレス集合を含むタスク開始情報を選択する、
請求項２に記載のデータベース管理システム。
【請求項４】
前記タスク割当て管理部は、
（Ｃ）単位時間当たりに新たに生成される前記タスク開始情報の数である生成スピードと、アクセス先データが全てアクセスされた前記タスク開始情報が単位時間当たりに生じる数である消費スピードとを測定し、
（Ｄ）前記生成スピードと前記消費スピードとを比較し、
前記ＤＢバッファ管理部は、前記（Ｄ）での比較の結果を基に、前記（Ｂ）を行う、
請求項１に記載のデータベース管理システム。
【請求項５】
前記ＤＢバッファ管理部は、前記（Ｄ）での比較の結果が、前記生成スピードが前記消費スピードより速い、である場合に、前記（Ｂ）で、前記第１の記憶デバイスから、アクセスされていないデータアドレス数が所定の値より多いデータアドレス集合を削除する、
請求項４に記載のデータベース管理システム。
【請求項６】
前記ＤＢバッファ管理部は、前記（Ｄ）での比較の結果が、前記生成スピードが前記消費スピードより遅い、である場合に、前記（Ｂ）で、前記第１の記憶デバイスから、アクセスされていないデータアドレス数が所定の値より少ないデータアドレス集合を削除する、
請求項４に記載のデータベース管理システム。
【請求項７】
前記ＤＢバッファ管理部は、前記（Ｄ）での比較の結果が、前記生成スピードが前記消費スピードより速い、である場合に、前記（Ｂ）で、前記１以上のタスク開始情報にそれぞれ対応する１以上のデータアドレス集合であって前記第１の記憶デバイスに存在していないデータアドレス集合のうち、アクセスされていないデータアドレス数が所定の値より少ないデータアドレス集合を、前記第２の記憶デバイスから前記第１の記憶デバイスに読み出す、
請求項４に記載のデータベース管理システム。
【請求項８】
前記ＤＢバッファ管理部は、前記（Ｄ）での比較の結果が、前記生成スピードが前記消費スピードより遅い、である場合に、前記（Ｂ）で、前記１以上のタスク開始情報にそれぞれ対応する１以上のデータアドレス集合であって前記第１の記憶デバイスに存在していないデータアドレス集合のうち、アクセスされていないデータアドレス数が所定の値より多いデータアドレス集合を、前記第２の記憶デバイスから前記第１の記憶デバイスに読み出す、
請求項４に記載のデータベース管理システム。
【請求項９】
前記ＤＢバッファ管理部は、
前記第１の記憶デバイスに、前記データアドレス集合を格納可能な空き容量が所定量より多い場合に、前記第２の記憶デバイス中の１以上の前記データアドレス集合を、前記第２の記憶デバイスから前記第１の記憶デバイスに読み出す、
請求項１に記載のデータベース管理システム。
【請求項１０】
データベースを管理する計算機であって、
第１の記憶デバイスと、
前記第１の記憶デバイスに接続された制御デバイスと
を有し、
前記データベースが、第１の記憶デバイスよりアクセス速度の遅い第２の記憶デバイスに存在しており、
前記制御デバイスが、
（Ｐ）前記データベースへのクエリを受け付け、
（Ｑ）前記受け付けたクエリを実行するために必要な１以上のＤＢオペレーションと前記１以上のＤＢオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成し、
（Ｒ）前記生成したクエリ実行プランに基づいて前記クエリを実行し、前記クエリの実行において、前記１以上のＤＢオペレーションを実行するためのタスクを動的に生成し、実行可能な２以上のタスクが存在する場合には、前記２以上のタスクのうちの少なくとも２つを並行して実行し、
（Ｓ）前記第２の記憶デバイスに存在する前記データベースのデータを、前記第１の記憶デバイスに一時的に読出して管理し、
前記制御デバイスが、前記（Ｒ）において、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成し、前記タスクにより前記タスク開始情報が示す内容を実行し、
前記タスク開始情報は、コンテキストと前記コンテキストに関連づけられたデータアドレス集合とを含み、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するＤＢオペレーションが、前記クエリ実行プランに含まれる情報である１以上のＤＢオペレーションのうちのいずれであるかを示す第１の情報と、前記第１の情報が示すＤＢオペレーションに要するデータのアクセス先に関する第２の情報と、前記新たに生成するタスクにより前記１以上のＤＢオペレーションに関する結果を生成するために必要なデータに関する第３の情報とを含む情報であり、
前記データアドレス集合は、前記第２の記憶デバイスに存在し、前記データのアクセス先に関する第２の情報に基づいて、アクセス先データのアドレスを特定するための情報であり、
前記制御デバイスが、
（Ａ）前記コンテキストと関連づけられたデータアドレス集合が前記第１の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択し、
（Ｂ）タスク開始情報の管理状態に基づいて、前記第２の記憶デバイスから前記第１の記憶デバイスへデータアドレス集合を読み出し、又は、前記第１の記憶デバイスに読み出されたデータアドレス集合を削除する、
ことを特徴とする、計算機。
【請求項１１】
前記制御デバイスは、
前記（Ａ）で、前記第１の記憶デバイスに格納されているデータアドレス集合を含んだタスク開始情報が存在するか否かを判定し、その判定の結果が肯定的の場合に、前記第１の記憶デバイスに存在する前記データアドレス集合を含むタスク開始情報を選択する、
請求項１０に記載の計算機。
【請求項１２】
前記制御デバイスは、
（Ｃ）単位時間当たりに新たに生成される前記タスク開始情報の数である生成スピードと、アクセス先データが全てアクセスされた前記タスク開始情報が単位時間当たりに生じる数である消費スピードとを測定し、
（Ｄ）前記生成スピードと前記消費スピードとを比較し、
前記制御デバイスは、前記（Ｄ）での比較の結果を基に、前記（Ｂ）を行う、請求項１０に記載の計算機。
【請求項１３】
第１の記憶デバイスよりアクセス速度の遅い第２の記憶デバイスに存在するデータベースを管理するデータベース管理方法であって、
（Ｐ）前記データベースへのクエリを受け付け、
（Ｑ）前記受け付けたクエリを実行するために必要な１以上のＤＢオペレーションと前記１以上のＤＢオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成し、
（Ｒ）前記生成したクエリ実行プランに基づいて前記クエリを実行し、前記クエリの実行において、前記１以上のＤＢオペレーションを実行するためのタスクを動的に生成し、実行可能な２以上のタスクが存在する場合には、前記２以上のタスクのうちの少なくとも２つを並行して実行し、
（Ｓ）前記第２の記憶デバイスに存在する前記データベースのデータを、前記第１の記憶デバイスに一時的に読出して管理し、
前記（Ｒ）で、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成して管理し、前記タスクにより、前記タスク開始情報が示す内容を実行し、
前記タスク開始情報は、コンテキストと前記コンテキストに関連づけられたデータアドレス集合とを含み、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するＤＢオペレーションが、前記クエリ実行プランに含まれる情報である１以上のＤＢオペレーションのうちのいずれであるかを示す第１の情報と、前記第１の情報が示すＤＢオペレーションに要するデータのアクセス先に関する第２の情報と、前記新たに生成するタスクにより前記１以上のＤＢオペレーションに関する結果を生成するために必要なデータに関する第３の情報とを含む情報であり、
前記データアドレス集合は、前記第２の記憶デバイスに存在し、前記データのアクセス先に関する第２の情報に基づいて、アクセス先データのアドレスを特定するための情報であり、
（Ａ）前記コンテキストと関連づけられたデータアドレス集合が前記第１の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択し、
（Ｂ）タスク開始情報の管理状態に基づいて、前記第２の記憶デバイスから前記第１の記憶デバイスへデータアドレス集合を読み出し、又は、前記第１の記憶デバイスに読み出されたデータアドレス集合を削除する、
ことを特徴とする、データベース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理技術に関する。
【背景技術】
【０００２】
企業活動において、大量に生じる業務データの活用は不可欠になっている。そのため、大量の業務データを蓄積したデータベース（以下、「ＤＢ」）を解析処理するシステムが既に考案されている。【０００３】
この解析処理において、データベース管理システム（以下、「ＤＢＭＳ」）は、クエリを受け付け、ＤＢを格納する記憶デバイスにデータ読出し要求を発行する。【０００４】
１つのクエリの実行におけるデータ読出しの待ち時間の短縮化を図る技術として、特許文献１に開示の技術が知られている。特許文献１によれば、ＤＢＭＳは、クエリを実行するために必要な複数のデータベースオペレーション（以下、「ＤＢオペレーション」）を組合せたプラン（以下、「クエリ実行プラン」）を生成し、クエリ実行に要するデータ読出しの都度に前記ＤＢオペレーションを実行するタスクを動的に生成し、前記タスクを並行実行することでデータ読出し要求を多重化する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３４４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、ＤＢＭＳにおいて、クエリ実行に要するデータ読出しの都度にタスクを動的に生成し並行実行するに際して、タスクにおいて実行する内容を示す情報であるタスク開始情報を生成するとともに、その時点で生成可能な数のタスクを生成し、前記生成したタスク開始情報に基づいて前記生成したタスクを実行する方法が考えられている。ここで、タスク開始情報は、例えば、コンテキストとデータアドレス集合とが関連づけられたものである。コンテキストは、例えば、新たに生成するタスクにおいて実行を開始するＤＢオペレーションが、クエリ実行プランが表す１以上のＤＢオペレーションのうちのいずれであるかに関する第１の情報と、その第１の情報が示すＤＢオペレーションに要するデータのアクセス先に関する第２の情報と、結果を生成するために必要な取得済みのデータに関する第３の情報とを含む情報である。ここで、クエリ実行プランとは、クエリを実行するために必要な１以上のＤＢオペレーションを表す情報を含む情報である。データアドレス集合とは、前記データのアクセス先に関する第２の情報に基づいて、ＤＢＭＳが、生成したタスクを実行する際にアクセスするページを特定するための情報である。例えば、データアドレス集合は、ＤＢのページに記憶されているデータであり、キーに対応する索引のページを特定する１以上のエントリの集合、又はキーに対応する表のレコードが格納されたページを特定する１以上のエントリの集合である。このＤＢＭＳは、タスクの実行開始時において、タスク開始情報を参照して読み出すべきページを特定し、当該ページを読み出し、当該読み出したページに記憶されているデータを用いてＤＢオペレーションを実行する。【０００７】
ＤＢＭＳは、タスクの実行開始時においてタスク開始情報を参照する際に、当該タスク開始情報のデータアドレス集合を参照する。ＤＢＭＳは、ストレージ装置に格納されているページを参照する都度に、当該ページをＤＢＭＳが動作する計算機のメモリに読み出すが、一般にＤＢＭＳが動作する計算機のメモリの記憶容量は、ＤＢが格納されているストレージ装置の記憶容量より小さい。そのため、メモリに同時に格納できるページは、ストレージ装置に格納されているページの一部に限られる。よって、ＤＢＭＳがクエリを実行する際には、タスク開始情報が多数生成されるが、その全てのデータアドレス集合を記憶するページをメモリに格納することは困難である。【０００８】
このような問題に対して、メモリの空き容量が不足し、データアドレス集合を記憶するページをメモリに格納できない場合に、メモリに格納されているページを一時的に計算機又はストレージ装置のディスクに追い出すことでメモリの空き容量を増加させる方法がある。この方法では、ＤＢＭＳが、前記ディスクに追い出されたページを参照する際に、当該ページを再度メモリに読み込む必要がある。このように、一時的にページをディスクに追い出す方法を用いる場合には、ＤＢＭＳがタスク開始情報を参照する際に、当該タスク開始情報のデータアドレス集合を記憶するページをメモリに読込むためのディスクアクセスが発生し、タスクの処理開始が遅れ、処理時間が伸びるという問題がある。特に、Ｉ／Ｏを多重化してＤＢオペレーションを実行する場合には、Ｉ／Ｏのレイテンシが大きくなるために、この問題による影響が大きくなる。【０００９】
そこで、本発明の目的は、ＤＢＭＳがタスク開始情報を参照する際に、ディスクに格納されているページの参照回数を低減することで、タスクの実行を効率的に行い、クエリ実行時間を短縮することである。
【課題を解決するための手段】
【００１０】
ＤＢＭＳは、第１の記憶デバイスよりアクセス速度の遅い第２の記憶デバイスに存在するデータベースを管理する。【００１１】
ＤＢＭＳが、クエリ受付部と、クエリ実行プラン生成部と、クエリ実行部と、実行タスク管理部と、ＤＢバッファ管理部とを有する。例えば、ＤＢＭＳは、コンピュータプログラムであって、計算機で実行されることにより、クエリ受付部と、クエリ実行プラン生成部と、クエリ実行部と、実行タスク管理部と、ＤＢバッファ管理部とを計算機に構築する。  【００１２】
クエリ受付部は、クエリを受け付ける。クエリ実行プラン生成部は、クエリを実行するために必要な１以上のＤＢオペレーションを表す情報を含むクエリ実行プランを生成する。実行タスク管理部は、クエリを実行するためのタスクを管理する。【００１３】
クエリ実行部は、クエリの実行において、ＤＢオペレーションを実行するためのタスクを動的に生成し、動的に生成されたタスクを実行する。具体的には、例えば、クエリ実行部は、クエリの実行において、（ａ）ＤＢオペレーションを実行するためのタスクを生成すること、（ｂ）生成されたタスクを実行することで、そのタスクに対応したＤＢオペレーションに必要なデータを読み出すためにＤＢへデータ読出し要求を発行すること、（ｃ）上記（ｂ）で実行されたタスクに対応したＮ番目のＤＢオペレーションの実行結果に基づき（Ｎ＋１）番目のＤＢオペレーションを実行する場合には、その実行結果に基づくタスクを新たに生成すること（Ｎは１以上の整数）、及び、（ｄ）その新たに生成したタスクについて上記（ｂ）及び上記（ｃ）を行うこと、を行い、上記（ｂ）及び（ｄ）において、２以上の実行可能なタスクが存在する場合には、それら２以上のタスクのうちの少なくとも二つのタスクを並行して実行するようになっている。このクエリ実行部の動作は、前述した特許文献１に開示の技術に従う動作で良い。【００１４】
クエリ実行部は、クエリの実行において、タスクを新たに生成する場合に（例えば上記（ａ）又は（ｃ）の場合に）、タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成し、管理する。クエリ実行部は、タスクを実行開始する場合に、データアドレス集合を記憶するページが前記第１の記憶デバイスに読込まれているタスク開始情報を、データアドレス集合を記憶するページが前記第２の記憶デバイスにのみ格納されているタスク開始情報より優先して選択し、当該タスク開始情報が示す内容をタスクで実行開始する。【００１５】
ＤＢバッファ管理部は、クエリの実行において、クエリ実行部により管理されるタスク開始情報の実行状態により、第１の記憶デバイスと第２の記憶デバイスとの間でのページの移動を制御する。
【発明の効果】
【００１６】
ＤＢＭＳがタスク開始情報を参照する際に、ディスクに格納されているページの参照回数を低減することで、タスクの実行を効率的に行うことができ、故に、クエリ実行時間の短縮化が期待できる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る表Ａを示す。
【図２】図２は、実施例１に係る表Ｂを示す。
【図３】図３は、実施例１に係る表Ｃを示す。
【図４】図４は、実施例１に係るクエリを示す。
【図５】図５は、実施例１に係るクエリ実行プランを示す。
【図６】図６は、実施例１に係るクエリ実行時のページに対するアクセス例を示す。
【図７】図７は、実施例１に係るタスク開始情報を説明するための図である。
【図８】図８は、クエリ実行時のタスクの実行及びタスク開始情報の管理を説明するための模式図の一例である。
【図９】図９は、実施例１に係るクエリ実行時のタスクの実行及びタスク開始情報の管理を説明するための模式図の一例である。
【図１０】図１０は、実施例１に係る計算機システムの構成を示す。
【図１１】図１１は、実施例１に係る計算機システムの一部の詳細構成図である。
【図１２】図１２は、実施例１に係るＤＢバッファ管理表の構成を示す。
【図１３】図１３は、実施例１に係るクエリ処理の流れを示す。
【図１４】図１４は、実施例１に係るタスク実行処理の流れを示す。
【図１５】図１５は、実施例１に係るタスク実行内容取得処理の流れを示す。
【図１６】図１６は、実施例１に係るタスク開始情報選択処理の流れを示す。
【図１７】図１７は、実施例１に係るページ読込コンテキスト選択処理の流れを示す。
【図１８】図１８は、実施例１に係るＤＢバッファ読込判定処理の流れを示す。
【図１９】図１９は、実施例１に係るページ読込処理の流れを示す。
【図２０】図２０は、実施例１に係るＤＢバッファ追い出し処理の流れを示す。
【図２１】図２１は、実施例１に係る追い出し対象ＤＢバッファ面選択処理の流れを示す。
【図２２】図２２は、実施例１に係るＤＢバッファ面解放判定処理の流れを示す。
【図２３】図２３は、実施例２に係る計算機システムの一部の詳細構成図である。
【図２４】図２４は、実施例２に係るタスク開始情報格納場所管理表の構成を示す。
【図２５】図２５は、実施例３に係る計算機システムの構成を示す。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら、幾つかの実施例を説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明では、データベースを「ＤＢ」、データベース管理システムを「ＤＢＭＳ」、ＤＢＭＳを実行するサーバを「ＤＢサーバ」と言う。ＤＢＭＳに対するクエリの発行元は、ＤＢＭＳの外部のコンピュータプログラム（例えばアプリケーションプログラム）で良い。外部のコンピュータプログラムは、ＤＢサーバ内で実行されるプログラムでも良いし、ＤＢサーバに接続された装置（例えばクライアント計算機）で実行されるプログラムでも良い。
【実施例１】
【００１９】
まず、本実施例の概要を説明する。【００２０】
ＤＢサーバは、ＤＢＭＳを実行する。ＤＢＭＳは、クエリを受け付け、受け付けたクエリを実行して、その実行により生成された結果をクエリの発行元に返す。クエリの結果を生成するまでには、ＤＢＭＳは、１つ以上のＤＢオペレーションを実行する。ＤＢＭＳは、それらＤＢオペレーションのうちの少なくとも１つのＤＢオペレーションの実行において、ＤＢが格納された記憶デバイスに対して読出し要求の発行を要する場合がある。【００２１】
例えば、ＤＢＭＳは、図１乃至図３に示す表Ａ、表Ｂ、及び表Ｃと、表Ａ用の索引Ａ、表Ｂ用の索引Ｂ、及び表Ｃ用の索引Ｃとを含んだＤＢを、記憶デバイス（例えば、ＤＢサーバと通信できるように接続された外部ストレージ装置）に格納しているとする。表は、１つ以上のレコードの集合であり、レコードは、１つ以上のカラムから構成される。索引は、表の中の１つ以上のカラムを対象に作成されるデータ構造であり、当該索引が対象とするカラムを含む選択条件による表へのアクセスを高速化する。例えば、索引は、対象とするカラムの値毎にその値を含む表のレコードを特定する情報（レコードＩＤ）を保持するデータ構造であり、Ｂ木構造等が用いられる。【００２２】
また、例えば、ＤＢＭＳが受け付けたクエリは、図４に示すクエリであるとする。当該クエリは、カラムＡ＿ｃｏｕｎｔｒｙの値が「ｃｏｕｎｔｒｙ５」であり且つカラムＡ＿ｆａｃｔｏｒｙ＿ｓｉｚｅの値が５０より大きい表Ａのレコードと、カラムＢ＿ｆａｃｔｏｒｙ＿ｉｄの値が表ＡのレコードにおけるカラムＡ＿ｆａｃｔｏｒｙ＿ｉｄの値と一致し且つカラムＢ＿ｐｒｏｄｕｃｔ＿ｐｒｉｃｅの値が５００より大きい表Ｂのレコードと、カラムＣ＿ｐｒｏｄｕｃｔ＿ｉｄの値が表ＢのレコードにおけるカラムＢ＿ｐｒｏｄｕｃｔ＿ｉｄの値と一致する表Ｃのレコードとを関連づける。そして、それらをカラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅ及びカラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値でグループ化し、それぞれのグループについてカラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅの値と、Ｂ＿Ｐｒｏｄｕｃｔ＿ｎａｍｅの値と、カラムＣ＿ｃｏｕｎｔの値の合計値とを抽出するクエリである。【００２３】
ＤＢＭＳは、このようなクエリを実行するために、図５に示すようなクエリ実行プランを生成する。クエリ実行プランは、例えば、データ読出しを伴う１つ以上のＤＢオペレーションで構成され、ＤＢオペレーションの実行順序には木構造の順序関係が存在する。ＤＢＭＳは、クエリ実行プランに基づいて、索引Ａを用いて、表Ａより、カラムＡ＿ｃｏｕｎｔｒｙの値がクエリの指定値（図４のクエリでは、ｃｏｕｎｔｒｙ５）であるレコードを読出し、当該レコードのうちカラムＡ＿ｆａｃｔｏｒｙ＿ｓｉｚｅの値がクエリの指定値（図４のクエリでは、５０）より大きいレコードにおけるカラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅの値とカラムＡ＿ｆａｃｔｏｒｙ＿ｉｄの値とを抽出する。更に、索引Ｂを用いて、表Ｂより、カラムＢ＿ｆａｃｔｏｒｙ＿ｉｄの値が前記抽出したＡ＿ｆａｃｔｏｒｙ＿ｉｄの値と一致するレコードを読出し、当該レコードのうちカラムＢ＿ｐｒｏｄｕｃｔ＿ｐｒｉｃｅの値がクエリの指定値（図４のクエリでは、５００）より大きいレコードにおけるカラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値とカラムＢ＿ｐｒｏｄｕｃｔ＿ｉｄの値とを抽出する。更に、索引Ｃを用いて、表Ｃより、カラムＣ＿ｐｒｏｄｕｃｔ＿ｉｄの値が前記抽出したカラムＢ＿ｐｒｏｄｕｃｔ＿ｉｄの値と一致するレコードを読出し、当該レコードについて、カラムＣ＿ｃｏｕｎｔの値を抽出し、前記抽出したカラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅ及びカラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値に基づいてグループ化し、それぞれのグループにおけるカラムＣ＿ｃｏｕｎｔの値の合計値を算出する。ＤＢＭＳは、クエリ実行の結果として、前記グループ毎に、カラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅの値、カラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値、及び算出したカラムＣ＿ｃｏｕｎｔの合計値を、クエリ実行結果として生成する。【００２４】
例えば、ＤＢＭＳは、下記の処理、
（Ｓ１）索引Ａを用いて、カラムＡ＿ｃｏｕｎｔｒｙの値がクエリの指定値である表Ａのレコードに対応したレコードＩＤの集合を検索する、
（Ｓ２）Ｓ１で見つかったレコードＩＤ集合を用いて、表Ａの該当するレコードを含むデータをフェッチし、カラムＡ＿ｆａｃｔｏｒｙ＿ｓｉｚｅの値がクエリの指定値である５０より大きいレコードの、カラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅの値とカラムＡ＿ｆａｃｔｏｒｙ＿ｉｄの値とを抽出する、
（Ｓ３）索引Ｂを用いて、カラムＢ＿ｆａｃｔｏｒｙ＿ｉｄの値がＳ２で抽出したカラムＡ＿ｆａｃｔｏｒｙ＿ｉｄの値と一致する表ＢのレコードのレコードＩＤ集合を検索する、
（Ｓ４）Ｓ３で見つかったレコードＩＤ集合を用いて、表Ｂの該当するレコードを含むデータをフェッチし、カラムＢ＿ｐｒｏｄｕｃｔ＿ｐｒｉｃｅの値がクエリの指定値である５００より大きいレコードの、カラムＢ＿ｐｒｏｄｕｃｔ＿ｉｄとカラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値とを抽出する、
（Ｓ５）索引Ｃを用いて、カラムＣ＿ｐｒｏｄｕｃｔ＿ｉｄの値がＳ４で抽出したカラムＢ＿ｐｒｏｄｕｃｔ＿ｉｄの値と一致する表ＣのレコードのレコードＩＤ集合を検索する、
（Ｓ６）Ｓ５で見つかったレコードＩＤ集合を用いて、表Ｃの該当するレコードを含むデータをフェッチし、該当するレコードのカラムＣ＿ｃｏｕｎｔの値を抽出する、
（Ｓ７）カラムＣ＿ｃｏｕｎｔの値を、抽出したカラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅの値及びカラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値でグループ化して、各グループにおけるカラムＣ＿ｃｏｕｎｔの値の合計値を算出する、
（Ｓ８）クエリ実行結果として、抽出したカラムＡ＿ｆａｃｔｏｒｙ＿ｎａｍｅの値、カラムＢ＿ｐｒｏｄｕｃｔ＿ｎａｍｅの値、及びＳ７で算出したカラムＣ＿ｃｏｕｎｔの値の合計値を生成し、クエリ発行元に返す、
を行う。【００２５】
図６は、実施例１に係るクエリ実行時のページに対するアクセス例を示す。【００２６】
図６は、図５に示すクエリ実行プランに従ってＤＢＭＳがクエリを実行する際の、ＤＢの索引及び表のページに対するアクセス例を示す。ここで、ページとは、ＤＢＭＳにおけるデータ管理の単位であり、ＤＢＭＳによるＤＢからのデータ読込み及びＤＢへのデータ書込みは、ページ単位で実施される。ページは、例えば、索引における下位のページを特定する情報（ページＩＤ）を含む１以上のエントリ、又は対応する表のレコードを特定する情報（レコードＩＤ）を含む１以上のエントリを格納する。なお、レコードを特定する情報は、当該レコードが格納されているページを特定する情報を含む。【００２７】
図５に示すクエリ実行プランによるクエリの実行時には、まず、ＤＢＭＳは、ページａ１１にアクセスする。ＤＢＭＳは、ページａ１１のエントリに基づいて、その下位のページａ２１乃至ａ２５にアクセスする。【００２８】
ＤＢＭＳは、ページａ２１のエントリに基づいて、表ＡのページＡ１にアクセスし、ページａ２２のエントリに基づいて、表ＡのページＡ２及びページＡ３にアクセスし、ページａ２３のエントリに基づいて、表ＡのページＡ４及びページＡ５にアクセスし、ページａ２４のエントリに基づいて、表ＡのページＡ６にアクセスし、ページａ２５のエントリに基づいて、表ＡのページＡ７にアクセスする。【００２９】
また、ＤＢＭＳは、ページＡ１に格納されたレコードに基づいて、索引Ｂのページｂ１１にアクセスし、ページＡ３に格納されたレコードに基づいて、索引Ｂのページｂ１１にアクセスし、ページＡ４に格納されたレコードに基づいて、索引Ｂのページｂ１１にアクセスし、ページＡ５に格納されたレコードに基づいて、索引Ｂのページｂ１１にアクセスする。なお、ページＡ２のように、索引Ｂのページへのアクセスに利用されていないものは、クエリで指定された条件に合致するレコードが格納されていないことを示している。【００３０】
また、ＤＢＭＳは、ページＡ１に格納されたレコードと索引Ｂのページｂ１１のエントリに基づいてページｂ２１にアクセスし、ページＡ３に格納されたレコードとページｂ１１のエントリに基づいてページｂ２２にアクセスし、ページＡ４に格納されたレコードとページｂ１１のエントリに基づいてページｂ２３にアクセスし、ページＡ５に格納されたレコードとページｂ１１のエントリに基づいてページｂ２４にアクセスする。【００３１】
また、ＤＢＭＳは、ページＡ４に格納されたレコードと索引Ｂのページｂ２３のエントリに基づいて、表ＢのページＢ１乃至Ｂ３にアクセスする。ＤＢＭＳは、表ＢのページＢ１に格納されたレコードに基づいて、索引Ｃのページｃ１１にアクセスする。また、ＤＢＭＳは、ページＢ１に格納されたレコードと索引Ｃのページｃ１１のエントリに基づいてページｃ２１にアクセスし、ページＢ１に格納されたレコードとページｃ２１のエントリに基づいてページｃ３１にアクセスする。また、ＤＢＭＳは、ページＢ１に格納されたレコードと索引Ｃのページｃ３１のエントリに基づいて、表ＣのページＣ１にアクセスする。【００３２】
図７は、実施例１に係るタスク開始情報を説明するための図である。【００３３】
ＤＢＭＳは、タスクの実行を開始する際に、タスク開始情報ＴＳを参照して、実行するＤＢオペレーションでアクセスするページを特定する。【００３４】
タスク開始情報ＴＳは、タスクにおいて実行を行う内容を示す情報である。例えば、タスク開始情報は、コンテキストＣＴＸとデータアドレス集合ＡＧとが関連づけられたものである。コンテキストＣＴＸは、例えば、新たに生成するタスクにおいて実行を開始するＤＢオペレーションが、クエリ実行プランが表す１以上のＤＢオペレーションのうちのいずれであるかに関する第１の情報と、その第１の情報が示すＤＢオペレーションに要するデータのアクセス先に関する第２の情報と、結果を生成するために必要な取得済みのデータに関する第３の情報とを含む情報である。データアドレス集合ＡＧとは、前記データのアクセス先に関する第２の情報に基づいて、ＤＢＭＳが、生成したタスクを実行する際にアクセスするページを特定するための情報である。例えば、データアドレス集合ＡＧは、ＤＢ４５１のページに記憶されているデータであり、キーに対応する索引のページを特定する１以上のエントリの集合、又はキーに対応する表のレコードが格納されたページを特定する１以上のエントリの集合である。【００３５】
外部ストレージ装置４０２の記憶デバイス群４４３のページは、アクセスされる都度に、ＤＢＭＳ４１２によって記憶デバイス群４４３からＤＢバッファ４３６に読み出される。ＤＢバッファ４３６の記憶容量の大きさはメモリ４１６の記憶容量の大きさより小さく、一般にメモリ４１６の記憶容量の大きさは記憶デバイス群４４３の記憶容量の大きさより小さい。そのため、ＤＢバッファ４３６に同時に格納することのできるページは、記憶デバイス群４４３に格納できるページの一部である。同図においては、例えば、タスク開始情報１のデータアドレス集合ＡＧが記憶されているページと、タスク開始情報３のデータアドレス集合ＡＧが記憶されているページとは、記憶デバイス群４４３からＤＢバッファ４３６に読み出されて格納されており、タスク開始情報２のデータアドレス集合ＡＧが記憶されているページは、ＤＢバッファ４３６に格納されておらず、記憶デバイス群４４３にのみ格納されている。【００３６】
コンテキストＣＴＸは、データアドレス集合ＡＧが記憶されているページを特定する情報（例えば、ページＩＤ）、データアドレス集合ＡＧのエントリのうち次に実行開始されるタスクによってアクセスするべきエントリを示す情報、さらにタスク実行によりアクセスするべきエントリの残数（タスク生成可能数）を格納する。コンテキストＣＴＸは、クエリ実行部４２３のコンテキスト管理部４３２により管理される。【００３７】
図８は、ＤＢＭＳによる、クエリ実行時のタスクの実行及びタスク開始情報の管理を説明するための模式図の一例である。図８は、図６に示すアクセス例におけるタスクの実行及びタスク開始情報の管理を示す。なお、図８の表記は、次のルールに従う。
（＊）横軸は、時刻を表す。
（＊）図上部の横に長い五角形は、１つのタスクによる一連のＤＢオペレーションを意味する。五角形の左端はタスクによりＤＢオペレーションを開始する時刻を表し、五角形の右端は当該タスクによるＤＢオペレーションを終了する時刻を表す。
（＊）図上部の五角形の内部の値は、タスクがＤＢオペレーションの実行に伴いアクセスする索引のページを示す情報（例えば、ページＩＤ）、又は、表のレコードを示す情報（例えば、レコードＩＤ）を表す。
（＊）同時に実行可能なタスク数は、「３」とする。
（＊）図中のひし形は、タスク開始情報ＴＳのデータアドレス集合ＡＧを表す。ひし形の中の数字は、当該タスク開始情報ＴＳのコンテキストＣＴＸに含まれるタスク生成可能数を表す。なお、図上部の五角形内のひし形の位置は、当該データアドレス集合ＡＧを含むタスク開始情報ＴＳが生成された時点を示す。
（＊）図中部のＤＢバッファ４３６内におけるひし形に続く太い実線は、データアドレス集合ＡＧを記憶するページがＤＢバッファ４３６に格納されていることを示し、太い破線は、データアドレス集合ＡＧを記憶するページがＤＢバッファ４３６に格納されていないことを示す。
（＊）ＤＢバッファ４３６に同時に格納可能なページ数の上限数は、「２」とする。
（＊）ＤＢバッファ４３６から記憶デバイス群４４３への破線矢印は、ＤＢバッファ４３６から記憶デバイス群４４３へのページの追い出しを示し、記憶デバイス群４４３からＤＢバッファ４３６への破線矢印は、記憶デバイス群４４３からＤＢバッファ４３６へのページの読込みを示す。なお、追い出し対象のページが、ダーティページ（記憶デバイス群４４３に格納されているページのデータと異なるデータが格納されているページ）でない場合には、ＤＢＭＳは、そのページを、記憶デバイス群４４３に移動させずに、ＤＢバッファから削除するだけでも良い。
（＊）記憶デバイス群４４３のアクセス速度は、ＤＢバッファ４３６を保持するメモリ４１６のアクセス速度よりも遅い。なお、アクセス速度が速い／遅いとは、単位時間当たりに入出力されるデータの量が多い／少ないであっても良いし、アクセス元（ＤＢＭＳ）からがアクセス要求が発行されてからそのアクセス要求に対するレスポンスがアクセス元（ＤＢＭＳ）へ戻るまでのレスポンスタイムの短い／遅いで良い。従って、例えば、メモリ４１６が、不揮発性半導体メモリであって、記憶デバイス群４４３を構成する各記憶デバイスも、同じアクセス速度の不揮発性半導体メモリであったとしても、記憶デバイス群４４３が、外部のストレージ装置に存在する場合には、ネットワーク転送速度が影響するので、記憶デバイス群４４３のアクセス速度は、メモリ４１６のアクセス速度よりも遅い。【００３８】
（ｔ０）
ＤＢＭＳは、タスク１０Ａを生成し、タスク１０Ａの実行により、記憶デバイス群４４３上の索引Ａのページａ１１にアクセスする。なお、ページにアクセスする際は、アクセス対象ページがＤＢバッファ４３６に格納されている場合は、当該ＤＢバッファ４３６に格納されているページを参照し、アクセス対象ページがＤＢバッファ４３６に格納されていない場合は、ページを記憶デバイス群４４３からＤＢバッファ４３６へ読込み、ＤＢバッファ４３６に格納されたページを参照する。【００３９】
（ｔ１）
ＤＢＭＳは、タスク１０Ａの実行により、クエリの指定値とページａ１１のエントリに基づいて、アクセスすべき下位ページがａ２１〜ａ２５であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページａ２１〜ａ２５のアドレスが格納されているページａ１１をデータアドレス集合１１Ａとして前記生成したコンテキストと関連付ける。ＤＢバッファに同時に格納可能なページ数の上限は２であり、この時点でアクセスされるページ数は１であるので、データアドレス集合１１ＡはＤＢバッファ上にある。また、前記コンテキストについて、次にアクセスすべきエントリをａ２２に設定し、タスク生成可能数を４に設定する。これにより、データアドレス集合１１Ａとそのデータアドレス集合１１Ａに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。
続いて、ＤＢＭＳは、タスク１０Ａの実行により、ページａ２１にアクセスする。
また、実行可能な同時タスク数は「３」であり、実行中タスクの数は「１」である（タスク１０Ａのみが実行中である）ため、生成可能なタスクの数は、「３」から「１」を減算した「２」であるので、ＤＢＭＳは、２つのタスク１０Ｂ及び１０Ｃを生成する。
また、ＤＢＭＳは、タスク１０Ｂの実行により、タスク開始情報を参照してタスクを１つ実行開始する。すなわち、データアドレス集合１１Ａと関連づけられたコンテキストを参照して次にアクセスすべきエントリがａ２２であることを特定し、前記次にアクセスすべきエントリを次のページであるａ２３に変更する。そして、タスク生成可能数を１減算して３に変更し、データアドレス集合１１Ａを参照して前記ページａ２２のアドレスを取得し、取得したアドレスに基づいてページａ２２にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、タスク開始情報を参照してタスクを１つ実行開始する。すなわち、データアドレス集合１１Ａと関連づけられたコンテキストを参照して次にアクセスすべきエントリがａ２３であることを特定し、前記次にアクセスすべきエントリを次のページであるａ２４に変更する。そして、タスク生成可能数を１減算して２に変更し、データアドレス集合１１Ａを参照して前記ページａ２３のアドレスを取得し、前記取得したアドレスに基づいてページａ２３にアクセスする。【００４０】
（ｔ２）
ＤＢＭＳは、タスク１０Ａの実行により、クエリの指定値とページａ２１のエントリに基づいて、アクセスすべきレコードがＡ１であることを特定し、ページａ２１を参照して前記レコードＡ１のアドレスを取得し、前記取得したアドレスに基づいてページＡ１にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、クエリの指定値とページａ２２のエントリに基づいて、アクセスすべきレコードＡ２とＡ３とを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページＡ２とＡ３のアドレスが格納されているページａ２２をデータアドレス集合１１Ｂとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをＡ３に設定し、タスク生成可能数を１に設定する。これにより、データアドレス集合１１Ｂとそのデータアドレス集合１１Ｂに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、ＤＢＭＳは、タスク１０Ｂの実行により、ページＡ２にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、クエリの指定値とページａ２３のエントリに基づいて、アクセスすべきレコードＡ４とＡ５とを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページＡ４とＡ５のアドレスが格納されているページａ２３をデータアドレス集合１１Ｃとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをＡ５に設定し、タスク生成可能数を１に設定する。これにより、データアドレス集合１１Ｃとそのデータアドレス集合１１Ｃに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、ＤＢＭＳは、タスク１０Ｃの実行により、ページＡ４にアクセスする。
ＤＢＭＳは、データアドレス集合１１Ｂを記憶するページと、データアドレス集合１１Ｃを記憶するページとをＤＢバッファ４３６に格納することとなるが、ＤＢバッファ４３６に同時に格納可能なページの数は、「２」である。このため、ＤＢＭＳは、データアドレス集合１１Ｂ及び１１Ｃを記憶するページのうちの少なくとも１つをＤＢバッファ４３６に格納する前に、ＤＢバッファ４３６上の最も古いデータアドレス集合（ＤＢバッファ４３６に格納されているデータアドレス集合のうち最初にＤＢバッファ４３６に格納されたデータアドレス集合）１１Ａを記憶するページを、記憶デバイス群４４３に追い出す。なお、ｔ１においてアクセスされたページａ２１もバッファに格納されるため上記挙動に影響を与え得る。図８では本発明の要点を簡潔に説明するため、ページａ２１は一時的にＤＢバッファに格納され、Ａ１を特定した後はすぐに記憶デバイス群４４３に追い出されると仮定して説明を行うが、後述の通り、本発明はこの仮定に限定されるものではない。【００４１】
（ｔ３）
ＤＢＭＳは、タスク１０Ａの実行により、レコードＡ１がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、レコードＡ２がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、最初に生成されたタスク開始情報（データアドレス集合１１Ａとそれに関連づけられたコンテキストから成るタスク開始情報）を参照する。すなわち、データアドレス集合１１Ａと関連づけられたコンテキストを参照して次にアクセスすべきエントリがａ２４であることを特定し、前記次にアクセスすべきエントリを次のページであるａ２５に変更し、タスク生成可能数を１減算して１に変更し、データアドレス集合１１Ａを参照して前記ページａ２４のアドレスを取得しようと試みる。しかし、ｔ２においてデータアドレス集合１１Ａは、記憶デバイス群４４３に追い出されており、ＤＢバッファ４３６上に存在しないため、データアドレス集合１１Ａを記憶するページを記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行う。このため、タスク１０Ｂは、データアドレス集合１１Ａを記憶するページがメモリ４１６に読込まれるのを待つ。ここで、ＤＢＭＳは、データアドレス集合１１Ａを記憶するページをＤＢバッファ４３６に読込むと、ＤＢバッファ４３６に格納されるページの数が、格納可能な数「３」を超えてしまうので、ＤＢバッファ４３６の最も古いデータアドレス集合１１Ｂを記憶するページを、記憶デバイス群４４３に追い出す。
また、ＤＢＭＳは、タスク１０Ｃの実行により、レコードＡ４がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。【００４２】
（ｔ４）
ＤＢＭＳは、タスク１０Ａの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２１であることを特定し、ページｂ１１を参照してページｂ２１のアドレスを取得し、前記取得したアドレスに基づいてページｂ２１にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、ｔ３で記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行ったデータアドレス集合１１Ａを参照してページａ２４のアドレスを取得し、前記取得したアドレスに基づいてページａ２４にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２３であることを特定し、ページｂ１１を参照してページｂ２３のアドレスを取得し、前記取得したアドレスに基づいてページｂ２３にアクセスする。【００４３】
（ｔ５）
ＤＢＭＳは、タスク１０Ａの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ２１のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、最初に生成されたタスク開始情報（データアドレス集合１１Ａとそれに関連づけられたコンテキストから成るタスク開始情報）を参照する。すなわち、データアドレス集合１１Ａと関連づけられたコンテキストを参照して次にアクセスすべきエントリがａ２５であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１１Ａを参照して前記ページａ２５のアドレスを取得し、当該タスク開始情報を消去し、前記取得したアドレスに基づいてページａ２５にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、クエリの指定値とページａ２４のエントリに基づいて、アクセスすべきレコードがＡ６であることを特定し、ページａ２４を参照して前記レコードＡ６のアドレスを取得し、前記取得したアドレスに基づいてページＡ６にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ２３のエントリに基づいて、アクセスすべきレコードがＢ１〜Ｂ３であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページＢ１〜Ｂ３のアドレスが格納されているページｂ２３をデータアドレス集合１１Ｄとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをＢ２に設定し、タスク生成可能数を２に設定する。これにより、データアドレス集合１１Ｄとそのデータアドレス集合１１Ｄに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、ＤＢＭＳは、タスク１０Ｃの実行により、ページＢ１にアクセスする。
ここで、ＤＢＭＳは、データアドレス集合１１Ｄを記憶するページをＤＢバッファ４３６に格納することとなるが、ＤＢバッファ４３６には、その時点には、データアドレス集合１１Ａ及び１１Ｃを記憶するページが格納されており、ＤＢバッファ４３６に格納可能なページの数は、「２」である。このため、ＤＢＭＳは、データアドレス集合１１Ｄを記憶するページをＤＢバッファ４３６に格納する前に、ＤＢバッファ４３６上の参照されていない最も古いデータアドレス集合１１Ｃを記憶するページを、記憶デバイス群４４３に追い出す。【００４４】
（ｔ６）
ＤＢＭＳは、タスク１０Ａの実行により、クエリの指定値とページａ２５のエントリに基づいて、アクセスすべきレコードがＡ７であることを特定し、ページａ２５を参照して前記レコードＡ７のアドレスを取得し、前記取得したアドレスに基づいてページＡ７にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、レコードＡ６がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報の中で最初に生成されたタスク開始情報（データアドレス集合１１Ｂとそれに関連づけられたコンテキストから成るタスク開始情報）を参照する。すなわち、データアドレス集合１１Ｂと関連づけられたコンテキストを参照して次にアクセスすべきエントリがＡ３であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１１Ｂを参照して前記ページＡ３のアドレスを取得しようと試みる。しかし、ｔ３においてデータアドレス集合１１Ｂを記憶するページは、記憶デバイス群４４３に追い出されており、ＤＢバッファ４３６上に存在しないため、データアドレス集合１１Ｂを記憶するページを記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行う。このため、タスク１０Ｂは、データアドレス集合１１Ｂを記憶するページがＤＢバッファ４３６に読込まれるのを待つ。
また、ＤＢＭＳは、タスク１０Ｃの実行により、レコードＢ１がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｃの検索条件を特定し、索引Ｃのページｃ１１にアクセスする。【００４５】
（ｔ７）
ＤＢＭＳは、タスク１０Ａの実行により、レコードＡ７がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報の中で最初に生成されたタスク開始情報（データアドレス集合１１Ｃとそれに関連づけられたコンテキストから成るタスク開始情報）を参照する。すなわち、データアドレス集合１１Ｃと関連づけられたコンテキストを参照して次にアクセスすべきエントリがＡ５であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１１Ｃを参照して前記ページＡ５のアドレスを取得しようと試みる。しかし、ｔ５においてデータアドレス集合１１Ｃを記憶するページは、記憶デバイス群４４３に追い出されており、ＤＢバッファ４３６上に存在しないため、データアドレス集合１１Ｃを記憶するページを記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行う。このため、タスク１０Ａは、データアドレス集合１１Ｃを記憶するページがＤＢバッファ４３６に読込まれるのを待つ。ここで、ＤＢＭＳは、データアドレス集合１１Ｃを記憶するページをＤＢバッファ４３６に読込むこととなるが、ＤＢバッファ４３６には、その時点には、データアドレス集合１１Ｂ及び１１Ｄを記憶するページが格納されており、ＤＢバッファ４３６に格納可能なページの数は、「２」である。このため、ＤＢＭＳは、ＤＢバッファ４３６上の参照されていない最も古いデータアドレス集合１１Ｄを記憶するページを、記憶デバイス群４４３に追い出す。
また、ＤＢＭＳは、タスク１０Ｂの実行により、ｔ６で記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行ったデータアドレス集合１１Ｂを参照してページＡ３のアドレスを取得し、タスク生成可能数が０になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページＡ３にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、ｔ６で特定した索引Ｃの検索条件とページｃ１１のエントリに基づいて、アクセスすべき下位ページがｃ２１であることを特定し、ページｃ１１を参照してページｃ２１のアドレスを取得し、前記取得したアドレスに基づいてページｃ２１にアクセスする。【００４６】
（ｔ８）
ＤＢＭＳは、タスク１０Ａの実行により、ｔ７で記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行ったデータアドレス集合１１Ｃを参照してページＡ５のアドレスを取得し、タスク生成可能数が０になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページＡ５にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、レコードＡ３がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、ｔ６で特定した索引Ｃの検索条件とページｃ２１のエントリに基づいて、アクセスすべき下位ページがｃ３１であることを特定し、ページｃ２１を参照してページｃ３１のアドレスを取得し、前記取得したアドレスに基づいてページｃ３１にアクセスする。【００４７】
（ｔ９）
ＤＢＭＳは、タスク１０Ａの実行により、レコードＡ５がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、ｔ８で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２２であることを特定し、ページｂ１１を参照してページｂ２２のアドレスを取得し、前記取得したアドレスに基づいてページｂ２２にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、ｔ６で特定した索引Ｃの検索条件とページｃ３１のエントリに基づいて、アクセスすべきレコードがＣ１であることを特定し、ページｃ３１を参照して前記レコードＣ１のアドレスを取得し、前記取得したアドレスに基づいてページＣ１にアクセスする。【００４８】
（ｔ１０）
ＤＢＭＳは、タスク１０Ａの実行により、ｔ９で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２４であることを特定し、ページｂ１１を参照してページｂ２４のアドレスを取得し、前記取得したアドレスに基づいてページｂ２４にアクセスする。
また、ＤＢＭＳは、タスク１０Ｂの実行により、ｔ８で特定した索引Ｂの検索条件とページｂ２２のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報の中で最初に生成されたタスク開始情報（データアドレス集合１１Ｄとそれに関連づけられたコンテキストから成るタスク開始情報）を参照する。すなわち、データアドレス集合１１Ｄと関連づけられたコンテキストを参照して次にアクセスすべきエントリがＢ２であることを特定し、前記次にアクセスすべきエントリを次のページであるＢ３に変更し、タスク生成可能数を１減算して１に変更し、データアドレス集合１１Ｄを参照して前記ページＢ２のアドレスを取得しようと試みる。しかし、ｔ７においてデータアドレス集合１１Ｄを記憶するページは、記憶デバイス群４４３に追い出されており、ＤＢバッファ４３６上に存在しないため、データアドレス集合１１Ｄを記憶するページを記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行う。このため、タスク１０Ｂは、データアドレス集合１１Ｄを記憶するページがＤＢバッファ４３６に読込まれるのを待つ。
また、ＤＢＭＳは、タスク１０Ｃの実行により、レコードＣ１がクエリで指定された条件を満たすことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報の中で最初に生成されたタスク開始情報（データアドレス集合１１Ｄとそれに関連づけられたコンテキストから成るタスク開始情報）を参照する。すなわち、データアドレス集合１１Ｄと関連づけられたコンテキストを参照して次にアクセスすべきエントリがＢ３であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１１Ｄを参照して前記ページＢ３のアドレスを取得しようと試みる。しかし、ｔ７においてデータアドレス集合１１Ｄを記憶するページは、記憶デバイス群４４３に追い出されており、ＤＢバッファ４３６上に存在しないため、データアドレス集合１１Ｄを記憶するページを記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行う。このため、タスク１０Ｃは、データアドレス集合１１Ｄを記憶するページがＤＢバッファ４３６に読込まれるのを待つ。【００４９】
（ｔ１１）
ＤＢＭＳは、タスク１０Ａの実行により、ｔ９で特定した索引Ｂの検索条件とページｂ２４のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が１以上のタスク開始情報がないため、タスク１０Ａを終了する。
また、ＤＢＭＳは、タスク１０Ｂの実行により、ｔ１０で記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行ったデータアドレス集合１１Ｄを参照してページＢ２のアドレスを取得し、前記取得したアドレスに基づいてページＢ２にアクセスする。
また、ＤＢＭＳは、タスク１０Ｃの実行により、ｔ１０で記憶デバイス群４４３からＤＢバッファ４３６に読込む処理を行ったデータアドレス集合１１Ｄを参照してページＢ３のアドレスを取得し、タスク生成可能数が０になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページＢ３にアクセスする。【００５０】
（ｔ１２）
ＤＢＭＳは、タスク１０Ｂの実行により、レコードＢ２がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が１以上のタスク開始情報がないため、タスク１０Ｂを終了する。
また、ＤＢＭＳは、タスク１０Ｃの実行により、レコードＢ３がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が１以上のタスク開始情報がないため、タスク１０Ｃを終了する。【００５１】
以上の処理により、ＤＢへのアクセス処理が終了し、クエリ処理が終了する。【００５２】
実施例１では、図８に示すクエリ処理よりも迅速にクエリ処理を実行できるようにするために、次に示すタスク実行及びタスク開始情報の管理を行う。【００５３】
図９は、実施例１に係るクエリ実行時のタスクの実行及びタスク開始情報の管理を説明するための模式図の一例である。表記のルールは、図８と同様である。【００５４】
（ｔ０）〜（ｔ２）では、以下に示す点を除いて、それぞれ、図８の（ｔ０）〜（ｔ２）と同じ処理が行われる。
（ｔ２）において、ＤＢＭＳは、ＤＢバッファ４３６から記憶デバイス群４４３にデータアドレス集合を記憶するページ追い出すが、ここで、ＤＢバッファ４３６にデータアドレス集合を記憶するページが複数存在する場合には、ＤＢＭＳは、単純に最も古いデータアドレス集合（ＤＢバッファ４３６に格納されているデータアドレス集合のうち最初にＤＢバッファ４３６に格納されたデータアドレス集合）を記憶するページを追い出し対象とするのではなく、タスク開始情報の生成スピード（単位時間当たりに生成するタスク開始情報の数）と、タスク開始情報の消費スピード（単位時間当たりに消費するタスク開始情報の数）との相対的な関係、および各タスク開始情報のコンテキストに保持されているタスク生成可能数に基づいて、追い出し対象とするデータアドレス集合を記憶するページを決定する。具体的には、ＤＢＭＳは、タスク開始情報の生成スピードと、タスク開始情報の消費スピードとの比較結果に基づいて、追い出し対象とするデータアドレス集合を記憶するページを決定する。互いに比較される生成スピードと消費スピードは、同じ時間帯での生成スピードと消費スピードで良い。【００５５】
具体的には、ＤＢＭＳは、タスク開始情報の生成スピードが、タスク開始情報の消費スピードよりも大きい場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象とし、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象としない。なお、前記閾値は、指定された固定の値でも良く、ＤＢＭＳによって動的に更新される可変の値でもよい。可変の値としては、例えば、全コンテキストのタスク生成可能数の平均値を計算し、ＤＢＭＳが任意のタイミングで当該計算した値に更新してもよい。このように、ＤＢＭＳは、タスク開始情報の総数が増加している傾向がある場合には、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先してＤＢバッファ４３６から記憶デバイス群４４３に追い出す。これにより、タスク開始情報を効率よく消費することが期待できる。【００５６】
また、ＤＢＭＳは、タスク開始情報の生成スピードが、タスク開始情報の消費スピード以下の場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象とせず、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象とする。このように、ＤＢＭＳは、タスク開始情報の総数が減少している傾向がある場合には、タスク生成可能数が少ないコンテキストと関連づけられているデータアドレス集合を記憶するページを優先して記憶デバイス群４４３に追い出す対象として決定し、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページをＤＢバッファ４３６に優先して残す。これにより、多くのタスクを効率よく実行できることが期待できる。【００５７】
（ｔ３）
ＤＢＭＳは、タスク１２Ａの実行により、レコードＡ１がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。
また、ＤＢＭＳは、タスク１２Ｂの実行により、レコードＡ２がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク開始情報を参照する。ここで、実施例１においては、ＤＢＭＳは、データアドレス集合を記憶するページがＤＢバッファ４３６に存在するタスク開始情報を優先して参照する。なお、ＤＢバッファ４３６にデータアドレス集合を記憶するページが複数ある場合には、ＤＢＭＳは、タスク開始情報のコンテキストに保持されているタスク生成可能数が少ないタスク開始情報を優先して参照しても良い。ＤＢＭＳは、タスク１２Ｂの実行により、ＤＢバッファ４３６に存在するデータアドレス集合１３Ｂと関連づけられたコンテキストを参照して次にアクセスすべきエントリがＡ３であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１３Ｂを参照して前記ページＡ３のアドレスを取得し、タスク生成可能数が０になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページＡ３にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、レコードＡ４がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。【００５８】
（ｔ４）
ＤＢＭＳは、タスク１２Ａの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２１であることを特定し、ページｂ１１を参照してページｂ２１のアドレスを取得し、前記取得したアドレスに基づいてページｂ２１にアクセスする。
また、ＤＢＭＳは、タスク１２Ｂの実行により、レコードＡ３がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２３であることを特定し、ページｂ１１を参照してページｂ２３のアドレスを取得し、前記取得したアドレスに基づいてページｂ２３にアクセスする。【００５９】
（ｔ５）
ＤＢＭＳは、タスク１２Ａの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ２１のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、ＤＢバッファ４３６に存在するデータアドレス集合１３Ｃと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがＡ５であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１３Ｃを参照して前記ページＡ５のアドレスを取得し、タスク生成可能数が０になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページＡ５にアクセスする。
また、ＤＢＭＳは、タスク１２Ｂの実行により、ｔ４で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２２であることを特定し、ページｂ１１を参照してページｂ２２のアドレスを取得し、前記取得したアドレスに基づいてページｂ２２にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、ｔ３で特定した索引Ｂの検索条件とページｂ２３のエントリに基づいて、アクセスすべきレコードがＢ１〜Ｂ３であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページＢ１〜Ｂ３のアドレスが格納されているページｂ２３をデータアドレス集合１３Ｄとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをＢ２に設定し、タスク生成可能数を２に設定する。これにより、データアドレス集合１３Ｄとそのデータアドレス集合１３Ｄに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、ＤＢＭＳは、タスク１２Ｃの実行により、ページＢ１にアクセスする。【００６０】
（ｔ６）
ＤＢＭＳは、タスク１２Ａの実行により、レコードＡ５がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｂの検索条件を特定し、索引Ｂのページｂ１１にアクセスする。
また、ＤＢＭＳは、タスク１２Ｂの実行により、ｔ４で特定した索引Ｂの検索条件とページｂ２２のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、ＤＢバッファ４３６に存在するデータアドレス集合１３Ｄと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがＢ２であることを特定し、前記次にアクセスすべきエントリを次のページであるＢ３に変更し、タスク生成可能数を１減算して１に変更し、データアドレス集合１３Ｄを参照して前記ページＢ２のアドレスを取得し、前記取得したアドレスに基づいてページＢ２にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、レコードＢ１がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Ｃの検索条件を特定し、索引Ｃのページｃ１１にアクセスする。【００６１】
（ｔ７）
ＤＢＭＳは、タスク１２Ａの実行により、ｔ６で特定した索引Ｂの検索条件とページｂ１１のエントリに基づいて、アクセスすべき下位ページがｂ２４であることを特定し、ページｂ１１を参照してページｂ２４のアドレスを取得し、前記取得したアドレスに基づいてページｂ２４にアクセスする。
ＤＢＭＳは、タスク１２Ｂの実行により、レコードＢ２がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、ＤＢバッファ４３６に存在するデータアドレス集合１３Ｄと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがＢ３であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１３Ｄを参照して前記ページＢ３のアドレスを取得し、タスク生成可能数が０になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページＢ３にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、ｔ６で特定した索引Ｃの検索条件とページｃ１１のエントリに基づいて、アクセスすべき下位ページがｃ２１であることを特定し、ページｃ１１を参照してページｃ２１のアドレスを取得し、前記取得したアドレスに基づいてページｃ２１にアクセスする。【００６２】
なお、ここで、データアドレス集合１３Ｄが消費されＤＢバッファ４３６にタスク開始情報のデータアドレス集合を記憶するページがなくなるため、ＤＭＢＳは、記憶デバイス群４４３からデータアドレス集合１３Ａを記憶するページをＤＢバッファ４３６に読込む処理を行う。記憶デバイス群４４３にデータアドレス集合を記憶するページが複数存在する場合には、ＤＢＭＳは、読込み対象のデータアドレス集合を、例えば、タスク開始情報の生成スピードとタスク開始情報の消費スピードとの比較結果、およびタスク開始情報のコンテキストに保持されているタスク生成可能数に基づいて決定する。【００６３】
具体的には、ＤＢＭＳは、タスク開始情報の生成スピードが、タスク開始情報の消費スピードよりも小さい場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象とし、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象としない。なお、前記閾値は、指定された固定の値でも良く、ＤＢＭＳによって動的に更新される可変の値でもよい。可変の値としては、例えば、全コンテキストのタスク生成可能数の平均値を計算し、ＤＢＭＳが任意のタイミングで当該計算した値に更新してもよい。このように、タスク開始情報の総数が減少している傾向がある場合には、ＤＢＭＳは、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先して読込む。これにより、多くのタスクを効率よく実行できることが期待できる。【００６４】
また、ＤＢＭＳは、タスク開始情報の生成スピードが、タスク開始情報の消費スピード以上の場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象とせず、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象とする。このように、タスク開始情報の総数が増加している傾向がある場合には、ＤＢＭＳは、タスク生成可能数が少ないコンテキストと関連づけられているデータアドレス集合を記憶するページを優先して読み込む。これにより、タスク開始情報を効率よく消費することが期待できる。【００６５】
図９の例では、ＤＢＭＳは、データアドレス集合１３Ａを記憶するページを、ＤＢバッファ４３６に読込む。【００６６】
（ｔ８）
ＤＢＭＳは、タスク１２Ａの実行により、ｔ６で特定した索引Ｂの検索条件とページｂ２４のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、ＤＢバッファ４３６に存在するデータアドレス集合１３Ａと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがａ２４であることを特定し、前記次にアクセスすべきエントリを次のページであるａ２５に変更し、タスク生成可能数を１減算して１に変更し、データアドレス集合１３Ａを参照して前記ページａ２４のアドレスを取得し、前記取得したアドレスに基づいてページａ２４にアクセスする。
また、ＤＢＭＳは、タスク１２Ｂの実行により、レコードＢ３がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、ＤＢバッファ４３６に存在するデータアドレス集合１３Ａと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがａ２５であることを特定し、タスク生成可能数を１減算して０になることを確認し、データアドレス集合１３Ａを参照して前記ページａ２５のアドレスを取得し、当該タスク開始情報を消去し、前記取得したアドレスに基づいてページａ２５にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、ｔ６で特定した索引Ｃの検索条件とページｃ２１のエントリに基づいて、アクセスすべき下位ページがｃ３１であることを特定し、ページｃ２１を参照してページｃ３１のアドレスを取得し、前記取得したアドレスに基づいてページｃ３１にアクセスする。【００６７】
（ｔ９）
ＤＢＭＳは、タスク１２Ａの実行により、クエリの指定値とページａ２４のエントリに基づいて、アクセスすべきレコードがＡ６であることを特定し、ページａ２４を参照して前記レコードＡ６のアドレスを取得し、前記取得したアドレスに基づいてページＡ６にアクセスする。
また、ＤＢＭＳは、タスク１２Ｂの実行により、クエリの指定値とページａ２５のエントリに基づいて、アクセスすべきレコードがＡ７であることを特定し、ページａ２５を参照して前記レコードＡ７のアドレスを取得し、前記取得したアドレスに基づいてページＡ７にアクセスする。
また、ＤＢＭＳは、タスク１２Ｃの実行により、ｔ６で特定した索引Ｃの検索条件とページｃ３１のエントリに基づいて、アクセスすべきレコードがＣ１であることを特定し、ページｃ３１を参照して前記レコードＣ１のアドレスを取得し、前記取得したアドレスに基づいてページＣ１にアクセスする。【００６８】
（ｔ１０）
ＤＢＭＳは、タスク１２Ａの実行により、レコードＡ６がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が１以上のタスク開始情報がないため、タスク１２Ａを終了する。
また、ＤＢＭＳは、タスク１２Ｂの実行により、レコードＡ７がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が１以上のタスク開始情報がないため、タスク１２Ｂを終了する。
また、ＤＢＭＳは、タスク１２Ｃの実行により、レコードＣ１がクエリで指定された条件を満たすことを判定する。続いて、タスクを実行するため、タスク生成可能数が１以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が１以上のタスク開始情報がないため、タスク１２Ｃを終了する。【００６９】
以上の処理により、ｔ９までに、クエリ実行プランにおけるＤＢへのアクセス処理が全て終了し、その後、クエリ処理が終了する。【００７０】
実施例１に係るクエリ処理は、図９に示すように、図８に示すクエリ処理に比して、記憶デバイス群４４３へのアクセスの回数を低減でき、短時間でクエリ処理を実行することができる。【００７１】
以下、実施例１を詳細に説明する。【００７２】
図１０は、実施例１に係る計算機システムの構成を示す。【００７３】
ＤＢサーバ４０１が通信ネットワーク４０３を介して外部ストレージ装置４０２に接続されている。通信ネットワーク４０３を介した通信のプロトコルとしては、例えば、ＦＣ（Fibre  Channel）、ＳＣＳＩ（Small  Computer  System  Interface）、又は、ＴＣＰ／ＩＰ（Transmission  Control  Protocol／Internet  Protocol）が採用されて良い。【００７４】
ＤＢサーバ４０１は、計算機、例えば、パーソナルコンピュータ、ワークステーション又はメインフレーム、もしくは、これらのいずれかによって構成される仮想的な計算機（仮想マシン）である。ＤＢサーバ４０１は、ネットワークアダプタ４１３、メモリ４１６、ローカル記憶デバイス４１５及びそれらに接続されたプロセッサ（典型的にはマイクロプロセッサ）４１４を有する。プロセッサ４１４は、コンピュータプログラム、例えば、ＯＳ（Operating  System）４１７と、ＤＢＭＳ４１２と、ＤＢＭＳ４１２にクエリを発行するＡＰ（Application  Program）４１１とを実行する。メモリ４１６は、主記憶装置（第１の記憶デバイス）の一例であり、プロセッサ４１４によって実行されるプログラムと、プログラムが使用するデータとを一時的に記憶する。ローカル記憶デバイス４１５は、プログラム、及びプログラムが使用するデータを格納する。ネットワークアダプタ４１３は、通信ネットワーク４０３とＤＢサーバ４０１とを接続する。ＡＰ４１１は、ＤＢサーバ４０１ではなく、通信ネットワーク４０３に接続される図示しない別の計算機で動作しても良い。また、プロセッサ４１４は、ネットワークアダプタ４１３及びメモリ４１６等に接続された制御デバイスに含まれている要素で良い。制御デバイスは、プロセッサ４１４の他に、専用ハードウェア回路（例えば、データの暗号化及び／又は復号化を行う回路）を含んで良い。【００７５】
なお、ＤＢサーバ４０１は、性能面や冗長性の観点から、プロセッサ４１４、メモリ４１６、ローカル記憶デバイス４１５及びネットワークアダプタ４１３のうちの少なくとも１つの要素を複数備えていても良い。また、ＤＢサーバ４０１は、図示しない入力デバイス（例えば、キーボード及びポインティングデバイス）と表示デバイス（例えば液晶ディスプレイ）とを有して良い。入力デバイスと表示デバイスは一体になっていても良い。【００７６】
ＤＢサーバ４０１では、ＤＢＭＳ４１２が、ＡＰ４１１から発行されたクエリを実行し、そのクエリの実行に伴い、外部ストレージ装置４０２に格納されたＤＢ４５１に対するＩ／Ｏ要求をＯＳ４１７に発行する。ＯＳ４１７が、ＤＢＭＳ４１２から発行されたＩ／Ｏ要求を、外部ストレージ装置４０２に送信する。【００７７】
外部ストレージ装置４０２は、本実施例では、ディスクアレイ装置のような、複数の記憶デバイスを含む記憶デバイス群４４３を有する装置であるが、それに代えて、単一の記憶デバイスであっても良い。外部ストレージ装置４０２は、ＤＢサーバ４０１が使用するデータ及びプログラムを記憶する。外部ストレージ装置４０２は、ＤＢサーバ４０１に対する二次記憶装置（第２の記憶デバイス）の一例である。外部ストレージ装置４０２は、ＤＢサーバ４０１からＩ／Ｏ要求を受信し、Ｉ／Ｏ要求に対応した処理を実行し、処理結果をＤＢサーバ４０１に送信する。【００７８】
外部ストレージ装置４０２は、ネットワークアダプタ４４１、記憶デバイス群４４３及びそれらに接続されたコントローラ４４２を有する。【００７９】
ネットワークアダプタ４４１は、外部ストレージ装置４０２を通信ネットワーク４０３に接続する。【００８０】
記憶デバイス群４４３は、１つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。記憶デバイス群４４３は、ＲＡＩＤ（Redundant  ARRAY  of  Independent  Disks）に従い所定のＲＡＩＤレベルでデータを記憶するグループであっても良い。記憶デバイス群４４３の記憶空間に基づく論理的な記憶デバイス（論理ボリューム）がＤＢサーバ４０１に提供されても良い。記憶デバイス群４４３は、ＤＢ４５１を記憶する。【００８１】
コントローラ４４２は、例えば、メモリ及びプロセッサを含んでおり、ＤＢサーバ４０１からのＩ／Ｏ要求に従って、ＤＢ４５１を記憶した記憶デバイス群４４３にデータを入出力する。例えば、コントローラ４４２は、ＤＢサーバ４０１からの書込み要求に従う書込み対象のデータを記憶デバイス群４４３に格納したり、ＤＢサーバ４０１からの読出し要求に従う読出し対象のデータを記憶デバイス群４４３から読み出し、そのデータをＤＢサーバ４０１に送信したりする。【００８２】
なお、外部ストレージ装置４０２は、性能面や冗長性確保の観点から、コントローラ４４２等の要素を複数備えても良い。【００８３】
ＤＢＭＳ４１２は、業務データを含んだＤＢ４５１を管理する。ＤＢ４５１は、１つ以上の表４６２や索引４６１を含む。表は１つ以上のレコードの集合であり、レコードは１つ以上のカラムから構成される。索引は、表の中の１つ以上のカラムを対象に作成されるデータ構造であり、当該索引が対象とするカラムを含む選択条件による表へのアクセスを高速化する。例えば、索引は、対象とするカラムの値毎にその値を含む表のレコードを特定する情報（レコードＩＤ）を保持するデータ構造であり、Ｂ木構造等が用いられる。ＤＢの表の構成例や表同士の関連性の一例は、図１乃至図３、及び図６に示した通りである。【００８４】
ＤＢＭＳ４１２は、クエリ受付部４２１、クエリ実行プラン生成部４２２、クエリ実行部４２３、実行タスク管理部４２６及びＤＢバッファ管理部４２７を含む。【００８５】
クエリ受付部４２１は、ＡＰ４１１が発行するクエリを受け付ける。クエリは、例えばＳＱＬ（Structured  Query  Language）で記述されている。【００８６】
クエリ実行プラン生成部４２２は、クエリ受付部４２１が受け付けたクエリについて、当該クエリを実行するために必要な１つ以上のＤＢオペレーションを有するクエリ実行プランを生成する。クエリ実行プランは、例えば、クエリの実行の際に行うべきＤＢオペレーションの実行順序を木構造で定義した情報であり、メモリ４１６に格納される。クエリ実行プランの一例は、図５に示した通りである。【００８７】
クエリ実行部４２３は、クエリ実行プラン生成部４２２が生成したクエリ実行プランに従って、クエリ実行プランに含まれる情報であるＤＢオペレーションを実行するためのタスクを動的に生成して実行する。そして、実行した結果をクエリ発行元に返す。例えば、クエリ実行部４２３は、（ａ）ＤＢオペレーションを実行するためのタスクを実行タスク管理部４２６に要求して生成すること、（ｂ）生成されたタスクを実行することで、そのタスクに対応したＤＢオペレーションに必要なデータを読み出す（ＤＢ４５１を有する外部ストレージ装置４０２へＯＳ４１７を介して読出し要求を発行する）こと、（ｃ）上記（ｂ）で実行されたタスクに対応したＮ番目のＤＢオペレーションの実行結果に基づき（Ｎ＋１）番目のＤＢオペレーションを実行する場合には、その実行結果に基づくタスクを実行タスク管理部４２６に要求して新たに生成すること（Ｎは１以上の整数）、及び、（ｄ）その新たに生成したタスクについて上記（ｂ）及び上記（ｃ）を行うこと、を行う。クエリ実行部４２３は、上記（ｂ）及び（ｄ）において、２以上の実行可能なタスクが存在する場合には、それら２以上のタスクのうちの少なくとも二つのタスクを並行して実行する。また、クエリ実行部４２３は、タスク割当て管理部４３１と、コンテキスト管理部４３２とを含む。タスク割当て管理部４３１は、タスクの実行開始を管理する。コンテキスト管理部４３２は、タスクにおいて実行を行う内容を示す情報であるタスク開始情報ＴＳのコンテキストＣＴＸを管理する。タスク開始情報の一例は、図７に示した通りである。なお、クエリ実行部４２３、タスク割当て管理部４３１、及びコンテキスト管理部４３２の詳細は、後述する。【００８８】
実行タスク管理部４２６は、クエリを実行するためのタスクを管理する。例えば、実行タスク管理部４２６は、タスクを生成するためのメモリ資源を管理しており、クエリ実行部４２３からのタスクの生成要求に従って、タスク自体に要するメモリ資源を確保してタスクを生成する。また、クエリ実行部４２３からのタスクの終了要求に従って、タスク自体に要するメモリ資源を解放してタスクを終了する。ここで、タスクとしては、任意のモジュールを採用することができる。例えば、タスクは、ＯＳ４１７が管理するプロセス又はスレッドでも良いし、ＤＢＭＳ４１２で実装される疑似プロセス又は疑似スレッドでも良い。【００８９】
ＤＢバッファ管理部４２７は、ＤＢ４５１内のページを一時的に格納するための１以上の記憶領域（ＤＢバッファ面）４３７を管理する。ＤＢバッファ面４３７は、メモリ４１６上に構築される。なお、ＤＢバッファ管理部４２７の詳細は、後述する。【００９０】
図１１は、実施例１に係る計算機システムの一部の詳細構成図である。【００９１】
クエリ実行部４２３は、タスク割当て管理部４３１と、コンテキスト管理部４３２とを含む。クエリ実行部４２３は、クエリ実行プラン生成部４２２が生成したクエリ実行プランに従って、タスクにおいて実行を行う内容を示す情報であるタスク開始情報ＴＳを動的に生成し、前記生成したタスク開始情報に基づいてタスクを実行することでクエリ実行プラン内のＤＢオペレーションを実行する。コンテキスト管理部４３２は、１以上のタスク開始情報ＴＳのコンテキストＣＴＸを管理する。コンテキストＣＴＸは、データアドレス集合ＡＧが記憶されている外部ストレージ装置４０２の記憶デバイス群４４３におけるページを特定する情報（例えば、ページＩＤ）、データアドレス集合ＡＧに格納されたエントリのうち次に実行開始されるタスクによりアクセスするエントリを示す情報、さらにタスク実行によりアクセスするエントリの残数（タスク生成可能数）を格納する。コンテキスト管理部４３２は、タスク開始情報ＴＳが生成される都度に、当該タスク開始情報のコンテキストＣＴＸを管理対象に追加し、タスク開始情報ＴＳが削除される都度に、当該タスク開始情報のコンテキストＣＴＸを管理対象から削除する。タスク割当て管理部４３１は、クエリ実行部４２３がタスクを実行開始する際に参照するタスク開始情報ＴＳを決定し、当該タスク開始情報のコンテキストＣＴＸをコンテキスト管理部より取得し、当該コンテキストと関連づけられたデータアドレス集合ＡＧを参照し、アクセス対象ページを特定する。クエリ実行部４２３は、タスクを実行開始し、前記特定されたページにアクセスする。また、タスク割当て管理部４３１は、コンテキストＣＴＸのタスク生成可能数が０になったタスク開始情報ＴＳを削除する。【００９２】
ＤＢバッファ管理部４２７は、ＤＢ４５１内のページを一時的に格納するための１以上の記憶領域（ＤＢバッファ面）４３７を含むＤＢバッファ４３６を管理する。なお、ＤＢバッファ４３６におけるＤＢバッファ面４３７の数は、所定の数に制限されている。また、ＤＢバッファ管理部４２７は、ＤＢバッファ面４３７に格納されているページを管理するためのＤＢバッファ管理表４３５を記憶する。ＤＢバッファ管理部４２７は、ＤＢ４５１のページの内容を、ＤＢバッファ面４３７に読込んだり、ＤＢバッファ面４３７に格納されているページを、ＤＢバッファ面４３７から追い出したりする。ここで、ＤＢバッファ面４３７からデータを追い出すことを、ＤＢバッファ面４３７の解放という。なお、ＤＢバッファ管理部４２７は、ＤＢバッファ面４３７を解放する際に、該当するデータがダーティデータ、すなわち、ＤＢ４５１に反映されていないデータである場合には、当該ページをＤＢ４５１に移動して格納する一方、ダーティデータでない場合には、そのデータをＤＢバッファ面４３７から消去するのみとしても良い。【００９３】
前述したクエリ受付部４２１、クエリ実行プラン生成部４２２、クエリ実行部４２３、実行タスク管理部４２６、ＤＢバッファ管理部４２７は、ＤＢＭＳ４１２がプロセッサ４１４で実行されることによって実現されるが、それらのうちの少なくとも１つの処理部が行う処理の少なくとも一部が、ハードウェアで行われても良い。また、本実施例の説明において、処理部が主語になる場合は、実際にはその処理部を実行するプロセッサ４１４によって処理が行われるが、処理部の少なくとも一部がハードウェアで実現されている場合は、プロセッサ４１４に代えて又は加えて、そのハードウェアも、主語とされ得る。ＤＢＭＳ４１２のようなコンピュータプログラムは、プログラムソースからＤＢサーバ４０１にインストールされて良い。プログラムソースは、例えば、ＤＢサーバ４０１が読み取り可能な記憶メディアで良い。【００９４】
また、図１０及び図１１に示したＤＢＭＳ４１２の構成は、一例である。例えば、或る処理部が複数の処理部に分割されたり、複数の処理部の処理を統合した１つの処理部が構築されても良い。【００９５】
図１２は、実施例１に係るＤＢバッファ管理表４３５の構成を示す。【００９６】
ＤＢバッファ管理表４３５は、ＤＢバッファ面４３７毎の情報として、バッファＩＤ４３５ａ、ページＩＤ４３５ｂを有する。各種情報は、下記の通りである。
（＊）バッファＩＤ４３５ａは、ＤＢバッファ面４３７を識別するためのＩＤを示す。
（＊）ページＩＤ４３５ｂは、対応するＤＢバッファ面４３７に格納されているページの外部ストレージ装置４０２における格納位置を特定することのできる情報（ここでは、ページＩＤ）である。なお、対応するＤＢバッファ面４３７にページが格納されていない場合には、ページＩＤ４３５ｂとして空を示す情報が設定される。【００９７】
以下、図１３〜図２２を参照して、本実施例で行われる種々の処理を説明する。【００９８】
図１３は、ＤＢＭＳ４１２が受け付けたクエリの実行においてタスクを生成し実行するクエリ処理の全体の流れを示す。図１３は、１つのクエリ実行の流れを示すが、同時に実行するクエリが２以上ある場合には、ＤＢＭＳ４１２は、その２以上のクエリについて並行して図１３に示す処理を行って良い。【００９９】
Ｓ１００１で、クエリ受付部４２１が、ＡＰ４１１が発行するクエリを受け付け、例えば、メモリ４１６に格納する。クエリは、例えばＳＱＬ（Structured  Query  Language）で記述されている。【０１００】
Ｓ１００２で、クエリ実行プラン生成部４２２が、ＤＢ４５１のデータの統計情報（以下、「ＤＢ統計情報」）に基づいて、クエリ受付部４２１が受け付けたクエリ（例えば、メモリ４１６に蓄積されているクエリ）についてクエリ実行プランを生成する。この際、１つ以上のクエリ実行プランの候補の各々についてコスト計算を行い、そのうち１つのクエリ実行プランの候補をクエリ実行プランとして選んでも良い。ＤＢ統計情報は、例えば、各表４６２について、レコードの数を表す情報、カラム毎のデータの最大値及び最小値もしくはカラム毎のデータの分布状況を表すヒストグラム等の統計情報を含んで良い。ＤＢ統計情報は、ローカル記憶デバイス４１５又はメモリ４１６に格納される。ＤＢ統計情報は、ＤＢＭＳ４１２がＤＢ４５１をチェックすることにより生成されても良いし、ＤＢＭＳ４１２の外部から入力されても良い。また、クエリ実行プランは、ＤＢ統計情報のみならず、クエリの記述に基づいて生成されても良い。【０１０１】
Ｓ１００３で、クエリ実行部４２３がコンテキストを生成し、コンテキスト管理部４３２が当該生成されたコンテキストを管理する。前記コンテキストは、Ｓ１００２で生成されたクエリ実行プランの、先頭のＤＢオペレーションを実行するための内容を示すコンテキストである。【０１０２】
Ｓ１００４で、クエリ実行部４２３が、１以上のタスクを生成する。【０１０３】
Ｓ１００５で、クエリ実行部４２３が、Ｓ１００４で生成されたタスクを実行する。【０１０４】
図１４は、実施例１に係るＤＢＭＳによるタスク実行処理の流れを示す。【０１０５】
Ｓ１１０１で、タスク割当て管理部４３１が、タスクの実行内容を取得する。タスク実行内容取得処理の詳細は、図１５に示す通りである。【０１０６】
Ｓ１１０２で、クエリ実行部４２３が、Ｓ１１０１で取得したタスクの実行内容に基づいてタスクを実行することにより、ＤＢオペレーションを実行する。【０１０７】
Ｓ１１０３で、クエリ実行部４２３が、Ｓ１１０２でタスクにより実行したＤＢオペレーションの結果に基づき、コンテキストを生成するか否かを判断する。この判断の結果が肯定的であれば、Ｓ１１０４を行う一方、この判断の結果が否定的であれば、処理を終了する。【０１０８】
Ｓ１１０４で、クエリ実行部４２３がコンテキストＣＴＸを生成し、コンテキスト管理部４３２が、当該生成されたコンテキストを管理する。当該コンテキストＣＴＸには、データアドレス集合ＡＧが記憶されている外部ストレージ装置４０２の記憶デバイス群４４３におけるページを特定する情報（例えば、ページＩＤ）、データアドレス集合ＡＧに格納されたエントリのうち次に実行開始されるタスクによりアクセスするエントリを示す情報、さらにタスク実行によりアクセスするエントリの残数（タスク生成可能数）が含まれる。【０１０９】
Ｓ１１０５で、クエリ実行部４２３からのタスクの生成要求に従って、実行タスク管理部４２６が、タスクを生成する。【０１１０】
Ｓ１１０６で、クエリ実行部４２３が、Ｓ１１０４で生成されたタスクを実行する。【０１１１】
図１５は、実施例１に係るタスク実行内容取得処理（図１４のＳ１１０１）の流れを示す。【０１１２】
Ｓ１２０１で、タスク割当て管理部４３１は、タスク開始情報選択処理を行う。タスク開始情報ＴＳとは、コンテキストＣＴＸとそれに関連づけられたデータアドレス集合ＡＧのセットである。タスク開始情報選択処理の詳細は、図１６に示す通りである。【０１１３】
Ｓ１２０２で、タスク割当て管理部４３１は、Ｓ１２０１で選択したタスク開始情報ＴＳからタスク実行内容を取得する。タスク実行内容には、タスク開始情報ＴＳのコンテキストＣＴＸ及びデータアドレス集合ＡＧから取得した、アクセス対象ページのアドレスを含む。【０１１４】
Ｓ１２０３で、タスク割当て管理部４３１は、Ｓ１２０１で選択したタスク開始情報ＴＳのコンテキストＣＴＸに保持されている、次に実行開始されるタスクによりアクセスするエントリを次のエントリに更新し、前記コンテキストＣＴＸのタスク生成可能数を１減算する。【０１１５】
Ｓ１２０４で、タスク割当て管理部４３１は、Ｓ１２０１で選択したタスク開始情報ＴＳのコンテキストＣＴＸのタスク生成可能数が０であるか否かを判断する。この判断の結果が肯定的であれば、Ｓ１２０５を行う一方、この判断の結果が否定的であれば、処理を終了する。【０１１６】
Ｓ１２０５で、タスク割当て管理部４３１は、Ｓ１２０１で選択したタスク開始情報ＴＳを削除し、コンテキスト管理部４３２は当該タスク開始情報ＴＳのコンテキストＣＴＸを管理対象から削除する。【０１１７】
図１６は、タスク開始情報選択処理（図１５のＳ１２０１）の流れを示す。【０１１８】
Ｓ１３０１で、タスク割当て管理部４３１は、コンテキスト管理部４３２が管理しているコンテキストから１つを選択し、当該コンテキストと関連づけられているデータアドレス集合を記憶するページ（ここで、この処理の説明においては、このページをページＢという）のページＩＤを取得する。【０１１９】
Ｓ１３０２で、タスク割当て管理部４３１は、取得したページＢがＤＢバッファ４３６上にあるか否かを判定する。具体的には、タスク割当て管理部４３１は、ページＩＤを含む問合せ要求をＤＢバッファ管理部４２７に送信することにより、対応するページＩＤのページがＤＢバッファ４３６に格納されているか否かを問合せ、その問合せ結果に基づいて、取得したページＢがＤＢバッファ４３６上にあるか否かを判定する。ＤＢバッファ管理部４２７は、前記問合せを受けて、ＤＢバッファ管理表４３５を参照し、該当するページＩＤのページがあるか否かを判定し、その結果をタスク割当て管理部４３１に通知する。【０１２０】
Ｓ１３０３で、ステップＳ１３０２の判定の結果、ページＢがＤＢバッファ４３６にある場合（Ｓ１３０３：Ｙ）には、タスク割当て管理部４３１は、ステップＳ１３０７を行い、ページＢがＤＢバッファ４３６にない場合（Ｓ１３０３：Ｎ）には、ステップＳ１３０４を行う。【０１２１】
Ｓ１３０４で、タスク割当て管理部４３１は、コンテキスト管理部４３２の全コンテキストにおいて当該コンテキストに関連づけられているデータアドレス集合を記憶するページがＤＢバッファ４３６にないと判定していない場合（Ｓ１３０４：Ｎ）には、Ｓ１３０１に進み、次のコンテキストを選択して、以降の処理を行う。一方、コンテキスト管理部４３２の全コンテキストにおいて当該コンテキストに関連づけられているデータアドレス集合を記憶するページがＤＢバッファ４３６にないと判定した場合（Ｓ１３０４：Ｙ）には、タスク割当て管理部４３１は、ページ読込みコンテキストを選択する処理（Ｓ１３０５）を行う。【０１２２】
Ｓ１３０５で、タスク割当て管理部４３１は、関連づけられているデータアドレス集合を記憶するページを、外部ストレージ装置４０２からＤＢバッファ４３６に読込むコンテキストを選択するための、ページ読込コンテキスト選択処理を実行する。ページ読込コンテキスト選択処理の詳細は、図１７に示す通りである。図１７によれば、ページ読込コンテキスト選択処理により、外部ストレージ装置４０２からＤＢバッファ４３６にページを読込むコンテキストが選択される。ここで、選択したページをページＣとし、選択したコンテキストをコンテキストＣとする。【０１２３】
Ｓ１３０６で、タスク割当て管理部４３１は、ＤＢバッファ管理部４２７に対し、ページＣをＤＢバッファ４３６に読込む、ページ読込要求を送信する。ＤＢバッファ管理部４２７は、前記ページ読込要求を受けて、外部ストレージ装置４０２からページＣをＤＢバッファ４３６に読込み、ページ読込処理が終了したことをタスク割当て管理部４３１に通知する。ページ読込処理の詳細は、図１９に示す通りである。図１９によれば、ページ読込処理により、ページＣがＤＢバッファ４３６に読込まれる。【０１２４】
Ｓ１３０７で、タスク割当て管理部４３１は、選択したコンテキストを含むタスク開始情報を選択し、処理を終了する。【０１２５】
図１７は、ページ読込コンテキスト選択処理（図１６のＳ１３０５）の流れを示す。【０１２６】
Ｓ１４０１で、タスク割当て管理部４３１は、コンテキスト管理部４３２が管理しているコンテキストから、処理対象とする１つのコンテキストを選択する。【０１２７】
Ｓ１４０２で、タスク割当て管理部４３１は、選択したコンテキストと関連づけられているデータアドレス集合を記憶するページをＤＢバッファ４３６に読み込み可能であるか否かを判定するための、ＤＢバッファ読込判定処理を実行する。ＤＢバッファ読込判定処理の詳細は、図１８に示す通りである。図１８によれば、ＤＢバッファ読込判定処理により、選択されたコンテキストと関連づけられているページをＤＢバッファ４３６に読込可能であるか否かの判定結果が得られる。【０１２８】
Ｓ１４０３で、タスク割当て管理部４３１は、選択したコンテキストと関連づけられているページをＤＢバッファ４３６に読込可能か否かを判定し、当該ページをＤＢバッファ４３６に読込可能でない場合（Ｓ１４０３：Ｎ）には、Ｓ１４０１を行い、次のコンテキストを選択して以降の処理を行う一方、当該ページをＤＢバッファ４３６に読込可能である場合（Ｓ１４０３：Ｙ）には、処理を終了する。【０１２９】
図１８は、ＤＢバッファ読込判定処理（図１７のＳ１４０２）の流れを示す。【０１３０】
Ｓ１５０１で、タスク割当て管理部４３１は、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも小さいか否かを判定し、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも小さい場合、すなわち、タスク開始情報の総数が減少している傾向がある場合（Ｓ１５０１：Ｙ）には、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先してＤＢバッファ４３６に読込むためＳ１５０２に進む一方、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも小さくない場合、すなわち、タスク開始情報の総数が増加する傾向にある場合（Ｓ１５０１：Ｎ）には、Ｓ１５０３に進む。【０１３１】
Ｓ１５０２で、タスク割当て管理部４３１は、Ｓ１４０１で選択されたコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合（Ｓ１５０２：Ｙ）には、Ｓ１５０４に進む一方、タスク生成可能数が閾値以上でない場合（Ｓ１５０２：Ｎ）には、Ｓ１５０５に進む。【０１３２】
Ｓ１５０３で、タスク割当て管理部４３１は、Ｓ１４０１で選択されたコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合（Ｓ１５０３：Ｙ）には、Ｓ１５０５に進む一方、タスク生成可能数が閾値以上でない場合（Ｓ１５０３：Ｎ）には、Ｓ１５０４に進む。【０１３３】
Ｓ１５０４で、タスク割当て管理部４３１は、選択されたコンテキストと関連づけられているページを読込可と判定し、ＤＢバッファ読込判定処理を終了する。【０１３４】
Ｓ１５０５で、タスク割当て管理部４３１は、選択されたコンテキストと関連づけられているページを読込不可と判定し、ＤＢバッファ読込判定処理を終了する。【０１３５】
このＤＢバッファ読込判定処理によると、タスク開始情報の総数が減少している傾向がある場合には、タスク生成可能数が多いコンテキストと関連づけられているページがＤＢバッファ４３６に優先して読込まれるようにして多くのタスクを効率よく実行でき、タスク開始情報の総数が増加している傾向がある場合には、タスク生成可能数が少ないコンテキストと関連づけられているページがＤＢバッファに優先して読込まれるようにして、タスク開始情報が効率よく消費されるようにできる。【０１３６】
図１９は、ページ読込処理（図１６のＳ１３０６）の流れを示す。【０１３７】
Ｓ１６０１で、ＤＢバッファ管理部４２７は、空いているＤＢバッファ面が無いか否かを判定し、空きＤＢバッファ面が無い場合（Ｓ１６０１：Ｙ）には、Ｓ１６０２に進む一方、空きＤＢバッファ面がある場合（Ｓ１６０１：Ｎ）には、Ｓ１６０３に進む。【０１３８】
Ｓ１６０２で、ＤＢバッファ管理部４２７は、ＤＢバッファ４３６からデータを追出すＤＢバッファ追い出し処理を実行する。ＤＢバッファ追い出し処理の詳細は、図２０に示す通りである。図２０によれば、ＤＢバッファ追い出し処理により、空きＤＢバッファ面を生成することができる。ＤＢバッファ追い出し処理終了後には、ＤＢバッファ管理部４２７は、Ｓ１６０１を行う。【０１３９】
Ｓ１６０３で、ＤＢバッファ管理部４２７は、ページのデータを格納するための空きＤＢバッファ面を確保し、当該ＤＢバッファ面にページのデータを読込む。【０１４０】
図２０は、ＤＢバッファ追い出し処理（図１９のＳ１６０２）の流れを示す。【０１４１】
Ｓ１７０１で、ＤＢバッファ管理部４２７は、データを追い出す対象とするＤＢバッファ面を選択する、追い出し対象ＤＢバッファ面選択処理を実行する。追い出し対象ＤＢバッファ面選択処理の詳細は、図２１に示す通りである。図２１によれば、追い出し対象ＤＢバッファ面選択処理により、データを追い出す対象とするＤＢバッファ面を選択することができる。【０１４２】
Ｓ１７０２で、ＤＢバッファ管理部４２７は、選択されたＤＢバッファ面のデータがダーティデータか否かを判定し、選択されたＤＢバッファ面のデータがダーティデータである場合（Ｓ１７０２：Ｙ）には、Ｓ１７０３に進み、選択されたＤＢバッファ面のデータがダーティデータでない場合（Ｓ１７０２：Ｎ）には、Ｓ１７０４に進む。【０１４３】
Ｓ１７０３で、ＤＢバッファ管理部４２７は、選択されたＤＢバッファ面の内容を外部ストレージ装置４０２の記憶デバイス群４４３に書き出す。【０１４４】
Ｓ１７０４で、ＤＢバッファ管理部４２７は、選択されたＤＢバッファ面を開放する。これにより、このＤＢバッファ面が使用可能となる。【０１４５】
なお、このＤＢバッファ追い出し処理は、例えば、ＤＢバッファ４３６における空きＤＢバッファ面数が所定数以下になった場合に、実行するようにしても良い。【０１４６】
図２１は、追い出し対象ＤＢバッファ面選択処理（図２０のＳ１７０１）の流れを示す。【０１４７】
Ｓ１８０１で、ＤＢバッファ管理部４２７は、追い出し候補とする１つのＤＢバッファ面を選択する。【０１４８】
Ｓ１８０２で、ＤＢバッファ管理部４２７は、選択されたＤＢバッファ面に格納されているページが、コンテキストと関連づけられているページであるか否かを判定し、当該ページがコンテキストと関連づけられているページのである場合（Ｓ１８０２：Ｙ）には、Ｓ１８０３に進む一方、当該ページがコンテキストと関連づけられているページでない場合（Ｓ１８０２：Ｎ）には、そのまま処理を終了する。ここで、選択したＤＢバッファ面に格納されているページが、コンテキストと関連づけられているページであるか否かの判定は、具体的には、ＤＢバッファ管理部４２７が、ページＩＤを含む問合せ要求をコンテキスト管理部４３２に送信することにより、対応するページＩＤのページと関連づけられているコンテキストが、コンテキスト管理部４３２で管理されているか否かを問合せ、その問合せ結果に基づいて判断する。コンテキスト管理部４３２は、前記問合せを受けて、管理するコンテキストのなかに、該当するページＩＤが関連づけられているコンテキストがあるか否かを判定して、その結果をＤＢバッファ管理部４２７に通知する。【０１４９】
Ｓ１８０３で、ＤＢバッファ管理部４２７は、タスク割当て管理部４３１により、選択したＤＢバッファ面を解放可能か否かを判定するためのＤＢバッファ面解放判定処理を実行する。ＤＢバッファ面解放判定処理の詳細は、図２２に示す通りである。図２２によれば、ＤＢバッファ面解放判定処理により、選択されたＤＢバッファを解放可能であるか否かの判定結果が得られる。【０１５０】
Ｓ１８０４で、ＤＢバッファ管理部４２７は、選択したＤＢバッファ面を解放可能であるか否かを判定し、選択したＤＢバッファを解放可能と判定しなかった場合（Ｓ１８０４：Ｎ）には、Ｓ１８０１を行い、次のＤＢバッファ面を選択して以降の処理を行う一方、選択したＤＢバッファ面を解放可能と判定した場合（Ｓ１８０４：Ｙ）には、処理を終了する。【０１５１】
図２２は、ＤＢバッファ面解放判定処理（図２１のＳ１８０３）の流れを示す。【０１５２】
Ｓ１９０１で、タスク割当て管理部４３１は、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数より大きいか否かを判定し、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも大きい場合、すなわち、タスク開始情報の総数が増加している傾向がある場合（Ｓ１９０１：Ｙ）には、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先してＤＢバッファ４３６から追い出すためＳ１９０２に進む一方、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも大きくない場合、すなわち、タスク開始情報の総数が減少する傾向にある場合（Ｓ１９０１：Ｎ）には、Ｓ１９０３に進む。【０１５３】
Ｓ１９０２で、タスク割当て管理部４３１は、図２１のＳ１８０１で選択されたＤＢバッファ面に格納されたページと関連づけられるコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合（Ｓ１９０２：Ｙ）には、Ｓ１９０４に進む一方、タスク生成可能数が閾値以上でない場合（Ｓ１９０２：Ｎ）には、Ｓ１９０５に進む。【０１５４】
Ｓ１９０３で、タスク割当て管理部４３１は、図２１のＳ１８０１で選択されたＤＢバッファに格納されたページと関連づけられるコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合（Ｓ１９０３：Ｙ）には、Ｓ１９０５に進む一方、タスク生成可能数が閾値以上でない場合（Ｓ１９０３：Ｎ）には、Ｓ１９０４に進む。【０１５５】
Ｓ１９０４で、タスク割当て管理部４３１は、選択されたＤＢバッファを解放可と判定し、ＤＢバッファ面解放判定処理を終了する。【０１５６】
Ｓ１９０５で、タスク割当て管理部４３１は、選択されたＤＢバッファを解放不可と判定し、ＤＢバッファ面解放判定処理を終了する。【０１５７】
このＤＢバッファ面解放判定処理によると、タスク開始情報の総数が増加している傾向がある場合には、タスク生成可能数が多いコンテキストと関連づけられるページを格納するＤＢバッファ面を優先して解放し、タスク生成可能数の少ないコンテキストと関連づけられるページがＤＢバッファに残るようにすることで、タスク開始情報を効率よく消費することができる。また、タスク開始情報の総数が減少している傾向がある場合には、タスク生成可能数が少ないコンテキストと関連づけられるページを格納するＤＢバッファ面を優先して解放して、タスク生成可能数が多いコンテキストと関連づけられるページがＤＢバッファに優先して残るようにすることで、多くのタスクを記憶デバイス群４４３へのアクセスを行うことなく効率よく実行開始することができる。
【実施例２】
【０１５８】
以下、実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。【０１５９】
図２３は、実施例２に係る計算機システムの一部の詳細構成図を示す。【０１６０】
実施例２においては、実施例１のタスク割当て管理部４３１の一部の処理と、実施例１のＤＢバッファ管理部４２７の一部の処理とを、新たに備えたタスク開始情報格納場所管理部４３８に実行させるようにしたものであり、それに応じて、タスク割当て管理部４３１及びＤＢバッファ管理部４２７の処理が変更されている。【０１６１】
タスク開始情報格納場所管理部４３８は、タスク開始情報格納場所管理表４３９を管理し、タスク割当て管理部４３１、ＤＢバッファ管理部４２７からの問い合わせに答える。タスク開始情報格納場所管理部４３８は、タスク割当て管理部４３１又はＤＢバッファ管理部４２７からの通知に基づいて、タスク開始情報場所管理表４３９のエントリの登録、削除、更新等を行う。タスク開始情報格納場所管理部４３８は、タスク割当て管理部４３１からデータアドレス集合を記憶するページがＤＢバッファにあるか否かの問い合わせがあった場合には、タスク開始情報格納場所管理表４３９を参照し、対応するデータアドレス集合の格納場所が主記憶（すなわち、ＤＢバッファ）であるか否かを判定し、判定結果をタスク割当て管理部４３１に通知する。また、タスク開始情報格納場所管理部４３８は、ＤＢバッファ管理部４２７からＤＢバッファを解放しても良いか否かの問い合わせがあった場合には、タスク開始情報格納場所管理表４３９を参照し、対応するＤＢバッファのデータを主記憶から追い出しても良いか否かを判定し、判定結果をＤＢバッファ管理部４２７に通知する。【０１６２】
図２４は、実施例２に係るタスク開始情報格納場所管理表の構成を示す。【０１６３】
タスク開始情報格納場所管理表４３９は、タスク開始情報毎の情報として、タスク開始情報ＩＤ４３９ａ、データアドレス集合格納場所４３９ｂ、主記憶追出可否４３９ｃを有する。各種情報は、下記の通りである。
（＊）タスク開始情報ＩＤ４３９ａは、タスク開始情報を識別するためのＩＤ（タスク開始情報ＩＤ）を示す。
（＊）データアドレス集合格納場所４３９ｂは、対応するタスク開始情報のデータアドレス集合が格納されている格納場所の情報である。データアドレス集合格納場所４３９ｂは、例えば、データアドレス集合がＤＢバッファ面４３７に格納されている場合には、「主記憶」となり、ＤＢバッファではなく、外部ストレージ装置４０２の記憶デバイス群４４３に格納されている場合には、「二次記憶」となる。
（＊）主記憶追出可否４３９ｃは、対応するデータアドレス集合を主記憶装置、すなわち、ＤＢバッファ面４３７から解放することが可能であるか否かを示す。【０１６４】
タスク割当て管理部４３１は、タスク開始情報を生成した場合、タスク開始情報を削除した場合、タスク開始情報のデータアドレス集合を記憶するページのＤＢバッファからの解放可否を変更した場合に、その内容をタスク開始情報格納場所管理部４３８に通知する。本例においては、例えば、タスク割当て管理部４３１は、所定のタイミングで、各タスク開始情報を対象に、図２２に示すＤＢバッファ解放判定処理を実行し、各タスク開始情報のデータアドレス集合を記憶するページを格納するＤＢバッファ面の解放可否を示す判定結果をタスク開始情報格納場所管理部４３８に通知する。【０１６５】
タスク割当て管理部４３１は、コンテキストと関連づけられているデータアドレス集合を記憶するページがＤＢバッファ４３６にあるか否かを、タスク開始情報格納場所管理部４３８に問い合わせる。【０１６６】
ＤＢバッファ管理部４２７は、タスク開始情報のデータアドレス集合を記憶するページを格納するＤＢバッファ面を確保した場合、及びそのＤＢバッファ面を解放した場合に、その内容をタスク開始情報格納場所管理部４３８に通知する。【０１６７】
ＤＢバッファ管理部４２７は、ＤＢバッファ面を開放して良いか否かをタスク開始情報格納場所管理部４３８に問い合わせる。【０１６８】
上記実施例２によると、上記実施例１と同様な効果を得ることができる。
【実施例３】
【０１６９】
以下、実施例３を説明する。その際、実施例１及び２との相違点を主に説明し、実施例１及び２との共通点については説明を省略或いは簡略する。【０１７０】
図２５は、実施例３に係る計算機システムの構成を示す。【０１７１】
ＤＢサーバ４０１に、アプリケーションサーバ（以下、ＡＰサーバ）３１０２が通信ネットワーク３１１２を介して通信できるように接続されており、また、外部ストレージ装置４０２が、通信ネットワーク４０３を介して通信できるように接続されている。ＡＰサーバ３１０２に、通信ネットアーク３１１１を介してユーザ端末（クライアント端末）３１０１が通信できるように接続されている。ＤＢサーバ４０１は、ＤＢを管理するＤＢＭＳを実行する。外部ストレージ装置４０２は、ＤＢを格納する。ＡＰサーバ３１０２は、ＤＢサーバ４０１で実行されるＤＢＭＳにクエリを発行するＡＰを実行する。ユーザ端末３１０１は、ＡＰサーバ３１０２で実行されるＡＰに要求を出す。ユーザ端末３１０１、又は、ＡＰサーバ３１０２は、複数存在しても良い。【０１７２】
ＡＰサーバ３１０２、ＤＢサーバ４０１及び外部ストレージ装置４０２に、それぞれ、通信ネットワーク３１１４、３１１５及び３１１６をそれぞれ介してＡＰサーバ管理端末３１０３、ＤＢサーバ管理端末３１０４及びストレージ管理端末３１０５が接続されている。ＡＰサーバ管理端末３１０３は、ＡＰサーバ３１０２を管理する端末であり、ＤＢサーバ管理端末３１０４は、ＤＢサーバ４０１を管理する端末であり、ストレージ管理端末３１０５は、外部ストレージ装置４０２を管理する端末である。管理端末３１０３〜３１０５のうちの少なくとも２つが共通（一体）であっても良い。通信ネットワーク３１１１、３１１２、３１１４、３１１５、３１１６、４０３のうちの少なくとも２つが共通（一体）であっても良い。【０１７３】
実施例３では、下記の処理の流れが実行されて良い。
（Ｓ３１）ＡＰサーバ３１０２が、ユーザ端末３１０１から要求（以下、ユーザ要求）を受信する。
（Ｓ３２）ＡＰサーバ３１０２が、Ｓ３１で受信したユーザ要求に従いクエリを生成し、生成したクエリをＤＢサーバ４０１に発行する。
（Ｓ３３）ＤＢサーバ４０１が、ＡＰサーバ３１０２からのクエリを受け付け、そのクエリを実行し、そのクエリの実行に伴い、データ入出力要求（例えばデータ読出し要求）を外部ストレージ装置４０２に発行する。ＤＢサーバ４０１は、１つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、１つのクエリの実行において、Ｓ３３が複数回並行して行われることがある。
（Ｓ３４）ＤＢサーバ４０１が、クエリの実行において、外部ストレージ装置４０２からデータ入出力要求に対する応答を受ける。ＤＢサーバ４０１は、１つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、１つのクエリの実行において、Ｓ３４が複数回並行して行われることがある。
（Ｓ３５）ＤＢサーバ４０１が、クエリの実行結果をＡＰサーバ３１０２に送信する。
（Ｓ３６）ＡＰサーバ３１０２が、クエリの実行結果を受信し、その実行結果に従う、Ｓ３１で受信したユーザ要求に対する回答を、ユーザ端末３１０１に送信する。【０１７４】
なお、ＡＰサーバ３１０２へのユーザ要求、又は、ＤＢサーバへ発行されるクエリは同時に複数あっても良い。【０１７５】
以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０１７６】
例えば、上記実施例では、クエリ実行部４２３は、ＤＢオペレーションの条件に合致するデータのアドレスが１つの場合、タスクを新たに生成することなく同一のタスクを実行することでそのデータをＤＢ４５１から読み出すが、ＤＢオペレーションの条件に合致するデータのアドレスが１つの場合であっても、そのタスク（親タスク）を元に新たにタスク（子タスク）を生成し、子タスクを実行することで（子タスクにデータアドレスを割り当てることで）、そのデータをＤＢ４５１から読み出しても良い。【０１７７】
また、ＤＢ４５１は、ＤＢサーバ４０１におけるメモリ４１６以外の、メモリ４１６よりもアクセス速度が遅い記憶デバイス、例えばローカル記憶デバイス４１５に存在しても良い。
【符号の説明】
【０１７８】
４１２…データベース管理システム（ＤＢＭＳ）
【図１】
2013175609.tif 000003
【図２】
2013175609.tif 000004
【図３】
2013175609.tif 000005
【図４】
2013175609.tif 000006
【図５】
2013175609.tif 000007
【図６】
2013175609.tif 000008
【図７】
2013175609.tif 000009
【図８】
2013175609.tif 000010
【図９】
2013175609.tif 000011
【図１０】
2013175609.tif 000012
【図１１】
2013175609.tif 000013
【図１２】
2013175609.tif 000014
【図１３】
2013175609.tif 000015
【図１４】
2013175609.tif 000016
【図１５】
2013175609.tif 000017
【図１６】
2013175609.tif 000018
【図１７】
2013175609.tif 000019
【図１８】
2013175609.tif 000020
【図１９】
2013175609.tif 000021
【図２０】
2013175609.tif 000022
【図２１】
2013175609.tif 000023
【図２２】
2013175609.tif 000024
【図２３】
2013175609.tif 000025
【図２４】
2013175609.tif 000026
【図２５】
2013175609.tif 000027
【国際調査報告】
2013175609.tif 000028
2013175609.tif 000029
2013175609.tif 000030
2013175609.tif 000031