JP5858308B2 - データベース管理システム、計算機、データベース管理方法 - Google Patents
データベース管理システム、計算機、データベース管理方法 Download PDFInfo
- Publication number
- JP5858308B2 JP5858308B2 JP2014516587A JP2014516587A JP5858308B2 JP 5858308 B2 JP5858308 B2 JP 5858308B2 JP 2014516587 A JP2014516587 A JP 2014516587A JP 2014516587 A JP2014516587 A JP 2014516587A JP 5858308 B2 JP5858308 B2 JP 5858308B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- storage device
- page
- data
- start information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、データベース管理技術に関する。
企業活動において、大量に生じる業務データの活用は不可欠になっている。そのため、大量の業務データを蓄積したデータベース(以下、「DB」)を解析処理するシステムが既に考案されている。
この解析処理において、データベース管理システム(以下、「DBMS」)は、クエリを受け付け、DBを格納する記憶デバイスにデータ読出し要求を発行する。
1つのクエリの実行におけるデータ読出しの待ち時間の短縮化を図る技術として、特許文献1に開示の技術が知られている。特許文献1によれば、DBMSは、クエリを実行するために必要な複数のデータベースオペレーション(以下、「DBオペレーション」)を組合せたプラン(以下、「クエリ実行プラン」)を生成し、クエリ実行に要するデータ読出しの都度に前記DBオペレーションを実行するタスクを動的に生成し、前記タスクを並行実行することでデータ読出し要求を多重化する。
一方、DBMSにおいて、クエリ実行に要するデータ読出しの都度にタスクを動的に生成し並行実行するに際して、タスクにおいて実行する内容を示す情報であるタスク開始情報を生成するとともに、その時点で生成可能な数のタスクを生成し、前記生成したタスク開始情報に基づいて前記生成したタスクを実行する方法が考えられている。ここで、タスク開始情報は、例えば、コンテキストとデータアドレス集合とが関連づけられたものである。コンテキストは、例えば、新たに生成するタスクにおいて実行を開始するDBオペレーションが、クエリ実行プランが表す1以上のDBオペレーションのうちのいずれであるかに関する第1の情報と、その第1の情報が示すDBオペレーションに要するデータのアクセス先に関する第2の情報と、結果を生成するために必要な取得済みのデータに関する第3の情報とを含む情報である。ここで、クエリ実行プランとは、クエリを実行するために必要な1以上のDBオペレーションを表す情報を含む情報である。データアドレス集合とは、前記データのアクセス先に関する第2の情報に基づいて、DBMSが、生成したタスクを実行する際にアクセスするページを特定するための情報である。例えば、データアドレス集合は、DBのページに記憶されているデータであり、キーに対応する索引のページを特定する1以上のエントリの集合、又はキーに対応する表のレコードが格納されたページを特定する1以上のエントリの集合である。このDBMSは、タスクの実行開始時において、タスク開始情報を参照して読み出すべきページを特定し、当該ページを読み出し、当該読み出したページに記憶されているデータを用いてDBオペレーションを実行する。
DBMSは、タスクの実行開始時においてタスク開始情報を参照する際に、当該タスク開始情報のデータアドレス集合を参照する。DBMSは、ストレージ装置に格納されているページを参照する都度に、当該ページをDBMSが動作する計算機のメモリに読み出すが、一般にDBMSが動作する計算機のメモリの記憶容量は、DBが格納されているストレージ装置の記憶容量より小さい。そのため、メモリに同時に格納できるページは、ストレージ装置に格納されているページの一部に限られる。よって、DBMSがクエリを実行する際には、タスク開始情報が多数生成されるが、その全てのデータアドレス集合を記憶するページをメモリに格納することは困難である。
このような問題に対して、メモリの空き容量が不足し、データアドレス集合を記憶するページをメモリに格納できない場合に、メモリに格納されているページを一時的に計算機又はストレージ装置のディスクに追い出すことでメモリの空き容量を増加させる方法がある。この方法では、DBMSが、前記ディスクに追い出されたページを参照する際に、当該ページを再度メモリに読み込む必要がある。このように、一時的にページをディスクに追い出す方法を用いる場合には、DBMSがタスク開始情報を参照する際に、当該タスク開始情報のデータアドレス集合を記憶するページをメモリに読込むためのディスクアクセスが発生し、タスクの処理開始が遅れ、処理時間が伸びるという問題がある。特に、I/Oを多重化してDBオペレーションを実行する場合には、I/Oのレイテンシが大きくなるために、この問題による影響が大きくなる。
そこで、本発明の目的は、DBMSがタスク開始情報を参照する際に、ディスクに格納されているページの参照回数を低減することで、タスクの実行を効率的に行い、クエリ実行時間を短縮することである。
DBMSは、第1の記憶デバイスよりアクセス速度の遅い第2の記憶デバイスに存在するデータベースを管理する。
DBMSが、クエリ受付部と、クエリ実行プラン生成部と、クエリ実行部と、実行タスク管理部と、DBバッファ管理部とを有する。例えば、DBMSは、コンピュータプログラムであって、計算機で実行されることにより、クエリ受付部と、クエリ実行プラン生成部と、クエリ実行部と、実行タスク管理部と、DBバッファ管理部とを計算機に構築する。
クエリ受付部は、クエリを受け付ける。クエリ実行プラン生成部は、クエリを実行するために必要な1以上のDBオペレーションを表す情報を含むクエリ実行プランを生成する。実行タスク管理部は、クエリを実行するためのタスクを管理する。
クエリ実行部は、クエリの実行において、DBオペレーションを実行するためのタスクを動的に生成し、動的に生成されたタスクを実行する。具体的には、例えば、クエリ実行部は、クエリの実行において、(a)DBオペレーションを実行するためのタスクを生成すること、(b)生成されたタスクを実行することで、そのタスクに対応したDBオペレーションに必要なデータを読み出すためにDBへデータ読出し要求を発行すること、(c)上記(b)で実行されたタスクに対応したN番目のDBオペレーションの実行結果に基づき(N+1)番目のDBオペレーションを実行する場合には、その実行結果に基づくタスクを新たに生成すること(Nは1以上の整数)、及び、(d)その新たに生成したタスクについて上記(b)及び上記(c)を行うこと、を行い、上記(b)及び(d)において、2以上の実行可能なタスクが存在する場合には、それら2以上のタスクのうちの少なくとも二つのタスクを並行して実行するようになっている。このクエリ実行部の動作は、前述した特許文献1に開示の技術に従う動作で良い。
クエリ実行部は、クエリの実行において、タスクを新たに生成する場合に(例えば上記(a)又は(c)の場合に)、タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成し、管理する。クエリ実行部は、タスクを実行開始する場合に、データアドレス集合を記憶するページが前記第1の記憶デバイスに読込まれているタスク開始情報を、データアドレス集合を記憶するページが前記第2の記憶デバイスにのみ格納されているタスク開始情報より優先して選択し、当該タスク開始情報が示す内容をタスクで実行開始する。
DBバッファ管理部は、クエリの実行において、クエリ実行部により管理されるタスク開始情報の実行状態により、第1の記憶デバイスと第2の記憶デバイスとの間でのページの移動を制御する。
DBMSがタスク開始情報を参照する際に、ディスクに格納されているページの参照回数を低減することで、タスクの実行を効率的に行うことができ、故に、クエリ実行時間の短縮化が期待できる。
以下、図面を参照しながら、幾つかの実施例を説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明では、データベースを「DB」、データベース管理システムを「DBMS」、DBMSを実行するサーバを「DBサーバ」と言う。DBMSに対するクエリの発行元は、DBMSの外部のコンピュータプログラム(例えばアプリケーションプログラム)で良い。外部のコンピュータプログラムは、DBサーバ内で実行されるプログラムでも良いし、DBサーバに接続された装置(例えばクライアント計算機)で実行されるプログラムでも良い。
まず、本実施例の概要を説明する。
DBサーバは、DBMSを実行する。DBMSは、クエリを受け付け、受け付けたクエリを実行して、その実行により生成された結果をクエリの発行元に返す。クエリの結果を生成するまでには、DBMSは、1つ以上のDBオペレーションを実行する。DBMSは、それらDBオペレーションのうちの少なくとも1つのDBオペレーションの実行において、DBが格納された記憶デバイスに対して読出し要求の発行を要する場合がある。
例えば、DBMSは、図1乃至図3に示す表A、表B、及び表Cと、表A用の索引A、表B用の索引B、及び表C用の索引Cとを含んだDBを、記憶デバイス(例えば、DBサーバと通信できるように接続された外部ストレージ装置)に格納しているとする。表は、1つ以上のレコードの集合であり、レコードは、1つ以上のカラムから構成される。索引は、表の中の1つ以上のカラムを対象に作成されるデータ構造であり、当該索引が対象とするカラムを含む選択条件による表へのアクセスを高速化する。例えば、索引は、対象とするカラムの値毎にその値を含む表のレコードを特定する情報(レコードID)を保持するデータ構造であり、B木構造等が用いられる。
また、例えば、DBMSが受け付けたクエリは、図4に示すクエリであるとする。当該クエリは、カラムA_countryの値が「country5」であり且つカラムA_factory_sizeの値が50より大きい表Aのレコードと、カラムB_factory_idの値が表AのレコードにおけるカラムA_factory_idの値と一致し且つカラムB_product_priceの値が500より大きい表Bのレコードと、カラムC_product_idの値が表BのレコードにおけるカラムB_product_idの値と一致する表Cのレコードとを関連づける。そして、それらをカラムA_factory_name及びカラムB_product_nameの値でグループ化し、それぞれのグループについてカラムA_factory_nameの値と、B_Product_nameの値と、カラムC_countの値の合計値とを抽出するクエリである。
DBMSは、このようなクエリを実行するために、図5に示すようなクエリ実行プランを生成する。クエリ実行プランは、例えば、データ読出しを伴う1つ以上のDBオペレーションで構成され、DBオペレーションの実行順序には木構造の順序関係が存在する。DBMSは、クエリ実行プランに基づいて、索引Aを用いて、表Aより、カラムA_countryの値がクエリの指定値(図4のクエリでは、country5)であるレコードを読出し、当該レコードのうちカラムA_factory_sizeの値がクエリの指定値(図4のクエリでは、50)より大きいレコードにおけるカラムA_factory_nameの値とカラムA_factory_idの値とを抽出する。更に、索引Bを用いて、表Bより、カラムB_factory_idの値が前記抽出したA_factory_idの値と一致するレコードを読出し、当該レコードのうちカラムB_product_priceの値がクエリの指定値(図4のクエリでは、500)より大きいレコードにおけるカラムB_product_nameの値とカラムB_product_idの値とを抽出する。更に、索引Cを用いて、表Cより、カラムC_product_idの値が前記抽出したカラムB_product_idの値と一致するレコードを読出し、当該レコードについて、カラムC_countの値を抽出し、前記抽出したカラムA_factory_name及びカラムB_product_nameの値に基づいてグループ化し、それぞれのグループにおけるカラムC_countの値の合計値を算出する。DBMSは、クエリ実行の結果として、前記グループ毎に、カラムA_factory_nameの値、カラムB_product_nameの値、及び算出したカラムC_countの合計値を、クエリ実行結果として生成する。
例えば、DBMSは、下記の処理、
(S1)索引Aを用いて、カラムA_countryの値がクエリの指定値である表Aのレコードに対応したレコードIDの集合を検索する、
(S2)S1で見つかったレコードID集合を用いて、表Aの該当するレコードを含むデータをフェッチし、カラムA_factory_sizeの値がクエリの指定値である50より大きいレコードの、カラムA_factory_nameの値とカラムA_factory_idの値とを抽出する、
(S3)索引Bを用いて、カラムB_factory_idの値がS2で抽出したカラムA_factory_idの値と一致する表BのレコードのレコードID集合を検索する、
(S4)S3で見つかったレコードID集合を用いて、表Bの該当するレコードを含むデータをフェッチし、カラムB_product_priceの値がクエリの指定値である500より大きいレコードの、カラムB_product_idとカラムB_product_nameの値とを抽出する、
(S5)索引Cを用いて、カラムC_product_idの値がS4で抽出したカラムB_product_idの値と一致する表CのレコードのレコードID集合を検索する、
(S6)S5で見つかったレコードID集合を用いて、表Cの該当するレコードを含むデータをフェッチし、該当するレコードのカラムC_countの値を抽出する、
(S7)カラムC_countの値を、抽出したカラムA_factory_nameの値及びカラムB_product_nameの値でグループ化して、各グループにおけるカラムC_countの値の合計値を算出する、
(S8)クエリ実行結果として、抽出したカラムA_factory_nameの値、カラムB_product_nameの値、及びS7で算出したカラムC_countの値の合計値を生成し、クエリ発行元に返す、
を行う。
(S1)索引Aを用いて、カラムA_countryの値がクエリの指定値である表Aのレコードに対応したレコードIDの集合を検索する、
(S2)S1で見つかったレコードID集合を用いて、表Aの該当するレコードを含むデータをフェッチし、カラムA_factory_sizeの値がクエリの指定値である50より大きいレコードの、カラムA_factory_nameの値とカラムA_factory_idの値とを抽出する、
(S3)索引Bを用いて、カラムB_factory_idの値がS2で抽出したカラムA_factory_idの値と一致する表BのレコードのレコードID集合を検索する、
(S4)S3で見つかったレコードID集合を用いて、表Bの該当するレコードを含むデータをフェッチし、カラムB_product_priceの値がクエリの指定値である500より大きいレコードの、カラムB_product_idとカラムB_product_nameの値とを抽出する、
(S5)索引Cを用いて、カラムC_product_idの値がS4で抽出したカラムB_product_idの値と一致する表CのレコードのレコードID集合を検索する、
(S6)S5で見つかったレコードID集合を用いて、表Cの該当するレコードを含むデータをフェッチし、該当するレコードのカラムC_countの値を抽出する、
(S7)カラムC_countの値を、抽出したカラムA_factory_nameの値及びカラムB_product_nameの値でグループ化して、各グループにおけるカラムC_countの値の合計値を算出する、
(S8)クエリ実行結果として、抽出したカラムA_factory_nameの値、カラムB_product_nameの値、及びS7で算出したカラムC_countの値の合計値を生成し、クエリ発行元に返す、
を行う。
図6は、実施例1に係るクエリ実行時のページに対するアクセス例を示す。
図6は、図5に示すクエリ実行プランに従ってDBMSがクエリを実行する際の、DBの索引及び表のページに対するアクセス例を示す。ここで、ページとは、DBMSにおけるデータ管理の単位であり、DBMSによるDBからのデータ読込み及びDBへのデータ書込みは、ページ単位で実施される。ページは、例えば、索引における下位のページを特定する情報(ページID)を含む1以上のエントリ、又は対応する表のレコードを特定する情報(レコードID)を含む1以上のエントリを格納する。なお、レコードを特定する情報は、当該レコードが格納されているページを特定する情報を含む。
図5に示すクエリ実行プランによるクエリの実行時には、まず、DBMSは、ページa11にアクセスする。DBMSは、ページa11のエントリに基づいて、その下位のページa21乃至a25にアクセスする。
DBMSは、ページa21のエントリに基づいて、表AのページA1にアクセスし、ページa22のエントリに基づいて、表AのページA2及びページA3にアクセスし、ページa23のエントリに基づいて、表AのページA4及びページA5にアクセスし、ページa24のエントリに基づいて、表AのページA6にアクセスし、ページa25のエントリに基づいて、表AのページA7にアクセスする。
また、DBMSは、ページA1に格納されたレコードに基づいて、索引Bのページb11にアクセスし、ページA3に格納されたレコードに基づいて、索引Bのページb11にアクセスし、ページA4に格納されたレコードに基づいて、索引Bのページb11にアクセスし、ページA5に格納されたレコードに基づいて、索引Bのページb11にアクセスする。なお、ページA2のように、索引Bのページへのアクセスに利用されていないものは、クエリで指定された条件に合致するレコードが格納されていないことを示している。
また、DBMSは、ページA1に格納されたレコードと索引Bのページb11のエントリに基づいてページb21にアクセスし、ページA3に格納されたレコードとページb11のエントリに基づいてページb22にアクセスし、ページA4に格納されたレコードとページb11のエントリに基づいてページb23にアクセスし、ページA5に格納されたレコードとページb11のエントリに基づいてページb24にアクセスする。
また、DBMSは、ページA4に格納されたレコードと索引Bのページb23のエントリに基づいて、表BのページB1乃至B3にアクセスする。DBMSは、表BのページB1に格納されたレコードに基づいて、索引Cのページc11にアクセスする。また、DBMSは、ページB1に格納されたレコードと索引Cのページc11のエントリに基づいてページc21にアクセスし、ページB1に格納されたレコードとページc21のエントリに基づいてページc31にアクセスする。また、DBMSは、ページB1に格納されたレコードと索引Cのページc31のエントリに基づいて、表CのページC1にアクセスする。
図7は、実施例1に係るタスク開始情報を説明するための図である。
DBMSは、タスクの実行を開始する際に、タスク開始情報TSを参照して、実行するDBオペレーションでアクセスするページを特定する。
タスク開始情報TSは、タスクにおいて実行を行う内容を示す情報である。例えば、タスク開始情報は、コンテキストCTXとデータアドレス集合AGとが関連づけられたものである。コンテキストCTXは、例えば、新たに生成するタスクにおいて実行を開始するDBオペレーションが、クエリ実行プランが表す1以上のDBオペレーションのうちのいずれであるかに関する第1の情報と、その第1の情報が示すDBオペレーションに要するデータのアクセス先に関する第2の情報と、結果を生成するために必要な取得済みのデータに関する第3の情報とを含む情報である。データアドレス集合AGとは、前記データのアクセス先に関する第2の情報に基づいて、DBMSが、生成したタスクを実行する際にアクセスするページを特定するための情報である。例えば、データアドレス集合AGは、DB451のページに記憶されているデータであり、キーに対応する索引のページを特定する1以上のエントリの集合、又はキーに対応する表のレコードが格納されたページを特定する1以上のエントリの集合である。
外部ストレージ装置402の記憶デバイス群443のページは、アクセスされる都度に、DBMS412によって記憶デバイス群443からDBバッファ436に読み出される。DBバッファ436の記憶容量の大きさはメモリ416の記憶容量の大きさより小さく、一般にメモリ416の記憶容量の大きさは記憶デバイス群443の記憶容量の大きさより小さい。そのため、DBバッファ436に同時に格納することのできるページは、記憶デバイス群443に格納できるページの一部である。同図においては、例えば、タスク開始情報1のデータアドレス集合AGが記憶されているページと、タスク開始情報3のデータアドレス集合AGが記憶されているページとは、記憶デバイス群443からDBバッファ436に読み出されて格納されており、タスク開始情報2のデータアドレス集合AGが記憶されているページは、DBバッファ436に格納されておらず、記憶デバイス群443にのみ格納されている。
コンテキストCTXは、データアドレス集合AGが記憶されているページを特定する情報(例えば、ページID)、データアドレス集合AGのエントリのうち次に実行開始されるタスクによってアクセスするべきエントリを示す情報、さらにタスク実行によりアクセスするべきエントリの残数(タスク生成可能数)を格納する。コンテキストCTXは、クエリ実行部423のコンテキスト管理部432により管理される。
図8は、DBMSによる、クエリ実行時のタスクの実行及びタスク開始情報の管理を説明するための模式図の一例である。図8は、図6に示すアクセス例におけるタスクの実行及びタスク開始情報の管理を示す。なお、図8の表記は、次のルールに従う。
(*)横軸は、時刻を表す。
(*)図上部の横に長い五角形は、1つのタスクによる一連のDBオペレーションを意味する。五角形の左端はタスクによりDBオペレーションを開始する時刻を表し、五角形の右端は当該タスクによるDBオペレーションを終了する時刻を表す。
(*)図上部の五角形の内部の値は、タスクがDBオペレーションの実行に伴いアクセスする索引のページを示す情報(例えば、ページID)、又は、表のレコードを示す情報(例えば、レコードID)を表す。
(*)同時に実行可能なタスク数は、「3」とする。
(*)図中のひし形は、タスク開始情報TSのデータアドレス集合AGを表す。ひし形の中の数字は、当該タスク開始情報TSのコンテキストCTXに含まれるタスク生成可能数を表す。なお、図上部の五角形内のひし形の位置は、当該データアドレス集合AGを含むタスク開始情報TSが生成された時点を示す。
(*)図中部のDBバッファ436内におけるひし形に続く太い実線は、データアドレス集合AGを記憶するページがDBバッファ436に格納されていることを示し、太い破線は、データアドレス集合AGを記憶するページがDBバッファ436に格納されていないことを示す。
(*)DBバッファ436に同時に格納可能なページ数の上限数は、「2」とする。
(*)DBバッファ436から記憶デバイス群443への破線矢印は、DBバッファ436から記憶デバイス群443へのページの追い出しを示し、記憶デバイス群443からDBバッファ436への破線矢印は、記憶デバイス群443からDBバッファ436へのページの読込みを示す。なお、追い出し対象のページが、ダーティページ(記憶デバイス群443に格納されているページのデータと異なるデータが格納されているページ)でない場合には、DBMSは、そのページを、記憶デバイス群443に移動させずに、DBバッファから削除するだけでも良い。
(*)記憶デバイス群443のアクセス速度は、DBバッファ436を保持するメモリ416のアクセス速度よりも遅い。なお、アクセス速度が速い/遅いとは、単位時間当たりに入出力されるデータの量が多い/少ないであっても良いし、アクセス元(DBMS)からがアクセス要求が発行されてからそのアクセス要求に対するレスポンスがアクセス元(DBMS)へ戻るまでのレスポンスタイムの短い/遅いで良い。従って、例えば、メモリ416が、不揮発性半導体メモリであって、記憶デバイス群443を構成する各記憶デバイスも、同じアクセス速度の不揮発性半導体メモリであったとしても、記憶デバイス群443が、外部のストレージ装置に存在する場合には、ネットワーク転送速度が影響するので、記憶デバイス群443のアクセス速度は、メモリ416のアクセス速度よりも遅い。
(*)横軸は、時刻を表す。
(*)図上部の横に長い五角形は、1つのタスクによる一連のDBオペレーションを意味する。五角形の左端はタスクによりDBオペレーションを開始する時刻を表し、五角形の右端は当該タスクによるDBオペレーションを終了する時刻を表す。
(*)図上部の五角形の内部の値は、タスクがDBオペレーションの実行に伴いアクセスする索引のページを示す情報(例えば、ページID)、又は、表のレコードを示す情報(例えば、レコードID)を表す。
(*)同時に実行可能なタスク数は、「3」とする。
(*)図中のひし形は、タスク開始情報TSのデータアドレス集合AGを表す。ひし形の中の数字は、当該タスク開始情報TSのコンテキストCTXに含まれるタスク生成可能数を表す。なお、図上部の五角形内のひし形の位置は、当該データアドレス集合AGを含むタスク開始情報TSが生成された時点を示す。
(*)図中部のDBバッファ436内におけるひし形に続く太い実線は、データアドレス集合AGを記憶するページがDBバッファ436に格納されていることを示し、太い破線は、データアドレス集合AGを記憶するページがDBバッファ436に格納されていないことを示す。
(*)DBバッファ436に同時に格納可能なページ数の上限数は、「2」とする。
(*)DBバッファ436から記憶デバイス群443への破線矢印は、DBバッファ436から記憶デバイス群443へのページの追い出しを示し、記憶デバイス群443からDBバッファ436への破線矢印は、記憶デバイス群443からDBバッファ436へのページの読込みを示す。なお、追い出し対象のページが、ダーティページ(記憶デバイス群443に格納されているページのデータと異なるデータが格納されているページ)でない場合には、DBMSは、そのページを、記憶デバイス群443に移動させずに、DBバッファから削除するだけでも良い。
(*)記憶デバイス群443のアクセス速度は、DBバッファ436を保持するメモリ416のアクセス速度よりも遅い。なお、アクセス速度が速い/遅いとは、単位時間当たりに入出力されるデータの量が多い/少ないであっても良いし、アクセス元(DBMS)からがアクセス要求が発行されてからそのアクセス要求に対するレスポンスがアクセス元(DBMS)へ戻るまでのレスポンスタイムの短い/遅いで良い。従って、例えば、メモリ416が、不揮発性半導体メモリであって、記憶デバイス群443を構成する各記憶デバイスも、同じアクセス速度の不揮発性半導体メモリであったとしても、記憶デバイス群443が、外部のストレージ装置に存在する場合には、ネットワーク転送速度が影響するので、記憶デバイス群443のアクセス速度は、メモリ416のアクセス速度よりも遅い。
(t0)
DBMSは、タスク10Aを生成し、タスク10Aの実行により、記憶デバイス群443上の索引Aのページa11にアクセスする。なお、ページにアクセスする際は、アクセス対象ページがDBバッファ436に格納されている場合は、当該DBバッファ436に格納されているページを参照し、アクセス対象ページがDBバッファ436に格納されていない場合は、ページを記憶デバイス群443からDBバッファ436へ読込み、DBバッファ436に格納されたページを参照する。
DBMSは、タスク10Aを生成し、タスク10Aの実行により、記憶デバイス群443上の索引Aのページa11にアクセスする。なお、ページにアクセスする際は、アクセス対象ページがDBバッファ436に格納されている場合は、当該DBバッファ436に格納されているページを参照し、アクセス対象ページがDBバッファ436に格納されていない場合は、ページを記憶デバイス群443からDBバッファ436へ読込み、DBバッファ436に格納されたページを参照する。
(t1)
DBMSは、タスク10Aの実行により、クエリの指定値とページa11のエントリに基づいて、アクセスすべき下位ページがa21〜a25であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページa21〜a25のアドレスが格納されているページa11をデータアドレス集合11Aとして前記生成したコンテキストと関連付ける。DBバッファに同時に格納可能なページ数の上限は2であり、この時点でアクセスされるページ数は1であるので、データアドレス集合11AはDBバッファ上にある。また、前記コンテキストについて、次にアクセスすべきエントリをa22に設定し、タスク生成可能数を4に設定する。これにより、データアドレス集合11Aとそのデータアドレス集合11Aに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。
続いて、DBMSは、タスク10Aの実行により、ページa21にアクセスする。
また、実行可能な同時タスク数は「3」であり、実行中タスクの数は「1」である(タスク10Aのみが実行中である)ため、生成可能なタスクの数は、「3」から「1」を減算した「2」であるので、DBMSは、2つのタスク10B及び10Cを生成する。
また、DBMSは、タスク10Bの実行により、タスク開始情報を参照してタスクを1つ実行開始する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa22であることを特定し、前記次にアクセスすべきエントリを次のページであるa23に変更する。そして、タスク生成可能数を1減算して3に変更し、データアドレス集合11Aを参照して前記ページa22のアドレスを取得し、取得したアドレスに基づいてページa22にアクセスする。
また、DBMSは、タスク10Cの実行により、タスク開始情報を参照してタスクを1つ実行開始する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa23であることを特定し、前記次にアクセスすべきエントリを次のページであるa24に変更する。そして、タスク生成可能数を1減算して2に変更し、データアドレス集合11Aを参照して前記ページa23のアドレスを取得し、前記取得したアドレスに基づいてページa23にアクセスする。
DBMSは、タスク10Aの実行により、クエリの指定値とページa11のエントリに基づいて、アクセスすべき下位ページがa21〜a25であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページa21〜a25のアドレスが格納されているページa11をデータアドレス集合11Aとして前記生成したコンテキストと関連付ける。DBバッファに同時に格納可能なページ数の上限は2であり、この時点でアクセスされるページ数は1であるので、データアドレス集合11AはDBバッファ上にある。また、前記コンテキストについて、次にアクセスすべきエントリをa22に設定し、タスク生成可能数を4に設定する。これにより、データアドレス集合11Aとそのデータアドレス集合11Aに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。
続いて、DBMSは、タスク10Aの実行により、ページa21にアクセスする。
また、実行可能な同時タスク数は「3」であり、実行中タスクの数は「1」である(タスク10Aのみが実行中である)ため、生成可能なタスクの数は、「3」から「1」を減算した「2」であるので、DBMSは、2つのタスク10B及び10Cを生成する。
また、DBMSは、タスク10Bの実行により、タスク開始情報を参照してタスクを1つ実行開始する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa22であることを特定し、前記次にアクセスすべきエントリを次のページであるa23に変更する。そして、タスク生成可能数を1減算して3に変更し、データアドレス集合11Aを参照して前記ページa22のアドレスを取得し、取得したアドレスに基づいてページa22にアクセスする。
また、DBMSは、タスク10Cの実行により、タスク開始情報を参照してタスクを1つ実行開始する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa23であることを特定し、前記次にアクセスすべきエントリを次のページであるa24に変更する。そして、タスク生成可能数を1減算して2に変更し、データアドレス集合11Aを参照して前記ページa23のアドレスを取得し、前記取得したアドレスに基づいてページa23にアクセスする。
(t2)
DBMSは、タスク10Aの実行により、クエリの指定値とページa21のエントリに基づいて、アクセスすべきレコードがA1であることを特定し、ページa21を参照して前記レコードA1のアドレスを取得し、前記取得したアドレスに基づいてページA1にアクセスする。
また、DBMSは、タスク10Bの実行により、クエリの指定値とページa22のエントリに基づいて、アクセスすべきレコードA2とA3とを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページA2とA3のアドレスが格納されているページa22をデータアドレス集合11Bとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをA3に設定し、タスク生成可能数を1に設定する。これにより、データアドレス集合11Bとそのデータアドレス集合11Bに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク10Bの実行により、ページA2にアクセスする。
また、DBMSは、タスク10Cの実行により、クエリの指定値とページa23のエントリに基づいて、アクセスすべきレコードA4とA5とを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページA4とA5のアドレスが格納されているページa23をデータアドレス集合11Cとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをA5に設定し、タスク生成可能数を1に設定する。これにより、データアドレス集合11Cとそのデータアドレス集合11Cに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク10Cの実行により、ページA4にアクセスする。
DBMSは、データアドレス集合11Bを記憶するページと、データアドレス集合11Cを記憶するページとをDBバッファ436に格納することとなるが、DBバッファ436に同時に格納可能なページの数は、「2」である。このため、DBMSは、データアドレス集合11B及び11Cを記憶するページのうちの少なくとも1つをDBバッファ436に格納する前に、DBバッファ436上の最も古いデータアドレス集合(DBバッファ436に格納されているデータアドレス集合のうち最初にDBバッファ436に格納されたデータアドレス集合)11Aを記憶するページを、記憶デバイス群443に追い出す。なお、t1においてアクセスされたページa21もバッファに格納されるため上記挙動に影響を与え得る。図8では本発明の要点を簡潔に説明するため、ページa21は一時的にDBバッファに格納され、A1を特定した後はすぐに記憶デバイス群443に追い出されると仮定して説明を行うが、後述の通り、本発明はこの仮定に限定されるものではない。
DBMSは、タスク10Aの実行により、クエリの指定値とページa21のエントリに基づいて、アクセスすべきレコードがA1であることを特定し、ページa21を参照して前記レコードA1のアドレスを取得し、前記取得したアドレスに基づいてページA1にアクセスする。
また、DBMSは、タスク10Bの実行により、クエリの指定値とページa22のエントリに基づいて、アクセスすべきレコードA2とA3とを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページA2とA3のアドレスが格納されているページa22をデータアドレス集合11Bとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをA3に設定し、タスク生成可能数を1に設定する。これにより、データアドレス集合11Bとそのデータアドレス集合11Bに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク10Bの実行により、ページA2にアクセスする。
また、DBMSは、タスク10Cの実行により、クエリの指定値とページa23のエントリに基づいて、アクセスすべきレコードA4とA5とを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページA4とA5のアドレスが格納されているページa23をデータアドレス集合11Cとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをA5に設定し、タスク生成可能数を1に設定する。これにより、データアドレス集合11Cとそのデータアドレス集合11Cに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク10Cの実行により、ページA4にアクセスする。
DBMSは、データアドレス集合11Bを記憶するページと、データアドレス集合11Cを記憶するページとをDBバッファ436に格納することとなるが、DBバッファ436に同時に格納可能なページの数は、「2」である。このため、DBMSは、データアドレス集合11B及び11Cを記憶するページのうちの少なくとも1つをDBバッファ436に格納する前に、DBバッファ436上の最も古いデータアドレス集合(DBバッファ436に格納されているデータアドレス集合のうち最初にDBバッファ436に格納されたデータアドレス集合)11Aを記憶するページを、記憶デバイス群443に追い出す。なお、t1においてアクセスされたページa21もバッファに格納されるため上記挙動に影響を与え得る。図8では本発明の要点を簡潔に説明するため、ページa21は一時的にDBバッファに格納され、A1を特定した後はすぐに記憶デバイス群443に追い出されると仮定して説明を行うが、後述の通り、本発明はこの仮定に限定されるものではない。
(t3)
DBMSは、タスク10Aの実行により、レコードA1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク10Bの実行により、レコードA2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、最初に生成されたタスク開始情報(データアドレス集合11Aとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa24であることを特定し、前記次にアクセスすべきエントリを次のページであるa25に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合11Aを参照して前記ページa24のアドレスを取得しようと試みる。しかし、t2においてデータアドレス集合11Aは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Aを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Bは、データアドレス集合11Aを記憶するページがメモリ416に読込まれるのを待つ。ここで、DBMSは、データアドレス集合11Aを記憶するページをDBバッファ436に読込むと、DBバッファ436に格納されるページの数が、格納可能な数「3」を超えてしまうので、DBバッファ436の最も古いデータアドレス集合11Bを記憶するページを、記憶デバイス群443に追い出す。
また、DBMSは、タスク10Cの実行により、レコードA4がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
DBMSは、タスク10Aの実行により、レコードA1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク10Bの実行により、レコードA2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、最初に生成されたタスク開始情報(データアドレス集合11Aとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa24であることを特定し、前記次にアクセスすべきエントリを次のページであるa25に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合11Aを参照して前記ページa24のアドレスを取得しようと試みる。しかし、t2においてデータアドレス集合11Aは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Aを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Bは、データアドレス集合11Aを記憶するページがメモリ416に読込まれるのを待つ。ここで、DBMSは、データアドレス集合11Aを記憶するページをDBバッファ436に読込むと、DBバッファ436に格納されるページの数が、格納可能な数「3」を超えてしまうので、DBバッファ436の最も古いデータアドレス集合11Bを記憶するページを、記憶デバイス群443に追い出す。
また、DBMSは、タスク10Cの実行により、レコードA4がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
(t4)
DBMSは、タスク10Aの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb21であることを特定し、ページb11を参照してページb21のアドレスを取得し、前記取得したアドレスに基づいてページb21にアクセスする。
また、DBMSは、タスク10Bの実行により、t3で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Aを参照してページa24のアドレスを取得し、前記取得したアドレスに基づいてページa24にアクセスする。
また、DBMSは、タスク10Cの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb23であることを特定し、ページb11を参照してページb23のアドレスを取得し、前記取得したアドレスに基づいてページb23にアクセスする。
DBMSは、タスク10Aの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb21であることを特定し、ページb11を参照してページb21のアドレスを取得し、前記取得したアドレスに基づいてページb21にアクセスする。
また、DBMSは、タスク10Bの実行により、t3で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Aを参照してページa24のアドレスを取得し、前記取得したアドレスに基づいてページa24にアクセスする。
また、DBMSは、タスク10Cの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb23であることを特定し、ページb11を参照してページb23のアドレスを取得し、前記取得したアドレスに基づいてページb23にアクセスする。
(t5)
DBMSは、タスク10Aの実行により、t3で特定した索引Bの検索条件とページb21のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、最初に生成されたタスク開始情報(データアドレス集合11Aとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa25であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Aを参照して前記ページa25のアドレスを取得し、当該タスク開始情報を消去し、前記取得したアドレスに基づいてページa25にアクセスする。
また、DBMSは、タスク10Bの実行により、クエリの指定値とページa24のエントリに基づいて、アクセスすべきレコードがA6であることを特定し、ページa24を参照して前記レコードA6のアドレスを取得し、前記取得したアドレスに基づいてページA6にアクセスする。
また、DBMSは、タスク10Cの実行により、t3で特定した索引Bの検索条件とページb23のエントリに基づいて、アクセスすべきレコードがB1〜B3であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページB1〜B3のアドレスが格納されているページb23をデータアドレス集合11Dとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをB2に設定し、タスク生成可能数を2に設定する。これにより、データアドレス集合11Dとそのデータアドレス集合11Dに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク10Cの実行により、ページB1にアクセスする。
ここで、DBMSは、データアドレス集合11Dを記憶するページをDBバッファ436に格納することとなるが、DBバッファ436には、その時点には、データアドレス集合11A及び11Cを記憶するページが格納されており、DBバッファ436に格納可能なページの数は、「2」である。このため、DBMSは、データアドレス集合11Dを記憶するページをDBバッファ436に格納する前に、DBバッファ436上の参照されていない最も古いデータアドレス集合11Cを記憶するページを、記憶デバイス群443に追い出す。
DBMSは、タスク10Aの実行により、t3で特定した索引Bの検索条件とページb21のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、最初に生成されたタスク開始情報(データアドレス集合11Aとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Aと関連づけられたコンテキストを参照して次にアクセスすべきエントリがa25であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Aを参照して前記ページa25のアドレスを取得し、当該タスク開始情報を消去し、前記取得したアドレスに基づいてページa25にアクセスする。
また、DBMSは、タスク10Bの実行により、クエリの指定値とページa24のエントリに基づいて、アクセスすべきレコードがA6であることを特定し、ページa24を参照して前記レコードA6のアドレスを取得し、前記取得したアドレスに基づいてページA6にアクセスする。
また、DBMSは、タスク10Cの実行により、t3で特定した索引Bの検索条件とページb23のエントリに基づいて、アクセスすべきレコードがB1〜B3であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページB1〜B3のアドレスが格納されているページb23をデータアドレス集合11Dとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをB2に設定し、タスク生成可能数を2に設定する。これにより、データアドレス集合11Dとそのデータアドレス集合11Dに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク10Cの実行により、ページB1にアクセスする。
ここで、DBMSは、データアドレス集合11Dを記憶するページをDBバッファ436に格納することとなるが、DBバッファ436には、その時点には、データアドレス集合11A及び11Cを記憶するページが格納されており、DBバッファ436に格納可能なページの数は、「2」である。このため、DBMSは、データアドレス集合11Dを記憶するページをDBバッファ436に格納する前に、DBバッファ436上の参照されていない最も古いデータアドレス集合11Cを記憶するページを、記憶デバイス群443に追い出す。
(t6)
DBMSは、タスク10Aの実行により、クエリの指定値とページa25のエントリに基づいて、アクセスすべきレコードがA7であることを特定し、ページa25を参照して前記レコードA7のアドレスを取得し、前記取得したアドレスに基づいてページA7にアクセスする。
また、DBMSは、タスク10Bの実行により、レコードA6がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Bとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Bと関連づけられたコンテキストを参照して次にアクセスすべきエントリがA3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Bを参照して前記ページA3のアドレスを取得しようと試みる。しかし、t3においてデータアドレス集合11Bを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Bを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Bは、データアドレス集合11Bを記憶するページがDBバッファ436に読込まれるのを待つ。
また、DBMSは、タスク10Cの実行により、レコードB1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Cの検索条件を特定し、索引Cのページc11にアクセスする。
DBMSは、タスク10Aの実行により、クエリの指定値とページa25のエントリに基づいて、アクセスすべきレコードがA7であることを特定し、ページa25を参照して前記レコードA7のアドレスを取得し、前記取得したアドレスに基づいてページA7にアクセスする。
また、DBMSは、タスク10Bの実行により、レコードA6がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Bとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Bと関連づけられたコンテキストを参照して次にアクセスすべきエントリがA3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Bを参照して前記ページA3のアドレスを取得しようと試みる。しかし、t3においてデータアドレス集合11Bを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Bを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Bは、データアドレス集合11Bを記憶するページがDBバッファ436に読込まれるのを待つ。
また、DBMSは、タスク10Cの実行により、レコードB1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Cの検索条件を特定し、索引Cのページc11にアクセスする。
(t7)
DBMSは、タスク10Aの実行により、レコードA7がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Cとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Cと関連づけられたコンテキストを参照して次にアクセスすべきエントリがA5であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Cを参照して前記ページA5のアドレスを取得しようと試みる。しかし、t5においてデータアドレス集合11Cを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Cを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Aは、データアドレス集合11Cを記憶するページがDBバッファ436に読込まれるのを待つ。ここで、DBMSは、データアドレス集合11Cを記憶するページをDBバッファ436に読込むこととなるが、DBバッファ436には、その時点には、データアドレス集合11B及び11Dを記憶するページが格納されており、DBバッファ436に格納可能なページの数は、「2」である。このため、DBMSは、DBバッファ436上の参照されていない最も古いデータアドレス集合11Dを記憶するページを、記憶デバイス群443に追い出す。
また、DBMSは、タスク10Bの実行により、t6で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Bを参照してページA3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA3にアクセスする。
また、DBMSは、タスク10Cの実行により、t6で特定した索引Cの検索条件とページc11のエントリに基づいて、アクセスすべき下位ページがc21であることを特定し、ページc11を参照してページc21のアドレスを取得し、前記取得したアドレスに基づいてページc21にアクセスする。
DBMSは、タスク10Aの実行により、レコードA7がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Cとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Cと関連づけられたコンテキストを参照して次にアクセスすべきエントリがA5であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Cを参照して前記ページA5のアドレスを取得しようと試みる。しかし、t5においてデータアドレス集合11Cを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Cを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Aは、データアドレス集合11Cを記憶するページがDBバッファ436に読込まれるのを待つ。ここで、DBMSは、データアドレス集合11Cを記憶するページをDBバッファ436に読込むこととなるが、DBバッファ436には、その時点には、データアドレス集合11B及び11Dを記憶するページが格納されており、DBバッファ436に格納可能なページの数は、「2」である。このため、DBMSは、DBバッファ436上の参照されていない最も古いデータアドレス集合11Dを記憶するページを、記憶デバイス群443に追い出す。
また、DBMSは、タスク10Bの実行により、t6で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Bを参照してページA3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA3にアクセスする。
また、DBMSは、タスク10Cの実行により、t6で特定した索引Cの検索条件とページc11のエントリに基づいて、アクセスすべき下位ページがc21であることを特定し、ページc11を参照してページc21のアドレスを取得し、前記取得したアドレスに基づいてページc21にアクセスする。
(t8)
DBMSは、タスク10Aの実行により、t7で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Cを参照してページA5のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA5にアクセスする。
また、DBMSは、タスク10Bの実行により、レコードA3がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク10Cの実行により、t6で特定した索引Cの検索条件とページc21のエントリに基づいて、アクセスすべき下位ページがc31であることを特定し、ページc21を参照してページc31のアドレスを取得し、前記取得したアドレスに基づいてページc31にアクセスする。
DBMSは、タスク10Aの実行により、t7で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Cを参照してページA5のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA5にアクセスする。
また、DBMSは、タスク10Bの実行により、レコードA3がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク10Cの実行により、t6で特定した索引Cの検索条件とページc21のエントリに基づいて、アクセスすべき下位ページがc31であることを特定し、ページc21を参照してページc31のアドレスを取得し、前記取得したアドレスに基づいてページc31にアクセスする。
(t9)
DBMSは、タスク10Aの実行により、レコードA5がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク10Bの実行により、t8で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb22であることを特定し、ページb11を参照してページb22のアドレスを取得し、前記取得したアドレスに基づいてページb22にアクセスする。
また、DBMSは、タスク10Cの実行により、t6で特定した索引Cの検索条件とページc31のエントリに基づいて、アクセスすべきレコードがC1であることを特定し、ページc31を参照して前記レコードC1のアドレスを取得し、前記取得したアドレスに基づいてページC1にアクセスする。
DBMSは、タスク10Aの実行により、レコードA5がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク10Bの実行により、t8で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb22であることを特定し、ページb11を参照してページb22のアドレスを取得し、前記取得したアドレスに基づいてページb22にアクセスする。
また、DBMSは、タスク10Cの実行により、t6で特定した索引Cの検索条件とページc31のエントリに基づいて、アクセスすべきレコードがC1であることを特定し、ページc31を参照して前記レコードC1のアドレスを取得し、前記取得したアドレスに基づいてページC1にアクセスする。
(t10)
DBMSは、タスク10Aの実行により、t9で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb24であることを特定し、ページb11を参照してページb24のアドレスを取得し、前記取得したアドレスに基づいてページb24にアクセスする。
また、DBMSは、タスク10Bの実行により、t8で特定した索引Bの検索条件とページb22のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Dとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Dと関連づけられたコンテキストを参照して次にアクセスすべきエントリがB2であることを特定し、前記次にアクセスすべきエントリを次のページであるB3に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合11Dを参照して前記ページB2のアドレスを取得しようと試みる。しかし、t7においてデータアドレス集合11Dを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Dを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Bは、データアドレス集合11Dを記憶するページがDBバッファ436に読込まれるのを待つ。
また、DBMSは、タスク10Cの実行により、レコードC1がクエリで指定された条件を満たすことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Dとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Dと関連づけられたコンテキストを参照して次にアクセスすべきエントリがB3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Dを参照して前記ページB3のアドレスを取得しようと試みる。しかし、t7においてデータアドレス集合11Dを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Dを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Cは、データアドレス集合11Dを記憶するページがDBバッファ436に読込まれるのを待つ。
DBMSは、タスク10Aの実行により、t9で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb24であることを特定し、ページb11を参照してページb24のアドレスを取得し、前記取得したアドレスに基づいてページb24にアクセスする。
また、DBMSは、タスク10Bの実行により、t8で特定した索引Bの検索条件とページb22のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Dとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Dと関連づけられたコンテキストを参照して次にアクセスすべきエントリがB2であることを特定し、前記次にアクセスすべきエントリを次のページであるB3に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合11Dを参照して前記ページB2のアドレスを取得しようと試みる。しかし、t7においてデータアドレス集合11Dを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Dを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Bは、データアドレス集合11Dを記憶するページがDBバッファ436に読込まれるのを待つ。
また、DBMSは、タスク10Cの実行により、レコードC1がクエリで指定された条件を満たすことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報の中で最初に生成されたタスク開始情報(データアドレス集合11Dとそれに関連づけられたコンテキストから成るタスク開始情報)を参照する。すなわち、データアドレス集合11Dと関連づけられたコンテキストを参照して次にアクセスすべきエントリがB3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合11Dを参照して前記ページB3のアドレスを取得しようと試みる。しかし、t7においてデータアドレス集合11Dを記憶するページは、記憶デバイス群443に追い出されており、DBバッファ436上に存在しないため、データアドレス集合11Dを記憶するページを記憶デバイス群443からDBバッファ436に読込む処理を行う。このため、タスク10Cは、データアドレス集合11Dを記憶するページがDBバッファ436に読込まれるのを待つ。
(t11)
DBMSは、タスク10Aの実行により、t9で特定した索引Bの検索条件とページb24のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク10Aを終了する。
また、DBMSは、タスク10Bの実行により、t10で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Dを参照してページB2のアドレスを取得し、前記取得したアドレスに基づいてページB2にアクセスする。
また、DBMSは、タスク10Cの実行により、t10で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Dを参照してページB3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページB3にアクセスする。
DBMSは、タスク10Aの実行により、t9で特定した索引Bの検索条件とページb24のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク10Aを終了する。
また、DBMSは、タスク10Bの実行により、t10で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Dを参照してページB2のアドレスを取得し、前記取得したアドレスに基づいてページB2にアクセスする。
また、DBMSは、タスク10Cの実行により、t10で記憶デバイス群443からDBバッファ436に読込む処理を行ったデータアドレス集合11Dを参照してページB3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページB3にアクセスする。
(t12)
DBMSは、タスク10Bの実行により、レコードB2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク10Bを終了する。
また、DBMSは、タスク10Cの実行により、レコードB3がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク10Cを終了する。
DBMSは、タスク10Bの実行により、レコードB2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク10Bを終了する。
また、DBMSは、タスク10Cの実行により、レコードB3がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク10Cを終了する。
以上の処理により、DBへのアクセス処理が終了し、クエリ処理が終了する。
実施例1では、図8に示すクエリ処理よりも迅速にクエリ処理を実行できるようにするために、次に示すタスク実行及びタスク開始情報の管理を行う。
図9は、実施例1に係るクエリ実行時のタスクの実行及びタスク開始情報の管理を説明するための模式図の一例である。表記のルールは、図8と同様である。
(t0)〜(t2)では、以下に示す点を除いて、それぞれ、図8の(t0)〜(t2)と同じ処理が行われる。
(t2)において、DBMSは、DBバッファ436から記憶デバイス群443にデータアドレス集合を記憶するページ追い出すが、ここで、DBバッファ436にデータアドレス集合を記憶するページが複数存在する場合には、DBMSは、単純に最も古いデータアドレス集合(DBバッファ436に格納されているデータアドレス集合のうち最初にDBバッファ436に格納されたデータアドレス集合)を記憶するページを追い出し対象とするのではなく、タスク開始情報の生成スピード(単位時間当たりに生成するタスク開始情報の数)と、タスク開始情報の消費スピード(単位時間当たりに消費するタスク開始情報の数)との相対的な関係、および各タスク開始情報のコンテキストに保持されているタスク生成可能数に基づいて、追い出し対象とするデータアドレス集合を記憶するページを決定する。具体的には、DBMSは、タスク開始情報の生成スピードと、タスク開始情報の消費スピードとの比較結果に基づいて、追い出し対象とするデータアドレス集合を記憶するページを決定する。互いに比較される生成スピードと消費スピードは、同じ時間帯での生成スピードと消費スピードで良い。
(t2)において、DBMSは、DBバッファ436から記憶デバイス群443にデータアドレス集合を記憶するページ追い出すが、ここで、DBバッファ436にデータアドレス集合を記憶するページが複数存在する場合には、DBMSは、単純に最も古いデータアドレス集合(DBバッファ436に格納されているデータアドレス集合のうち最初にDBバッファ436に格納されたデータアドレス集合)を記憶するページを追い出し対象とするのではなく、タスク開始情報の生成スピード(単位時間当たりに生成するタスク開始情報の数)と、タスク開始情報の消費スピード(単位時間当たりに消費するタスク開始情報の数)との相対的な関係、および各タスク開始情報のコンテキストに保持されているタスク生成可能数に基づいて、追い出し対象とするデータアドレス集合を記憶するページを決定する。具体的には、DBMSは、タスク開始情報の生成スピードと、タスク開始情報の消費スピードとの比較結果に基づいて、追い出し対象とするデータアドレス集合を記憶するページを決定する。互いに比較される生成スピードと消費スピードは、同じ時間帯での生成スピードと消費スピードで良い。
具体的には、DBMSは、タスク開始情報の生成スピードが、タスク開始情報の消費スピードよりも大きい場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象とし、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象としない。なお、前記閾値は、指定された固定の値でも良く、DBMSによって動的に更新される可変の値でもよい。可変の値としては、例えば、全コンテキストのタスク生成可能数の平均値を計算し、DBMSが任意のタイミングで当該計算した値に更新してもよい。このように、DBMSは、タスク開始情報の総数が増加している傾向がある場合には、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先してDBバッファ436から記憶デバイス群443に追い出す。これにより、タスク開始情報を効率よく消費することが期待できる。
また、DBMSは、タスク開始情報の生成スピードが、タスク開始情報の消費スピード以下の場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象とせず、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを追い出し対象とする。このように、DBMSは、タスク開始情報の総数が減少している傾向がある場合には、タスク生成可能数が少ないコンテキストと関連づけられているデータアドレス集合を記憶するページを優先して記憶デバイス群443に追い出す対象として決定し、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページをDBバッファ436に優先して残す。これにより、多くのタスクを効率よく実行できることが期待できる。
(t3)
DBMSは、タスク12Aの実行により、レコードA1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク12Bの実行により、レコードA2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク開始情報を参照する。ここで、実施例1においては、DBMSは、データアドレス集合を記憶するページがDBバッファ436に存在するタスク開始情報を優先して参照する。なお、DBバッファ436にデータアドレス集合を記憶するページが複数ある場合には、DBMSは、タスク開始情報のコンテキストに保持されているタスク生成可能数が少ないタスク開始情報を優先して参照しても良い。DBMSは、タスク12Bの実行により、DBバッファ436に存在するデータアドレス集合13Bと関連づけられたコンテキストを参照して次にアクセスすべきエントリがA3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Bを参照して前記ページA3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA3にアクセスする。
また、DBMSは、タスク12Cの実行により、レコードA4がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
DBMSは、タスク12Aの実行により、レコードA1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク12Bの実行により、レコードA2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク開始情報を参照する。ここで、実施例1においては、DBMSは、データアドレス集合を記憶するページがDBバッファ436に存在するタスク開始情報を優先して参照する。なお、DBバッファ436にデータアドレス集合を記憶するページが複数ある場合には、DBMSは、タスク開始情報のコンテキストに保持されているタスク生成可能数が少ないタスク開始情報を優先して参照しても良い。DBMSは、タスク12Bの実行により、DBバッファ436に存在するデータアドレス集合13Bと関連づけられたコンテキストを参照して次にアクセスすべきエントリがA3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Bを参照して前記ページA3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA3にアクセスする。
また、DBMSは、タスク12Cの実行により、レコードA4がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
(t4)
DBMSは、タスク12Aの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb21であることを特定し、ページb11を参照してページb21のアドレスを取得し、前記取得したアドレスに基づいてページb21にアクセスする。
また、DBMSは、タスク12Bの実行により、レコードA3がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク12Cの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb23であることを特定し、ページb11を参照してページb23のアドレスを取得し、前記取得したアドレスに基づいてページb23にアクセスする。
DBMSは、タスク12Aの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb21であることを特定し、ページb11を参照してページb21のアドレスを取得し、前記取得したアドレスに基づいてページb21にアクセスする。
また、DBMSは、タスク12Bの実行により、レコードA3がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク12Cの実行により、t3で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb23であることを特定し、ページb11を参照してページb23のアドレスを取得し、前記取得したアドレスに基づいてページb23にアクセスする。
(t5)
DBMSは、タスク12Aの実行により、t3で特定した索引Bの検索条件とページb21のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Cと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがA5であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Cを参照して前記ページA5のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA5にアクセスする。
また、DBMSは、タスク12Bの実行により、t4で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb22であることを特定し、ページb11を参照してページb22のアドレスを取得し、前記取得したアドレスに基づいてページb22にアクセスする。
また、DBMSは、タスク12Cの実行により、t3で特定した索引Bの検索条件とページb23のエントリに基づいて、アクセスすべきレコードがB1〜B3であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページB1〜B3のアドレスが格納されているページb23をデータアドレス集合13Dとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをB2に設定し、タスク生成可能数を2に設定する。これにより、データアドレス集合13Dとそのデータアドレス集合13Dに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク12Cの実行により、ページB1にアクセスする。
DBMSは、タスク12Aの実行により、t3で特定した索引Bの検索条件とページb21のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Cと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがA5であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Cを参照して前記ページA5のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページA5にアクセスする。
また、DBMSは、タスク12Bの実行により、t4で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb22であることを特定し、ページb11を参照してページb22のアドレスを取得し、前記取得したアドレスに基づいてページb22にアクセスする。
また、DBMSは、タスク12Cの実行により、t3で特定した索引Bの検索条件とページb23のエントリに基づいて、アクセスすべきレコードがB1〜B3であることを特定し、タスク開始情報を生成する。すなわち、コンテキストを生成し、前記アクセスすべきと特定したページB1〜B3のアドレスが格納されているページb23をデータアドレス集合13Dとして前記生成したコンテキストと関連付け、当該コンテキストについて、次にアクセスすべきエントリをB2に設定し、タスク生成可能数を2に設定する。これにより、データアドレス集合13Dとそのデータアドレス集合13Dに関連付けられたコンテキストとのセットとしてのタスク開始情報が完成する。続いて、DBMSは、タスク12Cの実行により、ページB1にアクセスする。
(t6)
DBMSは、タスク12Aの実行により、レコードA5がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク12Bの実行により、t4で特定した索引Bの検索条件とページb22のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Dと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがB2であることを特定し、前記次にアクセスすべきエントリを次のページであるB3に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合13Dを参照して前記ページB2のアドレスを取得し、前記取得したアドレスに基づいてページB2にアクセスする。
また、DBMSは、タスク12Cの実行により、レコードB1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Cの検索条件を特定し、索引Cのページc11にアクセスする。
DBMSは、タスク12Aの実行により、レコードA5がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Bの検索条件を特定し、索引Bのページb11にアクセスする。
また、DBMSは、タスク12Bの実行により、t4で特定した索引Bの検索条件とページb22のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Dと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがB2であることを特定し、前記次にアクセスすべきエントリを次のページであるB3に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合13Dを参照して前記ページB2のアドレスを取得し、前記取得したアドレスに基づいてページB2にアクセスする。
また、DBMSは、タスク12Cの実行により、レコードB1がクエリで指定された条件を満たすことを判定し、当該レコードに基づいて索引Cの検索条件を特定し、索引Cのページc11にアクセスする。
(t7)
DBMSは、タスク12Aの実行により、t6で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb24であることを特定し、ページb11を参照してページb24のアドレスを取得し、前記取得したアドレスに基づいてページb24にアクセスする。
DBMSは、タスク12Bの実行により、レコードB2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Dと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがB3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Dを参照して前記ページB3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページB3にアクセスする。
また、DBMSは、タスク12Cの実行により、t6で特定した索引Cの検索条件とページc11のエントリに基づいて、アクセスすべき下位ページがc21であることを特定し、ページc11を参照してページc21のアドレスを取得し、前記取得したアドレスに基づいてページc21にアクセスする。
DBMSは、タスク12Aの実行により、t6で特定した索引Bの検索条件とページb11のエントリに基づいて、アクセスすべき下位ページがb24であることを特定し、ページb11を参照してページb24のアドレスを取得し、前記取得したアドレスに基づいてページb24にアクセスする。
DBMSは、タスク12Bの実行により、レコードB2がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Dと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがB3であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Dを参照して前記ページB3のアドレスを取得し、タスク生成可能数が0になった当該タスク開始情報を削除し、前記取得したアドレスに基づいてページB3にアクセスする。
また、DBMSは、タスク12Cの実行により、t6で特定した索引Cの検索条件とページc11のエントリに基づいて、アクセスすべき下位ページがc21であることを特定し、ページc11を参照してページc21のアドレスを取得し、前記取得したアドレスに基づいてページc21にアクセスする。
なお、ここで、データアドレス集合13Dが消費されDBバッファ436にタスク開始情報のデータアドレス集合を記憶するページがなくなるため、DMBSは、記憶デバイス群443からデータアドレス集合13Aを記憶するページをDBバッファ436に読込む処理を行う。記憶デバイス群443にデータアドレス集合を記憶するページが複数存在する場合には、DBMSは、読込み対象のデータアドレス集合を、例えば、タスク開始情報の生成スピードとタスク開始情報の消費スピードとの比較結果、およびタスク開始情報のコンテキストに保持されているタスク生成可能数に基づいて決定する。
具体的には、DBMSは、タスク開始情報の生成スピードが、タスク開始情報の消費スピードよりも小さい場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象とし、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象としない。なお、前記閾値は、指定された固定の値でも良く、DBMSによって動的に更新される可変の値でもよい。可変の値としては、例えば、全コンテキストのタスク生成可能数の平均値を計算し、DBMSが任意のタイミングで当該計算した値に更新してもよい。このように、タスク開始情報の総数が減少している傾向がある場合には、DBMSは、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先して読込む。これにより、多くのタスクを効率よく実行できることが期待できる。
また、DBMSは、タスク開始情報の生成スピードが、タスク開始情報の消費スピード以上の場合には、タスク生成可能数が所定の閾値以上のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象とせず、タスク生成可能数が所定の閾値未満のコンテキストと関連づけられているデータアドレス集合を記憶するページを読込み対象とする。このように、タスク開始情報の総数が増加している傾向がある場合には、DBMSは、タスク生成可能数が少ないコンテキストと関連づけられているデータアドレス集合を記憶するページを優先して読み込む。これにより、タスク開始情報を効率よく消費することが期待できる。
図9の例では、DBMSは、データアドレス集合13Aを記憶するページを、DBバッファ436に読込む。
(t8)
DBMSは、タスク12Aの実行により、t6で特定した索引Bの検索条件とページb24のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Aと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがa24であることを特定し、前記次にアクセスすべきエントリを次のページであるa25に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合13Aを参照して前記ページa24のアドレスを取得し、前記取得したアドレスに基づいてページa24にアクセスする。
また、DBMSは、タスク12Bの実行により、レコードB3がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Aと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがa25であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Aを参照して前記ページa25のアドレスを取得し、当該タスク開始情報を消去し、前記取得したアドレスに基づいてページa25にアクセスする。
また、DBMSは、タスク12Cの実行により、t6で特定した索引Cの検索条件とページc21のエントリに基づいて、アクセスすべき下位ページがc31であることを特定し、ページc21を参照してページc31のアドレスを取得し、前記取得したアドレスに基づいてページc31にアクセスする。
DBMSは、タスク12Aの実行により、t6で特定した索引Bの検索条件とページb24のエントリに基づいて、アクセスすべき下位ページが存在しないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Aと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがa24であることを特定し、前記次にアクセスすべきエントリを次のページであるa25に変更し、タスク生成可能数を1減算して1に変更し、データアドレス集合13Aを参照して前記ページa24のアドレスを取得し、前記取得したアドレスに基づいてページa24にアクセスする。
また、DBMSは、タスク12Bの実行により、レコードB3がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、DBバッファ436に存在するデータアドレス集合13Aと関連づけられたコンテキストを参照して、次にアクセスすべきエントリがa25であることを特定し、タスク生成可能数を1減算して0になることを確認し、データアドレス集合13Aを参照して前記ページa25のアドレスを取得し、当該タスク開始情報を消去し、前記取得したアドレスに基づいてページa25にアクセスする。
また、DBMSは、タスク12Cの実行により、t6で特定した索引Cの検索条件とページc21のエントリに基づいて、アクセスすべき下位ページがc31であることを特定し、ページc21を参照してページc31のアドレスを取得し、前記取得したアドレスに基づいてページc31にアクセスする。
(t9)
DBMSは、タスク12Aの実行により、クエリの指定値とページa24のエントリに基づいて、アクセスすべきレコードがA6であることを特定し、ページa24を参照して前記レコードA6のアドレスを取得し、前記取得したアドレスに基づいてページA6にアクセスする。
また、DBMSは、タスク12Bの実行により、クエリの指定値とページa25のエントリに基づいて、アクセスすべきレコードがA7であることを特定し、ページa25を参照して前記レコードA7のアドレスを取得し、前記取得したアドレスに基づいてページA7にアクセスする。
また、DBMSは、タスク12Cの実行により、t6で特定した索引Cの検索条件とページc31のエントリに基づいて、アクセスすべきレコードがC1であることを特定し、ページc31を参照して前記レコードC1のアドレスを取得し、前記取得したアドレスに基づいてページC1にアクセスする。
DBMSは、タスク12Aの実行により、クエリの指定値とページa24のエントリに基づいて、アクセスすべきレコードがA6であることを特定し、ページa24を参照して前記レコードA6のアドレスを取得し、前記取得したアドレスに基づいてページA6にアクセスする。
また、DBMSは、タスク12Bの実行により、クエリの指定値とページa25のエントリに基づいて、アクセスすべきレコードがA7であることを特定し、ページa25を参照して前記レコードA7のアドレスを取得し、前記取得したアドレスに基づいてページA7にアクセスする。
また、DBMSは、タスク12Cの実行により、t6で特定した索引Cの検索条件とページc31のエントリに基づいて、アクセスすべきレコードがC1であることを特定し、ページc31を参照して前記レコードC1のアドレスを取得し、前記取得したアドレスに基づいてページC1にアクセスする。
(t10)
DBMSは、タスク12Aの実行により、レコードA6がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク12Aを終了する。
また、DBMSは、タスク12Bの実行により、レコードA7がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク12Bを終了する。
また、DBMSは、タスク12Cの実行により、レコードC1がクエリで指定された条件を満たすことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク12Cを終了する。
DBMSは、タスク12Aの実行により、レコードA6がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク12Aを終了する。
また、DBMSは、タスク12Bの実行により、レコードA7がクエリで指定された条件を満たさないことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク12Bを終了する。
また、DBMSは、タスク12Cの実行により、レコードC1がクエリで指定された条件を満たすことを判定する。続いて、タスクを実行するため、タスク生成可能数が1以上のタスク開始情報を検索するが、この時点ではタスク生成可能数が1以上のタスク開始情報がないため、タスク12Cを終了する。
以上の処理により、t9までに、クエリ実行プランにおけるDBへのアクセス処理が全て終了し、その後、クエリ処理が終了する。
実施例1に係るクエリ処理は、図9に示すように、図8に示すクエリ処理に比して、記憶デバイス群443へのアクセスの回数を低減でき、短時間でクエリ処理を実行することができる。
以下、実施例1を詳細に説明する。
図10は、実施例1に係る計算機システムの構成を示す。
DBサーバ401が通信ネットワーク403を介して外部ストレージ装置402に接続されている。通信ネットワーク403を介した通信のプロトコルとしては、例えば、FC(Fibre Channel)、SCSI(Small Computer System Interface)、又は、TCP/IP(Transmission Control Protocol/Internet Protocol)が採用されて良い。
DBサーバ401は、計算機、例えば、パーソナルコンピュータ、ワークステーション又はメインフレーム、もしくは、これらのいずれかによって構成される仮想的な計算機(仮想マシン)である。DBサーバ401は、ネットワークアダプタ413、メモリ416、ローカル記憶デバイス415及びそれらに接続されたプロセッサ(典型的にはマイクロプロセッサ)414を有する。プロセッサ414は、コンピュータプログラム、例えば、OS(Operating System)417と、DBMS412と、DBMS412にクエリを発行するAP(Application Program)411とを実行する。メモリ416は、主記憶装置(第1の記憶デバイス)の一例であり、プロセッサ414によって実行されるプログラムと、プログラムが使用するデータとを一時的に記憶する。ローカル記憶デバイス415は、プログラム、及びプログラムが使用するデータを格納する。ネットワークアダプタ413は、通信ネットワーク403とDBサーバ401とを接続する。AP411は、DBサーバ401ではなく、通信ネットワーク403に接続される図示しない別の計算機で動作しても良い。また、プロセッサ414は、ネットワークアダプタ413及びメモリ416等に接続された制御デバイスに含まれている要素で良い。制御デバイスは、プロセッサ414の他に、専用ハードウェア回路(例えば、データの暗号化及び/又は復号化を行う回路)を含んで良い。
なお、DBサーバ401は、性能面や冗長性の観点から、プロセッサ414、メモリ416、ローカル記憶デバイス415及びネットワークアダプタ413のうちの少なくとも1つの要素を複数備えていても良い。また、DBサーバ401は、図示しない入力デバイス(例えば、キーボード及びポインティングデバイス)と表示デバイス(例えば液晶ディスプレイ)とを有して良い。入力デバイスと表示デバイスは一体になっていても良い。
DBサーバ401では、DBMS412が、AP411から発行されたクエリを実行し、そのクエリの実行に伴い、外部ストレージ装置402に格納されたDB451に対するI/O要求をOS417に発行する。OS417が、DBMS412から発行されたI/O要求を、外部ストレージ装置402に送信する。
外部ストレージ装置402は、本実施例では、ディスクアレイ装置のような、複数の記憶デバイスを含む記憶デバイス群443を有する装置であるが、それに代えて、単一の記憶デバイスであっても良い。外部ストレージ装置402は、DBサーバ401が使用するデータ及びプログラムを記憶する。外部ストレージ装置402は、DBサーバ401に対する二次記憶装置(第2の記憶デバイス)の一例である。外部ストレージ装置402は、DBサーバ401からI/O要求を受信し、I/O要求に対応した処理を実行し、処理結果をDBサーバ401に送信する。
外部ストレージ装置402は、ネットワークアダプタ441、記憶デバイス群443及びそれらに接続されたコントローラ442を有する。
ネットワークアダプタ441は、外部ストレージ装置402を通信ネットワーク403に接続する。
記憶デバイス群443は、1つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。記憶デバイス群443は、RAID(Redundant ARRAY of Independent Disks)に従い所定のRAIDレベルでデータを記憶するグループであっても良い。記憶デバイス群443の記憶空間に基づく論理的な記憶デバイス(論理ボリューム)がDBサーバ401に提供されても良い。記憶デバイス群443は、DB451を記憶する。
コントローラ442は、例えば、メモリ及びプロセッサを含んでおり、DBサーバ401からのI/O要求に従って、DB451を記憶した記憶デバイス群443にデータを入出力する。例えば、コントローラ442は、DBサーバ401からの書込み要求に従う書込み対象のデータを記憶デバイス群443に格納したり、DBサーバ401からの読出し要求に従う読出し対象のデータを記憶デバイス群443から読み出し、そのデータをDBサーバ401に送信したりする。
なお、外部ストレージ装置402は、性能面や冗長性確保の観点から、コントローラ442等の要素を複数備えても良い。
DBMS412は、業務データを含んだDB451を管理する。DB451は、1つ以上の表462や索引461を含む。表は1つ以上のレコードの集合であり、レコードは1つ以上のカラムから構成される。索引は、表の中の1つ以上のカラムを対象に作成されるデータ構造であり、当該索引が対象とするカラムを含む選択条件による表へのアクセスを高速化する。例えば、索引は、対象とするカラムの値毎にその値を含む表のレコードを特定する情報(レコードID)を保持するデータ構造であり、B木構造等が用いられる。DBの表の構成例や表同士の関連性の一例は、図1乃至図3、及び図6に示した通りである。
DBMS412は、クエリ受付部421、クエリ実行プラン生成部422、クエリ実行部423、実行タスク管理部426及びDBバッファ管理部427を含む。
クエリ受付部421は、AP411が発行するクエリを受け付ける。クエリは、例えばSQL(Structured Query Language)で記述されている。
クエリ実行プラン生成部422は、クエリ受付部421が受け付けたクエリについて、当該クエリを実行するために必要な1つ以上のDBオペレーションを有するクエリ実行プランを生成する。クエリ実行プランは、例えば、クエリの実行の際に行うべきDBオペレーションの実行順序を木構造で定義した情報であり、メモリ416に格納される。クエリ実行プランの一例は、図5に示した通りである。
クエリ実行部423は、クエリ実行プラン生成部422が生成したクエリ実行プランに従って、クエリ実行プランに含まれる情報であるDBオペレーションを実行するためのタスクを動的に生成して実行する。そして、実行した結果をクエリ発行元に返す。例えば、クエリ実行部423は、(a)DBオペレーションを実行するためのタスクを実行タスク管理部426に要求して生成すること、(b)生成されたタスクを実行することで、そのタスクに対応したDBオペレーションに必要なデータを読み出す(DB451を有する外部ストレージ装置402へOS417を介して読出し要求を発行する)こと、(c)上記(b)で実行されたタスクに対応したN番目のDBオペレーションの実行結果に基づき(N+1)番目のDBオペレーションを実行する場合には、その実行結果に基づくタスクを実行タスク管理部426に要求して新たに生成すること(Nは1以上の整数)、及び、(d)その新たに生成したタスクについて上記(b)及び上記(c)を行うこと、を行う。クエリ実行部423は、上記(b)及び(d)において、2以上の実行可能なタスクが存在する場合には、それら2以上のタスクのうちの少なくとも二つのタスクを並行して実行する。また、クエリ実行部423は、タスク割当て管理部431と、コンテキスト管理部432とを含む。タスク割当て管理部431は、タスクの実行開始を管理する。コンテキスト管理部432は、タスクにおいて実行を行う内容を示す情報であるタスク開始情報TSのコンテキストCTXを管理する。タスク開始情報の一例は、図7に示した通りである。なお、クエリ実行部423、タスク割当て管理部431、及びコンテキスト管理部432の詳細は、後述する。
実行タスク管理部426は、クエリを実行するためのタスクを管理する。例えば、実行タスク管理部426は、タスクを生成するためのメモリ資源を管理しており、クエリ実行部423からのタスクの生成要求に従って、タスク自体に要するメモリ資源を確保してタスクを生成する。また、クエリ実行部423からのタスクの終了要求に従って、タスク自体に要するメモリ資源を解放してタスクを終了する。ここで、タスクとしては、任意のモジュールを採用することができる。例えば、タスクは、OS417が管理するプロセス又はスレッドでも良いし、DBMS412で実装される疑似プロセス又は疑似スレッドでも良い。
DBバッファ管理部427は、DB451内のページを一時的に格納するための1以上の記憶領域(DBバッファ面)437を管理する。DBバッファ面437は、メモリ416上に構築される。なお、DBバッファ管理部427の詳細は、後述する。
図11は、実施例1に係る計算機システムの一部の詳細構成図である。
クエリ実行部423は、タスク割当て管理部431と、コンテキスト管理部432とを含む。クエリ実行部423は、クエリ実行プラン生成部422が生成したクエリ実行プランに従って、タスクにおいて実行を行う内容を示す情報であるタスク開始情報TSを動的に生成し、前記生成したタスク開始情報に基づいてタスクを実行することでクエリ実行プラン内のDBオペレーションを実行する。コンテキスト管理部432は、1以上のタスク開始情報TSのコンテキストCTXを管理する。コンテキストCTXは、データアドレス集合AGが記憶されている外部ストレージ装置402の記憶デバイス群443におけるページを特定する情報(例えば、ページID)、データアドレス集合AGに格納されたエントリのうち次に実行開始されるタスクによりアクセスするエントリを示す情報、さらにタスク実行によりアクセスするエントリの残数(タスク生成可能数)を格納する。コンテキスト管理部432は、タスク開始情報TSが生成される都度に、当該タスク開始情報のコンテキストCTXを管理対象に追加し、タスク開始情報TSが削除される都度に、当該タスク開始情報のコンテキストCTXを管理対象から削除する。タスク割当て管理部431は、クエリ実行部423がタスクを実行開始する際に参照するタスク開始情報TSを決定し、当該タスク開始情報のコンテキストCTXをコンテキスト管理部より取得し、当該コンテキストと関連づけられたデータアドレス集合AGを参照し、アクセス対象ページを特定する。クエリ実行部423は、タスクを実行開始し、前記特定されたページにアクセスする。また、タスク割当て管理部431は、コンテキストCTXのタスク生成可能数が0になったタスク開始情報TSを削除する。
DBバッファ管理部427は、DB451内のページを一時的に格納するための1以上の記憶領域(DBバッファ面)437を含むDBバッファ436を管理する。なお、DBバッファ436におけるDBバッファ面437の数は、所定の数に制限されている。また、DBバッファ管理部427は、DBバッファ面437に格納されているページを管理するためのDBバッファ管理表435を記憶する。DBバッファ管理部427は、DB451のページの内容を、DBバッファ面437に読込んだり、DBバッファ面437に格納されているページを、DBバッファ面437から追い出したりする。ここで、DBバッファ面437からデータを追い出すことを、DBバッファ面437の解放という。なお、DBバッファ管理部427は、DBバッファ面437を解放する際に、該当するデータがダーティデータ、すなわち、DB451に反映されていないデータである場合には、当該ページをDB451に移動して格納する一方、ダーティデータでない場合には、そのデータをDBバッファ面437から消去するのみとしても良い。
前述したクエリ受付部421、クエリ実行プラン生成部422、クエリ実行部423、実行タスク管理部426、DBバッファ管理部427は、DBMS412がプロセッサ414で実行されることによって実現されるが、それらのうちの少なくとも1つの処理部が行う処理の少なくとも一部が、ハードウェアで行われても良い。また、本実施例の説明において、処理部が主語になる場合は、実際にはその処理部を実行するプロセッサ414によって処理が行われるが、処理部の少なくとも一部がハードウェアで実現されている場合は、プロセッサ414に代えて又は加えて、そのハードウェアも、主語とされ得る。DBMS412のようなコンピュータプログラムは、プログラムソースからDBサーバ401にインストールされて良い。プログラムソースは、例えば、DBサーバ401が読み取り可能な記憶メディアで良い。
また、図10及び図11に示したDBMS412の構成は、一例である。例えば、或る処理部が複数の処理部に分割されたり、複数の処理部の処理を統合した1つの処理部が構築されても良い。
図12は、実施例1に係るDBバッファ管理表435の構成を示す。
DBバッファ管理表435は、DBバッファ面437毎の情報として、バッファID435a、ページID435bを有する。各種情報は、下記の通りである。
(*)バッファID435aは、DBバッファ面437を識別するためのIDを示す。
(*)ページID435bは、対応するDBバッファ面437に格納されているページの外部ストレージ装置402における格納位置を特定することのできる情報(ここでは、ページID)である。なお、対応するDBバッファ面437にページが格納されていない場合には、ページID435bとして空を示す情報が設定される。
(*)バッファID435aは、DBバッファ面437を識別するためのIDを示す。
(*)ページID435bは、対応するDBバッファ面437に格納されているページの外部ストレージ装置402における格納位置を特定することのできる情報(ここでは、ページID)である。なお、対応するDBバッファ面437にページが格納されていない場合には、ページID435bとして空を示す情報が設定される。
以下、図13〜図22を参照して、本実施例で行われる種々の処理を説明する。
図13は、DBMS412が受け付けたクエリの実行においてタスクを生成し実行するクエリ処理の全体の流れを示す。図13は、1つのクエリ実行の流れを示すが、同時に実行するクエリが2以上ある場合には、DBMS412は、その2以上のクエリについて並行して図13に示す処理を行って良い。
S1001で、クエリ受付部421が、AP411が発行するクエリを受け付け、例えば、メモリ416に格納する。クエリは、例えばSQL(Structured Query Language)で記述されている。
S1002で、クエリ実行プラン生成部422が、DB451のデータの統計情報(以下、「DB統計情報」)に基づいて、クエリ受付部421が受け付けたクエリ(例えば、メモリ416に蓄積されているクエリ)についてクエリ実行プランを生成する。この際、1つ以上のクエリ実行プランの候補の各々についてコスト計算を行い、そのうち1つのクエリ実行プランの候補をクエリ実行プランとして選んでも良い。DB統計情報は、例えば、各表462について、レコードの数を表す情報、カラム毎のデータの最大値及び最小値もしくはカラム毎のデータの分布状況を表すヒストグラム等の統計情報を含んで良い。DB統計情報は、ローカル記憶デバイス415又はメモリ416に格納される。DB統計情報は、DBMS412がDB451をチェックすることにより生成されても良いし、DBMS412の外部から入力されても良い。また、クエリ実行プランは、DB統計情報のみならず、クエリの記述に基づいて生成されても良い。
S1003で、クエリ実行部423がコンテキストを生成し、コンテキスト管理部432が当該生成されたコンテキストを管理する。前記コンテキストは、S1002で生成されたクエリ実行プランの、先頭のDBオペレーションを実行するための内容を示すコンテキストである。
S1004で、クエリ実行部423が、1以上のタスクを生成する。
S1005で、クエリ実行部423が、S1004で生成されたタスクを実行する。
図14は、実施例1に係るDBMSによるタスク実行処理の流れを示す。
S1101で、タスク割当て管理部431が、タスクの実行内容を取得する。タスク実行内容取得処理の詳細は、図15に示す通りである。
S1102で、クエリ実行部423が、S1101で取得したタスクの実行内容に基づいてタスクを実行することにより、DBオペレーションを実行する。
S1103で、クエリ実行部423が、S1102でタスクにより実行したDBオペレーションの結果に基づき、コンテキストを生成するか否かを判断する。この判断の結果が肯定的であれば、S1104を行う一方、この判断の結果が否定的であれば、処理を終了する。
S1104で、クエリ実行部423がコンテキストCTXを生成し、コンテキスト管理部432が、当該生成されたコンテキストを管理する。当該コンテキストCTXには、データアドレス集合AGが記憶されている外部ストレージ装置402の記憶デバイス群443におけるページを特定する情報(例えば、ページID)、データアドレス集合AGに格納されたエントリのうち次に実行開始されるタスクによりアクセスするエントリを示す情報、さらにタスク実行によりアクセスするエントリの残数(タスク生成可能数)が含まれる。
S1105で、クエリ実行部423からのタスクの生成要求に従って、実行タスク管理部426が、タスクを生成する。
S1106で、クエリ実行部423が、S1104で生成されたタスクを実行する。
図15は、実施例1に係るタスク実行内容取得処理(図14のS1101)の流れを示す。
S1201で、タスク割当て管理部431は、タスク開始情報選択処理を行う。タスク開始情報TSとは、コンテキストCTXとそれに関連づけられたデータアドレス集合AGのセットである。タスク開始情報選択処理の詳細は、図16に示す通りである。
S1202で、タスク割当て管理部431は、S1201で選択したタスク開始情報TSからタスク実行内容を取得する。タスク実行内容には、タスク開始情報TSのコンテキストCTX及びデータアドレス集合AGから取得した、アクセス対象ページのアドレスを含む。
S1203で、タスク割当て管理部431は、S1201で選択したタスク開始情報TSのコンテキストCTXに保持されている、次に実行開始されるタスクによりアクセスするエントリを次のエントリに更新し、前記コンテキストCTXのタスク生成可能数を1減算する。
S1204で、タスク割当て管理部431は、S1201で選択したタスク開始情報TSのコンテキストCTXのタスク生成可能数が0であるか否かを判断する。この判断の結果が肯定的であれば、S1205を行う一方、この判断の結果が否定的であれば、処理を終了する。
S1205で、タスク割当て管理部431は、S1201で選択したタスク開始情報TSを削除し、コンテキスト管理部432は当該タスク開始情報TSのコンテキストCTXを管理対象から削除する。
図16は、タスク開始情報選択処理(図15のS1201)の流れを示す。
S1301で、タスク割当て管理部431は、コンテキスト管理部432が管理しているコンテキストから1つを選択し、当該コンテキストと関連づけられているデータアドレス集合を記憶するページ(ここで、この処理の説明においては、このページをページBという)のページIDを取得する。
S1302で、タスク割当て管理部431は、取得したページBがDBバッファ436上にあるか否かを判定する。具体的には、タスク割当て管理部431は、ページIDを含む問合せ要求をDBバッファ管理部427に送信することにより、対応するページIDのページがDBバッファ436に格納されているか否かを問合せ、その問合せ結果に基づいて、取得したページBがDBバッファ436上にあるか否かを判定する。DBバッファ管理部427は、前記問合せを受けて、DBバッファ管理表435を参照し、該当するページIDのページがあるか否かを判定し、その結果をタスク割当て管理部431に通知する。
S1303で、ステップS1302の判定の結果、ページBがDBバッファ436にある場合(S1303:Y)には、タスク割当て管理部431は、ステップS1307を行い、ページBがDBバッファ436にない場合(S1303:N)には、ステップS1304を行う。
S1304で、タスク割当て管理部431は、コンテキスト管理部432の全コンテキストにおいて当該コンテキストに関連づけられているデータアドレス集合を記憶するページがDBバッファ436にないと判定していない場合(S1304:N)には、S1301に進み、次のコンテキストを選択して、以降の処理を行う。一方、コンテキスト管理部432の全コンテキストにおいて当該コンテキストに関連づけられているデータアドレス集合を記憶するページがDBバッファ436にないと判定した場合(S1304:Y)には、タスク割当て管理部431は、ページ読込みコンテキストを選択する処理(S1305)を行う。
S1305で、タスク割当て管理部431は、関連づけられているデータアドレス集合を記憶するページを、外部ストレージ装置402からDBバッファ436に読込むコンテキストを選択するための、ページ読込コンテキスト選択処理を実行する。ページ読込コンテキスト選択処理の詳細は、図17に示す通りである。図17によれば、ページ読込コンテキスト選択処理により、外部ストレージ装置402からDBバッファ436にページを読込むコンテキストが選択される。ここで、選択したページをページCとし、選択したコンテキストをコンテキストCとする。
S1306で、タスク割当て管理部431は、DBバッファ管理部427に対し、ページCをDBバッファ436に読込む、ページ読込要求を送信する。DBバッファ管理部427は、前記ページ読込要求を受けて、外部ストレージ装置402からページCをDBバッファ436に読込み、ページ読込処理が終了したことをタスク割当て管理部431に通知する。ページ読込処理の詳細は、図19に示す通りである。図19によれば、ページ読込処理により、ページCがDBバッファ436に読込まれる。
S1307で、タスク割当て管理部431は、選択したコンテキストを含むタスク開始情報を選択し、処理を終了する。
図17は、ページ読込コンテキスト選択処理(図16のS1305)の流れを示す。
S1401で、タスク割当て管理部431は、コンテキスト管理部432が管理しているコンテキストから、処理対象とする1つのコンテキストを選択する。
S1402で、タスク割当て管理部431は、選択したコンテキストと関連づけられているデータアドレス集合を記憶するページをDBバッファ436に読み込み可能であるか否かを判定するための、DBバッファ読込判定処理を実行する。DBバッファ読込判定処理の詳細は、図18に示す通りである。図18によれば、DBバッファ読込判定処理により、選択されたコンテキストと関連づけられているページをDBバッファ436に読込可能であるか否かの判定結果が得られる。
S1403で、タスク割当て管理部431は、選択したコンテキストと関連づけられているページをDBバッファ436に読込可能か否かを判定し、当該ページをDBバッファ436に読込可能でない場合(S1403:N)には、S1401を行い、次のコンテキストを選択して以降の処理を行う一方、当該ページをDBバッファ436に読込可能である場合(S1403:Y)には、処理を終了する。
図18は、DBバッファ読込判定処理(図17のS1402)の流れを示す。
S1501で、タスク割当て管理部431は、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも小さいか否かを判定し、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも小さい場合、すなわち、タスク開始情報の総数が減少している傾向がある場合(S1501:Y)には、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先してDBバッファ436に読込むためS1502に進む一方、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも小さくない場合、すなわち、タスク開始情報の総数が増加する傾向にある場合(S1501:N)には、S1503に進む。
S1502で、タスク割当て管理部431は、S1401で選択されたコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合(S1502:Y)には、S1504に進む一方、タスク生成可能数が閾値以上でない場合(S1502:N)には、S1505に進む。
S1503で、タスク割当て管理部431は、S1401で選択されたコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合(S1503:Y)には、S1505に進む一方、タスク生成可能数が閾値以上でない場合(S1503:N)には、S1504に進む。
S1504で、タスク割当て管理部431は、選択されたコンテキストと関連づけられているページを読込可と判定し、DBバッファ読込判定処理を終了する。
S1505で、タスク割当て管理部431は、選択されたコンテキストと関連づけられているページを読込不可と判定し、DBバッファ読込判定処理を終了する。
このDBバッファ読込判定処理によると、タスク開始情報の総数が減少している傾向がある場合には、タスク生成可能数が多いコンテキストと関連づけられているページがDBバッファ436に優先して読込まれるようにして多くのタスクを効率よく実行でき、タスク開始情報の総数が増加している傾向がある場合には、タスク生成可能数が少ないコンテキストと関連づけられているページがDBバッファに優先して読込まれるようにして、タスク開始情報が効率よく消費されるようにできる。
図19は、ページ読込処理(図16のS1306)の流れを示す。
S1601で、DBバッファ管理部427は、空いているDBバッファ面が無いか否かを判定し、空きDBバッファ面が無い場合(S1601:Y)には、S1602に進む一方、空きDBバッファ面がある場合(S1601:N)には、S1603に進む。
S1602で、DBバッファ管理部427は、DBバッファ436からデータを追出すDBバッファ追い出し処理を実行する。DBバッファ追い出し処理の詳細は、図20に示す通りである。図20によれば、DBバッファ追い出し処理により、空きDBバッファ面を生成することができる。DBバッファ追い出し処理終了後には、DBバッファ管理部427は、S1601を行う。
S1603で、DBバッファ管理部427は、ページのデータを格納するための空きDBバッファ面を確保し、当該DBバッファ面にページのデータを読込む。
図20は、DBバッファ追い出し処理(図19のS1602)の流れを示す。
S1701で、DBバッファ管理部427は、データを追い出す対象とするDBバッファ面を選択する、追い出し対象DBバッファ面選択処理を実行する。追い出し対象DBバッファ面選択処理の詳細は、図21に示す通りである。図21によれば、追い出し対象DBバッファ面選択処理により、データを追い出す対象とするDBバッファ面を選択することができる。
S1702で、DBバッファ管理部427は、選択されたDBバッファ面のデータがダーティデータか否かを判定し、選択されたDBバッファ面のデータがダーティデータである場合(S1702:Y)には、S1703に進み、選択されたDBバッファ面のデータがダーティデータでない場合(S1702:N)には、S1704に進む。
S1703で、DBバッファ管理部427は、選択されたDBバッファ面の内容を外部ストレージ装置402の記憶デバイス群443に書き出す。
S1704で、DBバッファ管理部427は、選択されたDBバッファ面を開放する。これにより、このDBバッファ面が使用可能となる。
なお、このDBバッファ追い出し処理は、例えば、DBバッファ436における空きDBバッファ面数が所定数以下になった場合に、実行するようにしても良い。
図21は、追い出し対象DBバッファ面選択処理(図20のS1701)の流れを示す。
S1801で、DBバッファ管理部427は、追い出し候補とする1つのDBバッファ面を選択する。
S1802で、DBバッファ管理部427は、選択されたDBバッファ面に格納されているページが、コンテキストと関連づけられているページであるか否かを判定し、当該ページがコンテキストと関連づけられているページのである場合(S1802:Y)には、S1803に進む一方、当該ページがコンテキストと関連づけられているページでない場合(S1802:N)には、そのまま処理を終了する。ここで、選択したDBバッファ面に格納されているページが、コンテキストと関連づけられているページであるか否かの判定は、具体的には、DBバッファ管理部427が、ページIDを含む問合せ要求をコンテキスト管理部432に送信することにより、対応するページIDのページと関連づけられているコンテキストが、コンテキスト管理部432で管理されているか否かを問合せ、その問合せ結果に基づいて判断する。コンテキスト管理部432は、前記問合せを受けて、管理するコンテキストのなかに、該当するページIDが関連づけられているコンテキストがあるか否かを判定して、その結果をDBバッファ管理部427に通知する。
S1803で、DBバッファ管理部427は、タスク割当て管理部431により、選択したDBバッファ面を解放可能か否かを判定するためのDBバッファ面解放判定処理を実行する。DBバッファ面解放判定処理の詳細は、図22に示す通りである。図22によれば、DBバッファ面解放判定処理により、選択されたDBバッファを解放可能であるか否かの判定結果が得られる。
S1804で、DBバッファ管理部427は、選択したDBバッファ面を解放可能であるか否かを判定し、選択したDBバッファを解放可能と判定しなかった場合(S1804:N)には、S1801を行い、次のDBバッファ面を選択して以降の処理を行う一方、選択したDBバッファ面を解放可能と判定した場合(S1804:Y)には、処理を終了する。
図22は、DBバッファ面解放判定処理(図21のS1803)の流れを示す。
S1901で、タスク割当て管理部431は、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数より大きいか否かを判定し、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも大きい場合、すなわち、タスク開始情報の総数が増加している傾向がある場合(S1901:Y)には、タスク生成可能数が多いコンテキストと関連づけられているデータアドレス集合を記憶するページを優先してDBバッファ436から追い出すためS1902に進む一方、単位時間当たりのタスク開始情報生成数が、単位時間当たりのタスク開始情報消費数よりも大きくない場合、すなわち、タスク開始情報の総数が減少する傾向にある場合(S1901:N)には、S1903に進む。
S1902で、タスク割当て管理部431は、図21のS1801で選択されたDBバッファ面に格納されたページと関連づけられるコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合(S1902:Y)には、S1904に進む一方、タスク生成可能数が閾値以上でない場合(S1902:N)には、S1905に進む。
S1903で、タスク割当て管理部431は、図21のS1801で選択されたDBバッファに格納されたページと関連づけられるコンテキストのタスク生成可能数が所定の閾値以上であるか否かを判定し、その結果、タスク生成可能数が閾値以上である場合(S1903:Y)には、S1905に進む一方、タスク生成可能数が閾値以上でない場合(S1903:N)には、S1904に進む。
S1904で、タスク割当て管理部431は、選択されたDBバッファを解放可と判定し、DBバッファ面解放判定処理を終了する。
S1905で、タスク割当て管理部431は、選択されたDBバッファを解放不可と判定し、DBバッファ面解放判定処理を終了する。
このDBバッファ面解放判定処理によると、タスク開始情報の総数が増加している傾向がある場合には、タスク生成可能数が多いコンテキストと関連づけられるページを格納するDBバッファ面を優先して解放し、タスク生成可能数の少ないコンテキストと関連づけられるページがDBバッファに残るようにすることで、タスク開始情報を効率よく消費することができる。また、タスク開始情報の総数が減少している傾向がある場合には、タスク生成可能数が少ないコンテキストと関連づけられるページを格納するDBバッファ面を優先して解放して、タスク生成可能数が多いコンテキストと関連づけられるページがDBバッファに優先して残るようにすることで、多くのタスクを記憶デバイス群443へのアクセスを行うことなく効率よく実行開始することができる。
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図23は、実施例2に係る計算機システムの一部の詳細構成図を示す。
実施例2においては、実施例1のタスク割当て管理部431の一部の処理と、実施例1のDBバッファ管理部427の一部の処理とを、新たに備えたタスク開始情報格納場所管理部438に実行させるようにしたものであり、それに応じて、タスク割当て管理部431及びDBバッファ管理部427の処理が変更されている。
タスク開始情報格納場所管理部438は、タスク開始情報格納場所管理表439を管理し、タスク割当て管理部431、DBバッファ管理部427からの問い合わせに答える。タスク開始情報格納場所管理部438は、タスク割当て管理部431又はDBバッファ管理部427からの通知に基づいて、タスク開始情報場所管理表439のエントリの登録、削除、更新等を行う。タスク開始情報格納場所管理部438は、タスク割当て管理部431からデータアドレス集合を記憶するページがDBバッファにあるか否かの問い合わせがあった場合には、タスク開始情報格納場所管理表439を参照し、対応するデータアドレス集合の格納場所が主記憶(すなわち、DBバッファ)であるか否かを判定し、判定結果をタスク割当て管理部431に通知する。また、タスク開始情報格納場所管理部438は、DBバッファ管理部427からDBバッファを解放しても良いか否かの問い合わせがあった場合には、タスク開始情報格納場所管理表439を参照し、対応するDBバッファのデータを主記憶から追い出しても良いか否かを判定し、判定結果をDBバッファ管理部427に通知する。
図24は、実施例2に係るタスク開始情報格納場所管理表の構成を示す。
タスク開始情報格納場所管理表439は、タスク開始情報毎の情報として、タスク開始情報ID439a、データアドレス集合格納場所439b、主記憶追出可否439cを有する。各種情報は、下記の通りである。
(*)タスク開始情報ID439aは、タスク開始情報を識別するためのID(タスク開始情報ID)を示す。
(*)データアドレス集合格納場所439bは、対応するタスク開始情報のデータアドレス集合が格納されている格納場所の情報である。データアドレス集合格納場所439bは、例えば、データアドレス集合がDBバッファ面437に格納されている場合には、「主記憶」となり、DBバッファではなく、外部ストレージ装置402の記憶デバイス群443に格納されている場合には、「二次記憶」となる。
(*)主記憶追出可否439cは、対応するデータアドレス集合を主記憶装置、すなわち、DBバッファ面437から解放することが可能であるか否かを示す。
(*)タスク開始情報ID439aは、タスク開始情報を識別するためのID(タスク開始情報ID)を示す。
(*)データアドレス集合格納場所439bは、対応するタスク開始情報のデータアドレス集合が格納されている格納場所の情報である。データアドレス集合格納場所439bは、例えば、データアドレス集合がDBバッファ面437に格納されている場合には、「主記憶」となり、DBバッファではなく、外部ストレージ装置402の記憶デバイス群443に格納されている場合には、「二次記憶」となる。
(*)主記憶追出可否439cは、対応するデータアドレス集合を主記憶装置、すなわち、DBバッファ面437から解放することが可能であるか否かを示す。
タスク割当て管理部431は、タスク開始情報を生成した場合、タスク開始情報を削除した場合、タスク開始情報のデータアドレス集合を記憶するページのDBバッファからの解放可否を変更した場合に、その内容をタスク開始情報格納場所管理部438に通知する。本例においては、例えば、タスク割当て管理部431は、所定のタイミングで、各タスク開始情報を対象に、図22に示すDBバッファ解放判定処理を実行し、各タスク開始情報のデータアドレス集合を記憶するページを格納するDBバッファ面の解放可否を示す判定結果をタスク開始情報格納場所管理部438に通知する。
タスク割当て管理部431は、コンテキストと関連づけられているデータアドレス集合を記憶するページがDBバッファ436にあるか否かを、タスク開始情報格納場所管理部438に問い合わせる。
DBバッファ管理部427は、タスク開始情報のデータアドレス集合を記憶するページを格納するDBバッファ面を確保した場合、及びそのDBバッファ面を解放した場合に、その内容をタスク開始情報格納場所管理部438に通知する。
DBバッファ管理部427は、DBバッファ面を開放して良いか否かをタスク開始情報格納場所管理部438に問い合わせる。
上記実施例2によると、上記実施例1と同様な効果を得ることができる。
以下、実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略或いは簡略する。
図25は、実施例3に係る計算機システムの構成を示す。
DBサーバ401に、アプリケーションサーバ(以下、APサーバ)3102が通信ネットワーク3112を介して通信できるように接続されており、また、外部ストレージ装置402が、通信ネットワーク403を介して通信できるように接続されている。APサーバ3102に、通信ネットアーク3111を介してユーザ端末(クライアント端末)3101が通信できるように接続されている。DBサーバ401は、DBを管理するDBMSを実行する。外部ストレージ装置402は、DBを格納する。APサーバ3102は、DBサーバ401で実行されるDBMSにクエリを発行するAPを実行する。ユーザ端末3101は、APサーバ3102で実行されるAPに要求を出す。ユーザ端末3101、又は、APサーバ3102は、複数存在しても良い。
APサーバ3102、DBサーバ401及び外部ストレージ装置402に、それぞれ、通信ネットワーク3114、3115及び3116をそれぞれ介してAPサーバ管理端末3103、DBサーバ管理端末3104及びストレージ管理端末3105が接続されている。APサーバ管理端末3103は、APサーバ3102を管理する端末であり、DBサーバ管理端末3104は、DBサーバ401を管理する端末であり、ストレージ管理端末3105は、外部ストレージ装置402を管理する端末である。管理端末3103〜3105のうちの少なくとも2つが共通(一体)であっても良い。通信ネットワーク3111、3112、3114、3115、3116、403のうちの少なくとも2つが共通(一体)であっても良い。
実施例3では、下記の処理の流れが実行されて良い。
(S31)APサーバ3102が、ユーザ端末3101から要求(以下、ユーザ要求)を受信する。
(S32)APサーバ3102が、S31で受信したユーザ要求に従いクエリを生成し、生成したクエリをDBサーバ401に発行する。
(S33)DBサーバ401が、APサーバ3102からのクエリを受け付け、そのクエリを実行し、そのクエリの実行に伴い、データ入出力要求(例えばデータ読出し要求)を外部ストレージ装置402に発行する。DBサーバ401は、1つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、1つのクエリの実行において、S33が複数回並行して行われることがある。
(S34)DBサーバ401が、クエリの実行において、外部ストレージ装置402からデータ入出力要求に対する応答を受ける。DBサーバ401は、1つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、1つのクエリの実行において、S34が複数回並行して行われることがある。
(S35)DBサーバ401が、クエリの実行結果をAPサーバ3102に送信する。
(S36)APサーバ3102が、クエリの実行結果を受信し、その実行結果に従う、S31で受信したユーザ要求に対する回答を、ユーザ端末3101に送信する。
(S31)APサーバ3102が、ユーザ端末3101から要求(以下、ユーザ要求)を受信する。
(S32)APサーバ3102が、S31で受信したユーザ要求に従いクエリを生成し、生成したクエリをDBサーバ401に発行する。
(S33)DBサーバ401が、APサーバ3102からのクエリを受け付け、そのクエリを実行し、そのクエリの実行に伴い、データ入出力要求(例えばデータ読出し要求)を外部ストレージ装置402に発行する。DBサーバ401は、1つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、1つのクエリの実行において、S33が複数回並行して行われることがある。
(S34)DBサーバ401が、クエリの実行において、外部ストレージ装置402からデータ入出力要求に対する応答を受ける。DBサーバ401は、1つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、1つのクエリの実行において、S34が複数回並行して行われることがある。
(S35)DBサーバ401が、クエリの実行結果をAPサーバ3102に送信する。
(S36)APサーバ3102が、クエリの実行結果を受信し、その実行結果に従う、S31で受信したユーザ要求に対する回答を、ユーザ端末3101に送信する。
なお、APサーバ3102へのユーザ要求、又は、DBサーバへ発行されるクエリは同時に複数あっても良い。
以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、上記実施例では、クエリ実行部423は、DBオペレーションの条件に合致するデータのアドレスが1つの場合、タスクを新たに生成することなく同一のタスクを実行することでそのデータをDB451から読み出すが、DBオペレーションの条件に合致するデータのアドレスが1つの場合であっても、そのタスク(親タスク)を元に新たにタスク(子タスク)を生成し、子タスクを実行することで(子タスクにデータアドレスを割り当てることで)、そのデータをDB451から読み出しても良い。
また、DB451は、DBサーバ401におけるメモリ416以外の、メモリ416よりもアクセス速度が遅い記憶デバイス、例えばローカル記憶デバイス415に存在しても良い。
412…データベース管理システム(DBMS)
Claims (13)
- 第1の記憶デバイスよりアクセス速度の遅い第2の記憶デバイスに存在するデータベースを管理するデータベース管理システムであって、
前記データベースへのクエリを受け付けるクエリ受付部と、
前記受け付けたクエリを実行するために必要な1以上のDBオペレーションと前記1以上のDBオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成するクエリ実行プラン生成部と、
前記生成したクエリ実行プランに基づいて前記クエリを実行し、前記クエリの実行において、前記1以上のDBオペレーションを実行するためのタスクを動的に生成し、実行可能な2以上のタスクが存在する場合には、前記2以上のタスクのうちの少なくとも2つを並行して実行するクエリ実行部と、
前記タスクの実行を管理する実行タスク管理部と、
前記第2の記憶デバイスに存在する前記データベースのデータを、前記第1の記憶デバイスに一時的に読出して管理するDBバッファ管理部と
を有し、
前記クエリ実行部はコンテキスト管理部とタスク割当て管理部とを有し、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成し、前記タスクにより前記タスク開始情報が示す内容を実行し、
前記タスク開始情報は、コンテキストと前記コンテキストに関連づけられたデータアドレス集合とを含み、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するDBオペレーションが、前記クエリ実行プランに含まれる情報である1以上のDBオペレーションのうちのいずれであるかを示す第1の情報と、前記第1の情報が示すDBオペレーションに要するデータのアクセス先に関する第2の情報と、前記新たに生成するタスクにより前記1以上のDBオペレーションに関する結果を生成するために必要なデータに関する第3の情報とを含む情報であり、
前記データアドレス集合は、前記第2の記憶デバイスに存在し、前記データのアクセス先に関する第2の情報に基づいて、アクセス先データのアドレスを特定するための情報であり、
前記コンテキスト管理部は、前記生成されたコンテキストを管理し、
前記タスク割当て管理部は、
(A)前記コンテキストと関連づけられたデータアドレス集合が前記第1の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択し、
前記DBバッファ管理部は、
(B)タスク開始情報の管理状態に基づいて、前記第2の記憶デバイスから前記第1の記憶デバイスへデータアドレス集合を読み出し、又は、前記第1の記憶デバイスに読み出されたデータアドレス集合を削除する、
ことを特徴とする、データベース管理システム。 - 前記タスク割当て管理部は、
前記(A)で、前記第1の記憶デバイスに格納されているデータアドレス集合を含んだタスク開始情報が存在するか否かを判定し、その判定の結果が肯定的の場合に、前記第1の記憶デバイスに存在する前記データアドレス集合を含むタスク開始情報を選択し、前記判定が否定的の場合に、前記第2の記憶デバイスに存在するデータアドレス集合を選択し、前記選択されたデータアドレス集合を前記第1の記憶デバイスへ読み出し、前記読み出されたデータアドレス集合を含むタスク開始情報を選択する、
請求項1に記載のデータベース管理システム。 - 前記タスク割当て管理部は、
前記(A)で、前記第1の記憶デバイスに複数のデータアドレス集合が存在する場合に、前記複数のデータアドレス集合をそれぞれ含む複数のタスク開始情報のうち、アクセスされていないデータアドレス数が最も少ないデータアドレス集合を含むタスク開始情報を選択する、
請求項2に記載のデータベース管理システム。 - 前記タスク割当て管理部は、
(C)単位時間当たりに新たに生成される前記タスク開始情報の数である生成スピードと、アクセス先データが全てアクセスされた前記タスク開始情報が単位時間当たりに生じる数である消費スピードとを測定し、
(D)前記生成スピードと前記消費スピードとを比較し、
前記DBバッファ管理部は、前記(D)での比較の結果を基に、前記(B)を行う、
請求項1に記載のデータベース管理システム。 - 前記DBバッファ管理部は、前記(D)での比較の結果が、前記生成スピードが前記消費スピードより速い、である場合に、前記(B)で、前記第1の記憶デバイスから、アクセスされていないデータアドレス数が所定の値より多いデータアドレス集合を削除する、
請求項4に記載のデータベース管理システム。 - 前記DBバッファ管理部は、前記(D)での比較の結果が、前記生成スピードが前記消費スピードより遅い、である場合に、前記(B)で、前記第1の記憶デバイスから、アクセスされていないデータアドレス数が所定の値より少ないデータアドレス集合を削除する、
請求項4に記載のデータベース管理システム。 - 前記DBバッファ管理部は、前記(D)での比較の結果が、前記生成スピードが前記消費スピードより速い、である場合に、前記(B)で、前記1以上のタスク開始情報にそれぞれ対応する1以上のデータアドレス集合であって前記第1の記憶デバイスに存在していないデータアドレス集合のうち、アクセスされていないデータアドレス数が所定の値より少ないデータアドレス集合を、前記第2の記憶デバイスから前記第1の記憶デバイスに読み出す、
請求項4に記載のデータベース管理システム。 - 前記DBバッファ管理部は、前記(D)での比較の結果が、前記生成スピードが前記消費スピードより遅い、である場合に、前記(B)で、前記1以上のタスク開始情報にそれぞれ対応する1以上のデータアドレス集合であって前記第1の記憶デバイスに存在していないデータアドレス集合のうち、アクセスされていないデータアドレス数が所定の値より多いデータアドレス集合を、前記第2の記憶デバイスから前記第1の記憶デバイスに読み出す、
請求項4に記載のデータベース管理システム。 - 前記DBバッファ管理部は、
前記第1の記憶デバイスに、前記データアドレス集合を格納可能な空き容量が所定量より多い場合に、前記第2の記憶デバイス中の1以上の前記データアドレス集合を、前記第2の記憶デバイスから前記第1の記憶デバイスに読み出す、
請求項1に記載のデータベース管理システム。 - データベースを管理する計算機であって、
第1の記憶デバイスと、
前記第1の記憶デバイスに接続された制御デバイスと
を有し、
前記データベースが、第1の記憶デバイスよりアクセス速度の遅い第2の記憶デバイスに存在しており、
前記制御デバイスが、
(P)前記データベースへのクエリを受け付け、
(Q)前記受け付けたクエリを実行するために必要な1以上のDBオペレーションと前記1以上のDBオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成し、
(R)前記生成したクエリ実行プランに基づいて前記クエリを実行し、前記クエリの実行において、前記1以上のDBオペレーションを実行するためのタスクを動的に生成し、実行可能な2以上のタスクが存在する場合には、前記2以上のタスクのうちの少なくとも2つを並行して実行し、
(S)前記第2の記憶デバイスに存在する前記データベースのデータを、前記第1の記憶デバイスに一時的に読出して管理し、
前記制御デバイスが、前記(R)において、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成し、前記タスクにより前記タスク開始情報が示す内容を実行し、
前記タスク開始情報は、コンテキストと前記コンテキストに関連づけられたデータアドレス集合とを含み、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するDBオペレーションが、前記クエリ実行プランに含まれる情報である1以上のDBオペレーションのうちのいずれであるかを示す第1の情報と、前記第1の情報が示すDBオペレーションに要するデータのアクセス先に関する第2の情報と、前記新たに生成するタスクにより前記1以上のDBオペレーションに関する結果を生成するために必要なデータに関する第3の情報とを含む情報であり、
前記データアドレス集合は、前記第2の記憶デバイスに存在し、前記データのアクセス先に関する第2の情報に基づいて、アクセス先データのアドレスを特定するための情報であり、
前記制御デバイスが、
(A)前記コンテキストと関連づけられたデータアドレス集合が前記第1の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択し、
(B)タスク開始情報の管理状態に基づいて、前記第2の記憶デバイスから前記第1の記憶デバイスへデータアドレス集合を読み出し、又は、前記第1の記憶デバイスに読み出されたデータアドレス集合を削除する、
ことを特徴とする、計算機。 - 前記制御デバイスは、
前記(A)で、前記第1の記憶デバイスに格納されているデータアドレス集合を含んだタスク開始情報が存在するか否かを判定し、その判定の結果が肯定的の場合に、前記第1の記憶デバイスに存在する前記データアドレス集合を含むタスク開始情報を選択する、
請求項10に記載の計算機。 - 前記制御デバイスは、
(C)単位時間当たりに新たに生成される前記タスク開始情報の数である生成スピードと、アクセス先データが全てアクセスされた前記タスク開始情報が単位時間当たりに生じる数である消費スピードとを測定し、
(D)前記生成スピードと前記消費スピードとを比較し、
前記制御デバイスは、前記(D)での比較の結果を基に、前記(B)を行う、請求項10に記載の計算機。 - 第1の記憶デバイスよりアクセス速度の遅い第2の記憶デバイスに存在するデータベースを管理するデータベース管理方法であって、
(P)前記データベースへのクエリを受け付け、
(Q)前記受け付けたクエリを実行するために必要な1以上のDBオペレーションと前記1以上のDBオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成し、
(R)前記生成したクエリ実行プランに基づいて前記クエリを実行し、前記クエリの実行において、前記1以上のDBオペレーションを実行するためのタスクを動的に生成し、実行可能な2以上のタスクが存在する場合には、前記2以上のタスクのうちの少なくとも2つを並行して実行し、
(S)前記第2の記憶デバイスに存在する前記データベースのデータを、前記第1の記憶デバイスに一時的に読出して管理し、
前記(R)で、前記タスクにおいて実行を行う内容を示す情報であるタスク開始情報を生成して管理し、前記タスクにより、前記タスク開始情報が示す内容を実行し、
前記タスク開始情報は、コンテキストと前記コンテキストに関連づけられたデータアドレス集合とを含み、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するDBオペレーションが、前記クエリ実行プランに含まれる情報である1以上のDBオペレーションのうちのいずれであるかを示す第1の情報と、前記第1の情報が示すDBオペレーションに要するデータのアクセス先に関する第2の情報と、前記新たに生成するタスクにより前記1以上のDBオペレーションに関する結果を生成するために必要なデータに関する第3の情報とを含む情報であり、
前記データアドレス集合は、前記第2の記憶デバイスに存在し、前記データのアクセス先に関する第2の情報に基づいて、アクセス先データのアドレスを特定するための情報であり、
(A)前記コンテキストと関連づけられたデータアドレス集合が前記第1の記憶デバイスに存在するか否かに基づいてタスク開始情報を選択し、
(B)タスク開始情報の管理状態に基づいて、前記第2の記憶デバイスから前記第1の記憶デバイスへデータアドレス集合を読み出し、又は、前記第1の記憶デバイスに読み出されたデータアドレス集合を削除する、
ことを特徴とする、データベース管理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/063332 WO2013175609A1 (ja) | 2012-05-24 | 2012-05-24 | データベース管理システム、計算機、データベース管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2013175609A1 JPWO2013175609A1 (ja) | 2016-01-12 |
JP5858308B2 true JP5858308B2 (ja) | 2016-02-10 |
Family
ID=49623340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014516587A Active JP5858308B2 (ja) | 2012-05-24 | 2012-05-24 | データベース管理システム、計算機、データベース管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10747773B2 (ja) |
JP (1) | JP5858308B2 (ja) |
WO (1) | WO2013175609A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2843559A4 (en) * | 2012-04-27 | 2016-01-13 | Hitachi Ltd | DATABASE MANAGEMENT SYSTEM, COMPUTERS AND DATABASE MANAGEMENT PROCEDURES |
US9558322B2 (en) * | 2014-05-01 | 2017-01-31 | Intertrust Technologies Corporation | Secure computing systems and methods |
JP6690829B2 (ja) * | 2015-08-28 | 2020-04-28 | 国立大学法人 東京大学 | 計算機システム、省電力化方法及び計算機 |
US11816110B2 (en) | 2021-06-22 | 2023-11-14 | International Business Machines Corporation | Processing large query results in a database accelerator environment |
US11941029B2 (en) | 2022-02-03 | 2024-03-26 | Bank Of America Corporation | Automatic extension of database partitions |
CN117114628B (zh) * | 2023-10-20 | 2024-02-13 | 广东电网有限责任公司梅州供电局 | 一种临时计划识别方法、装置、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108653A (en) | 1998-08-31 | 2000-08-22 | Platinum Technology Ip, Inc. | Method and apparatus for fast and comprehensive DBMS analysis |
JP4611830B2 (ja) * | 2005-07-22 | 2011-01-12 | 優 喜連川 | データベース管理システム及び方法 |
JP4071816B1 (ja) | 2007-03-22 | 2008-04-02 | 透 降矢 | 合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム |
JP2012026140A (ja) * | 2010-07-22 | 2012-02-09 | Ykk Ap株式会社 | 建具 |
TW201205551A (en) * | 2010-07-29 | 2012-02-01 | Hon Hai Prec Ind Co Ltd | Display device assembling a camera |
JP5199317B2 (ja) * | 2010-08-25 | 2013-05-15 | 株式会社日立製作所 | データベース処理方法、データベース処理システム及びデータベースサーバ |
-
2012
- 2012-05-24 JP JP2014516587A patent/JP5858308B2/ja active Active
- 2012-05-24 WO PCT/JP2012/063332 patent/WO2013175609A1/ja active Application Filing
- 2012-05-24 US US14/402,878 patent/US10747773B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2013175609A1 (ja) | 2013-11-28 |
US20150169591A1 (en) | 2015-06-18 |
US10747773B2 (en) | 2020-08-18 |
JPWO2013175609A1 (ja) | 2016-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5858151B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
CN107247808B (zh) | 一种分布式NewSQL数据库***及图片数据查询方法 | |
JP5858308B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
JP4659888B2 (ja) | データベース処理システム、計算機及びデータベース処理方法 | |
JP5999574B2 (ja) | データベース管理システム及び計算機システム | |
US20130055371A1 (en) | Storage control method and information processing apparatus | |
JP2004070403A (ja) | ファイル格納先ボリューム制御方法 | |
CN110297799A (zh) | 数据管理***及方法 | |
JP2007034414A (ja) | データベース管理システム及び方法 | |
US8296286B2 (en) | Database processing method and database processing system | |
CN111506269A (zh) | 一种磁盘存储空间分配方法、装置、设备及存储介质 | |
CN109086388A (zh) | 区块链数据存储方法、装置、设备及介质 | |
US10810174B2 (en) | Database management system, database server, and database management method | |
JP2011191835A (ja) | 計算機システムおよびアプリケーションプログラムの実行方法 | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
EP4118536A1 (en) | Extensible streams on data sources | |
CN111459884A (zh) | 一种数据的处理方法、装置、计算机设备和存储介质 | |
JP6272556B2 (ja) | 共有リソース更新装置及び共有リソース更新方法 | |
WO2015015559A1 (ja) | 検索システムおよび検索方法 | |
US20180267873A1 (en) | Systems and methods for support log cache device removal through standard user interfaces | |
JP2013088920A (ja) | 計算機システム及びデータ管理方法 | |
CN113127415A (zh) | 实时流文件的处理方法、装置、介质及电子设备 | |
JP6210501B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
JP5674850B2 (ja) | データベース管理システム及び方法 | |
JP2015026396A (ja) | データベース管理システム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20151104 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151202 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5858308 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |