JP5967672B2 - データベース管理システム、計算機、データベース管理方法 - Google Patents
データベース管理システム、計算機、データベース管理方法 Download PDFInfo
- Publication number
- JP5967672B2 JP5967672B2 JP2014512275A JP2014512275A JP5967672B2 JP 5967672 B2 JP5967672 B2 JP 5967672B2 JP 2014512275 A JP2014512275 A JP 2014512275A JP 2014512275 A JP2014512275 A JP 2014512275A JP 5967672 B2 JP5967672 B2 JP 5967672B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- query
- memory resource
- generated
- execution
- 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 OR CALCULATING; 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/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
(1)DBMSは、クエリの実行結果を生成する前に多くのタスクを生成し、割り当て可能なメモリ資源の量を超える大量のメモリ資源を消費してしまう。これにより、メモリ資源が枯渇してスラッシングが発生し、システム全体のスローダウンが引き起こされる。
(2)割り当て可能なメモリ資源の量に余裕があるにも関わらず、DBMSにより並行して実行されるタスクの数が少なくなってしまう。これにより、データ読出し要求の多重度が不足し、その結果、性能を十分に引き出すことができない。
そこで、本発明の目的は、割り当て可能なメモリ資源量に制約のある環境において、クエリ実行時に動的に生成されるタスクの数を適切な数とし、当該制約の範囲内でクエリ実行時間を短縮化することにある。
(S1)索引Aを用いて、カラムA_Typeの指定値を含む表Aのレコードに対応したRowID Listを検索する、
(S2)上記(S1)で見つかったRowID Listを用いて表Aの該当するレコードを含むデータをフェッチし、該当するレコードのカラムAC1及びAC2の値を抽出する、
(S3)索引Bを用いて、上記(S2)で抽出したカラムAC2の値と一致するカラムBC1の値を含んだ表BのレコードのRowID Listを検索する、
(S4)上記(S3)で見つかったRowID Listを用いて表Bの該当するレコードを含むデータをフェッチし、該当するレコードのカラムBC2の値を抽出する、
(S5)クエリ実行の結果として、抽出したカラムAC1及びBC2の値を生成しクエリ発行元に返す。
(*)横軸は、時刻を表す。
(*)図上部の横に長い五角形は、一つのタスクによるDBオペレーションを意味する。五角形の左端は、タスクが生成され、該タスクによるDBオペレーションが開始される時刻を表す。五角形の右端は、該タスクによるDBオペレーションが終了し、該タスクが終了される時刻を表す。
(*)図上部の五角形の内部の値は、タスクに対応したDBオペレーションに伴いフェッチされるデータと、結果を生成するために必要なフェッチ済みのデータとを表す。
(*)図下部の縦軸は、クエリを実行する際に消費されるメモリ資源の量(割り当てられたメモリ資源の量)を表す。
(*)割り当て可能なメモリ資源量の上限値(以下、割り当て上限値)は「6」であるとする。
(*)一つのタスクに対応するDBオペレーションに必要なメモリ資源量は「1」であるとする。なお、タスク自体の生成に要するメモリ資源は、クエリの実行に消費されるメモリ資源とは別に管理されているものとする。
(t0)索引Aにアクセスするためのタスク11Aを生成する。タスク11Aでは、表AのカラムA_Typeの値が「AAA」であるレコードのRowID Listの検索を行う。DBMSは、タスク11Aの実行に必要なメモリ資源を割り当て、タスク11Aを実行する。
(t1)タスク11Aの実行によりRowID List「a1」を得る。DBMSは、その実行結果に基づき、表Aのデータをフェッチするためのタスク11B及び11Cを生成する。タスク11Bでは、表Aの1レコード目を含むデータをフェッチし、タスク11Cでは、表Aの3レコード目を含むデータをフェッチする。DBMSは、タスク11B及び11Cの実行に必要なメモリ資源をそれぞれ割り当て、タスク11B及び11Cを実行する。その後、タスク11Aに割り当てていたメモリ資源を解放しタスク11Aを終了する。
(t2)タスク11Bの実行により、フェッチされた表Aの1レコード目を含むデータからAC1の値「A1」及びAC2の値「001」を抽出する。DBMSは、その実行結果に基づき、索引Bにアクセスするためのタスク11Xを生成する。タスク11Xでは、抽出したAC2の値と一致するBC1の値を持つ表BのレコードのRowID Listの検索を行う。DBMSは、タスク11Xの実行に必要なメモリ資源を割り当て、タスク11Xを実行する。なお、DBMSは、タスク11Xに割り当てたメモリ資源に、クエリの結果を生成するためのデータであるAC1の値「A1」、及び、タスク11Xに対応するDBオペレーション(索引BへのRowID Listの検索)を行うために必要なデータであるAC2の値「001」を、それぞれ設定する。その後、DBMSは、タスク11Bに割り当てていたメモリ資源を解放しタスク11Bを終了する。同様に、DBMSは、タスク11Cの実行により、フェッチされた表Aの3レコード目を含むデータからAC1の値「A3」及びAC2「003」の値を抽出する。DBMSは、その実行結果に基づき、索引Bにアクセスするためのタスク11Yを生成する。タスク11Yでは、抽出したAC2の値と一致するBC1の値を持つ表BのレコードのRowID Listの検索を行う。DBMSは、タスク11Yの実行に必要なメモリ資源を割り当て、タスク11Yを実行する。なお、DBMSは、タスク11Yに割り当てたメモリ資源に、クエリの結果を生成するためのデータであるAC1の値「A3」、及び、タスク11Yに対応するDBオペレーション(索引BへのRowID Listの検索)を行うために必要なデータであるAC2の値「003」を、それぞれ設定する。その後、DBMSは、タスク11Cに割り当てていたメモリ資源を解放しタスク11Cを終了する。
t2の時点では、クエリの実行に際して消費されるメモリ資源の割り当て量は、割り当て上限値「6」を超えない。
(t3)タスク11Xの実行によりRowID List「b1」を得る。DBMSは、その実行結果に基づき、表Bの三つのレコードを含むデータそれぞれをフェッチするためのタスクを三つ生成し、その実行に必要なメモリ資源をそれぞれ割り当てようとする。また、同じくt3で、DBMSは、タスク11Yの実行によりRowID List「b3」を得る。DBMSは、その実行結果に基づき、表Bの五つのレコードを含むデータそれぞれをフェッチするためのタスクを五つ生成し、その実行に必要なメモリ資源をそれぞれ割り当てようとする。
すなわち、DBMSは、t3で、8個のタスクを生成しそれぞれにメモリ資源を割り当てようとする。しなしながら、割り当て上限値が「6」であるため、タスクに割り当てるメモリ資源が枯渇し、スラッシングが発生してしまう。その結果、システム全体のスローダウンを引き起こしてしまう。ここで、割り当て上限値は、時間の経過に伴い変化しうる。その原因として、例えば、DBMS以外のコンピュータプログラムの実行状況や、仮想化プログラムが作成し実行する仮想マシン上にDBMSを構築した際における仮想マシンの総メモリ資源量の変化があげられる。
(t0)索引Aにアクセスするためのタスクを生成する際に、同時生成タスク数決定処理を行う。例えば、DBMSは、生成可能タスク数「1」と、第1のメモリ資源量「1」と、第2のメモリ資源量「6」(割り当て上限値「6」)とに基づき、同時生成タスク数を「1」と算出する。DBMSは、算出した同時生成タスク数「1」と同数のタスクを生成し、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。
(t1)t0で実行したタスクの結果に基づいて、表Aの二つのレコードを含むデータそれぞれをフェッチするためのタスクを二つ生成する際に、同時生成タスク数決定処理を行う。例えば、DBMSは、生成可能タスク数「2」と、第1のメモリ資源量「1」と、第2のメモリ資源量「5」(割り当てて上限値「6」から割り当て済みのメモリ資源量「1」を減じた値)とに基づき、同時生成タスク数を「2」と算出する。DBMSは、算出した同時生成タスク数「2」と同数のタスク11B’及び11C’を生成し、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。
(t2)タスク11B’の実行結果に基づいて、索引Bにアクセスするためのタスクを一つ生成する際に、同時生成タスク数決定処理を行う。例えば、DBMSは、生成可能タスク数「1」と、第1のメモリ資源量「1」と、第2のメモリ資源量「4」(割り当てて上限値「6」から割り当て済みのメモリ資源量「2」を減じた値)とに基づき、同時生成タスク数を「1」と算出する。DBMSは、算出した同時生成タスク数「1」と同数のタスク11X’を生成し、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。タスク11C’についても同様に、その実行結果に基づいてタスクを一つ生成する際に、同時生成タスク数決定処理を行い、同時生成タスク数を「1」と算出する。DBMSは、算出した同時生成タスク数「1」と同数のタスク11Y’を生成し、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。
t2までは、クエリ実行に消費されるメモリ資源の量が割り当て上限値「6」を超えない。そのため、実行するタスクの振る舞いと、クエリ実行に消費されるメモリ資源の量の変化とは、図7と同じである。
t3において、DBMSがタスクを新たに生成する際に、図7と違って、同時に生成し実行されるタスクの数は以下述べるように8個にならず、メモリ資源の枯渇を回避することができる。
(t3)タスク11X’の実行結果に基づいて、表Bの三つのレコードを含むデータそれぞれをフェッチするためのタスクを三つ生成する際に、同時生成タスク数決定処理を行う。例えば、DBMSは、生成可能タスク数「3」と、第1のメモリ資源量「1」と、第2のメモリ資源量「4」(割り当てて上限値「6」から割り当て済みのメモリ資源量「2」を減じた値)とに基づき、同時生成タスク数を「3」と算出する。DBMSは、算出した同時生成タスク数のタスク三つを生成し、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。同様に、タスク11Y’の実行結果に基づいて、表Bの五つのレコードを含むデータそれぞれをフェッチするためのタスクを五つ生成する際に、同時生成タスク数決定処理を行う。例えば、DBMSは、生成可能タスク数「5」と、第1のメモリ資源量「1」と、第2のメモリ資源量「1」(割り当て上限値「6」から割り当て済みのメモリ資源量「5」を減じた値)とに基づき、同時生成タスク数を「1」と算出する。DBMSは、算出した同時生成タスク数「1」と同数のタスクを生成し、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。このとき、タスク11Y’について、その実行結果に基づいて新たに生成可能なタスクは残り四つあるので、DBMSは、新たなタスクの生成が可能になるまでタスク11Y’によるタスクの生成を待たせる。一方、タスク11X’について、その実行結果に基づいて生成可能であった三つのタスクを全て生成し実行を開始したので、DBMSは、タスク11X’に割り当てていたメモリ資源を解放しタスク11X’を終了する(t3の直後)。タスク11X’の終了により、新たに割り当て可能なメモリ資源量である第2のメモリ資源量が「1」となったため、DBMSは、タスクの生成を待っていたタスク11Y’について同時生成タスク数決定処理を行う。該処理により同時生成タスク数を「1」と算出し、算出した数と同数のタスクを生成しメモリ資源を割り当てて実行する。タスク11Y’の実行結果に基づいて新たに生成可能なタスクは残り三つあるので、DBMSは、新たなタスクの生成が可能になるまでタスク11Y’によるタスクの生成を待たせる。
(t4)t3で実行した四つのタスクについて、その実行を終え、クエリの結果を生成する。DBMSは、実行を終えた四つのタスクそれぞれについて、割り当てていたメモリ資源を解放しタスクを終了する(t4の直後)。これにより、第2のメモリ資源量が「4」となったため、DBMSは、タスクの生成を待っていたタスク11Y’について同時生成タスク数決定処理を行う。該処理により同時生成タスク数を「3」と算出し、算出した数と同数のタスクを生成しメモリ資源を割り当てて実行する。
(t5)t4までに実行した全てのタスクの実行を終え、クエリの結果を生成する。
上記の通り、複数のクエリを並行して実行する際に消費されるメモリ資源の総量を、割り当て上限値以下とし、タスクに割り当てるためのメモリ資源の枯渇を回避することができる。そして、同時に生成されるタスクの数を同時生成タスク数と同じにすることで、割り当て上限値の範囲内において、各クエリのデータ読出し要求を、クエリ毎の優先度に応じた最大の多重度で発行することが期待できる。故に、クエリ毎の実行時間をクエリ毎の優先度に応じて短縮化することが期待できる。
(1)同時に実行するクエリの総数が変化する、
(2)少なくとも一つのクエリの優先度が変化する、
を契機に変化して良い。
また、図7〜図9は、概要のイメージを表す模式的な図であり、DBMSは、複数のタスクを同じ時点で開始しなくても良い。
クエリ実行管理表424は、部分クエリ毎の情報として、優先度901、最優先フラグ902、目標実行時間903、実行開始時刻904、実行達成率905、既割り当てメモリ資源量906及び既予約メモリ資源量907を有する。更にクエリ実行管理表424は、複数の部分クエリに共通の情報として、未予約メモリ資源量908及び割り当て可能総メモリ資源量909を有する。各種情報は、下記の通りである。
(*)優先度901は、部分クエリを実行する優先度を表す。優先度901としての数値が高いほど、優先度が高い。優先度は、受け付けるクエリ自体に指定されていても良いし、クエリとは別にユーザから指定されても良い。優先度は、例えば、クエリ発行元のAP411に関する属性、クエリを発行したユーザに関する属性、及び/又は、クエリ実行プランの内容を基に、DBMS412或いはユーザにより決定されて良い。
(*)最優先フラグ902は、最優先して実行される部分クエリである(オン)か否かを示すフラグである。本フラグ902は、DBMS412が受け付けるクエリ自体に指定されても良いし、クエリとは別にDBMS412の外側からユーザにより手動で設定されても良いし、DBMS412の内部でクエリ実行プラン生成部422によりクエリ実行プランを生成される際にその内容に応じて設定されても良い。
(*)目標実行時間903は、部分クエリの実行にかける時間の目標値を示す。本目標値は、ユーザにより指定されても良いし、DBMS412(例えばクエリ実行プラン生成部423)により決定されても良い。例えば、クエリ実行プラン生成部423は、コスト計算を基にクエリ実行プランを生成する際に、その計算に基づく予測実行時間を目標実行時間903と決めても良い。
(*)実行開始時刻904は、部分クエリの実行を開始した時刻を示す。
(*)実行達成率905は、部分クエリの実行が全体のうちのどこまで終了したかを示す。すなわち、実行達成率905は、部分クエリの実行の進捗を表す。例えば、実行達成率905は、上記のコスト計算に基づく予測全I/O数(予測DBオペレーション数)に対する、実行を完了したI/O数(完了DBオペレーション数)の比率で良い。
(*)既割り当てメモリ資源量906は、部分クエリの既予約メモリ資源量907のうち、その部分クエリの実行に割り当て済みのメモリ資源量を示す。
(*)既予約メモリ資源量907は、部分クエリを実行するために予約済みのメモリ資源量を示す。
(*)未予約メモリ資源量908は、割り当て可能総メモリ資源量909のうちいずれの部分クエリの実行にも予約されていないメモリ資源の総量である。
(*)割り当て可能総メモリ資源量909は、全ての部分クエリの実行に割り当て可能なメモリ資源の総量である。このメモリ資源量909の値が、割り当て上限値に相当する。
(x)実行している部分クエリについて、優先度901が高くなったり、最優先フラグ902が付与されたりする等の原因により、該部分クエリの実行に割り当て可能なメモリ資源量が増えた、
(y)未予約メモリ資源量908又は割り当て可能総メモリ資源量909が増えた、
等の事象が発生することにより、新たなタスクを生成可能になることが考えられる。なお、S1201で、クエリ実行部423は、クエリ実行管理表424を参照して、実行している部分クエリに対応する実行開始時刻904から所定の時間を経過した場合、この部分クエリを含むクエリの実行をエラー終了しても良い。クエリの実行をエラー終了する際には、クエリ実行部423は、該クエリの実行に関連するメモリ資源を解放且つ予約解消して、関連するタスクを終了する。
P=対象部分クエリに対応する既割り当てメモリ資源量906。
Q=対象タスクを実行するために必要とする新規割り当てメモリ資源量。
R=対象部分クエリに対応する既予約メモリ資源量907。
(1)既割り当てメモリ資源量906が減少する、
(2)既予約メモリ資源量907が増加する、及び
(3)一定時間が経過する、
のうちのいずれかのイベントを検出するまで待つ。そのいずれかのイベントを検出した場合に、メモリ資源管理部425は、再度、S1402を行って良い。S1402の判断の結果が肯定的であれば(S1402:T)、メモリ資源管理部425は、S1403を行う。
S1404で、メモリ資源管理部425は、予約しているメモリ資源の中から新規割り当てメモリ資源量分のメモリ資源を、対象タスクに割り当てる。
(a)要求された予約メモリ資源量、
(b)未予約メモリ資源量908、
のうち小さい方のメモリ資源量を算出する。
(a)要求された予約メモリ資源量、
(b)未予約メモリ資源量908、
(c)対象部分クエリの実行について割り当て可能なメモリ資源量の上限値から、対象部分クエリに対応する既予約メモリ資源量907を減算することにより得られるメモリ資源量、
のうちの最小のメモリ資源量を算出する。
S1606で、メモリ資源管理部425は、クエリ実行に割り当て可能なメモリ資源のうち、予約されていないメモリ資源の中から、S1603又はS1604で算出した量のメモリ資源を予約する。
図19は、メモリ資源増加処理の流れを示す。
サーバメモリ資源増加処理は、例えば、DBサーバ401のメモリ416が増設された場合に、又は、DBサーバ401が仮想マシンであり該仮想マシンの総メモリ資源量が増加された場合に、OS415に認識される総メモリ資源量を増加する処理である。
サーバメモリ資源減少処理は、例えば、DBサーバ401のメモリ416が減設された場合に、又は、DBサーバ401が仮想マシンであり該仮想マシンの総メモリ資源量が減少された場合に、OS415に認識される総メモリ資源量を減少する処理である。
(1)上記経過時間が目標実行時間903に所定割合接近した場合に、優先度を以前の値から一つ上げる。
(2)上記経過時間が目標実行時間903を所定割合経過した場合に、優先度を以前の値から一つ上げる。
(3)実行達成率905が所定割合以上であり且つ上記経過時間が目標実行時間903の所定割合未満である場合に、優先度を以前の値から一つ下げる。
(1)クエリ実行管理表424の割り当て可能総メモリ資源量909又は未予約メモリ資源量908が増加した。
(2)クエリ実行管理表424のある部分クエリの優先度901が変化した、又は、最優先フラグ902がオンになった。
なお、本タスク追加生成処理は、クエリ実行管理表424の未予約メモリ資源量908が所定値以上の場合に、クエリ実行管理表424の全ての部分クエリについて、タスクの生成を保留するタスクが存在しなくなるまで繰り返されても良い。
実施例2においても、DBMS412は、タスクを新たに生成する都度に、同時生成タスク数決定処理を行う。実施例2では、DBMS412は、同時生成タスク数決定処理において、新たに生成するタスク当たりに割り当てを要するメモリ資源量である第1のメモリ資源量を、新たに生成するタスクに対応する、結果生成に至るまでの後続のDBオペレーションに要するメモリ資源量に基づき算出する(実施例1では、第1のメモリ資源量は、新たに生成するタスクに対応する一つのDBオペレーションに要するメモリ資源量に基づく)。すなわち、DBMS412は、新たに生成するタスクに、結果生成に至るまでの後続のDBオペレーションを対応させ、実行する。これにより、一つのタスクにより、そのタスクに対応した結果生成に至るまでの後続のDBオペレーションを、途中にメモリ資源の割り当てを行うことなく実行することができる。なお、結果生成とは、クエリ実行プランに基づき定義された処理であり、典型的には、クエリの発行元に返される結果の生成である。だがそれに限らず、例えば、クエリ実行プランに含まれる部分クエリ毎の中間結果の生成でも良い。結果生成に至るまでの後続のDBオペレーションとは、新たに生成するタスクにより実行を開始するDBオペレーションから、該DBオペレーションより後の結果生成に至るまでの一連のDBオペレーションを意味する。
また、実施例2では、DBMS412は、タスクを新たに生成する都度に、新たに生成するタスクを実行するために必要な情報を有するコンテキストを生成する。コンテキストは、例えば、新たに生成するタスクにおいて実行を開始するDBオペレーションが、クエリ実行プランに含まれる情報である1以上のDBオペレーションのうちのいずれであるかに関する第1の情報と、該第1の情報が示すDBオペレーションに要するデータのアクセス先に関する第2の情報と、結果を生成するために必要なフェッチ済みのデータに関する第3の情報とを含む情報である。DBMS412は、生成したコンテキストを基に新たなタスクを生成して実行する。実施例2では、コンテキストを生成することにより、タスクの生成を保留するタスクは生じない。
(*)図上部の横に長い五角形は、一つのタスクに対応した、結果生成に至るまでの後続のDBオペレーションを意味する。
(*)五角形内部の文字列について、単位時間内(例えば、t0〜t1、又は、t1〜t2等)の「|」で区切られる各フィールドは、該当タスクに対応した、結果生成に至るまでの後続のDBオペレーションに要するメモリ資源に相当する。メモリ資源に相当する各フィールドには、該タスクを実行する時間の経過に伴って、単位時間経過後にタスク実行によりフェッチされるデータ、又は、結果を生成するために必要なフェッチ済みのデータが入力される。すなわち、一つのタスクに対応した、結果生成に至るまでの後続のDBオペレーションに要するメモリ資源は、タスク生成時に割り当てられることを表す。そして、そのメモリ資源に、時間の経過とともにデータが入力されることを表す。
(*)五角形内部の文字列について、太字及び下線の文字列は、該当タスクの単位時間に対応するDBオペレーションにおいて必要なデータである。一方、細字の文字列は、該当タスクの単位時間より前に対応したDBオペレーションで得たデータであり、その単位時間以降において必要のないデータである。故に、該データに関するメモリ資源は、その単位時間以降において解放可能であることを表す。
(*)小さい太枠の正方形は、コンテキストを表す。コンテキストを基にタスクを生成することを、タスクの実行開始時点を表す五角形の左端にコンテキストを配置することによって表す。
(*)一つのタスクの実行に要するメモリ資源量は、簡略化のため、タスクを表す五角形の内部のフィールドの数がいくつであっても、図7と同じく「1」とする。
(*)コンテキストに要するメモリ資源量は、タスクの実行に要するメモリ資源量に比べて十分小さいので本説明では「0」とする。
(t0)索引Aにアクセスする新たなタスクを実行するための一つのコンテキスト25Aを生成する。DBMS412は、コンテキスト25Aに基づき同時生成タスク数決定処理を行う。例えば、対象のコンテキストの数と同数である生成可能タスク数「1」と、第1のメモリ資源量「1」と、第2のメモリ資源量「6」(割り当て上限値「6」)とに基づき、同時生成タスク数を「1」と算出する。DBMS412は、算出した同時生成タスク数と同数のタスク24Aを生成する。そして、コンテキスト25Aに基づいて、対応するDBオペレーションに要するメモリ資源をタスク24Aに割り当てて実行する。タスク24Aに割り当てられるメモリ資源は、例えば、図5のクエリ実行プランにおいて、索引Aへのアクセスから結果生成に至るまでの全てのDBオペレーションに要するデータに相当し、五つのフィールドに相当する。
(t1)タスク24Aの実行結果から、DBMS412は、表Aの二つのレコードを含むデータそれぞれをフェッチする必要があることが分かる。そこで、DBMS412は、表Aの一方のレコード(3レコード目)を含むデータをフェッチするためのタスクについて、該タスクを実行するためのコンテキスト25Bを一つ生成する。また、DBMS412は、表Aの他方のレコード(1レコード目)を含むデータのフェッチをタスク24Aにより継続して行う。タスク24Aの継続実行は、対応するDBオペレーションに必要なメモリ資源を予め割り当てているため可能である。DBMS412は、コンテキスト25Bに基づき同時生成タスク数決定処理を行う。例えば、対象のコンテキストの数と同数である生成可能タスク数「1」と、第1のメモリ資源量「1」と、第2のメモリ資源量「5」(割り当て上限値「6」から割り当て済みのメモリ資源量「1」を減算した値)とに基づき、同時生成タスク数を「1」と算出する。DBMS412は、算出した同時生成タスク数と同数のタスク24Bを生成する。そして、コンテキスト25Bに基づいて、対応するDBオペレーションに要するメモリ資源をタスク24Bに割り当てて実行する。タスク24Bに割り当てるメモリ資源は、例えば、図5のクエリ実行プランにおいて、表Aのデータフェッチから結果生成に至るまでの一連のDBオペレーションに要するデータに相当し、四つのフィールドに相当する。
(t2)タスク24Aの実行結果から、DBMS412は、索引BにアクセスしてRowID Listを一つ検索する必要があることが分かる。DBMS412は、該当するDBオペレーションをタスク24Aにより継続して行う。同様に、タスク24Bの実行結果から、DBMS412は、索引BにアクセスしてRowID Listを一つ検索するDBオペレーションをタスク24Bにより継続して行う。
(t3)タスク24Aの実行結果から、DBMS412は、表Bの三つのレコードを含むデータそれぞれをフェッチする必要があることが分かる。そこで、DBMS412は、表Bの二つのレコードを含むデータそれぞれをフェッチするためのタスク各々について、それらタスクを実行するためのコンテキストを二つ生成する。また、DBMS412は、表Bの残り一つのレコードを含むデータのフェッチをタスク24Aにより継続して行う。同様に、タスク24Bの実行結果から、DBMS412は、表Bの五つのレコードを含むデータそれぞれをフェッチする必要があることが分かる。そこで、DBMS412は、表Bの四つのレコードを含むデータそれぞれをフェッチするためのタスク各々について、それらタスクを実行するためのコンテキストを四つ生成する。また、DBMS412は、表Bの残り一つのレコードを含むデータのフェッチをタスク24Bにより継続して行う。DBMS412は、生成した計六つのコンテキストに基づき同時生成タスク数決定処理を行う。例えば、対象のコンテキストの数と同数である生成可能タスク数「6」と、第1のメモリ資源量「1」と、第2のメモリ資源量「4」(割り当て上限値「6」から割り当て済みのメモリ資源量「2」を減算した値)とに基づき、同時生成タスク数を「4」と算出する。DBMS412は、算出した同時生成タスク数と同数のタスク24C、24D、24E及び24Fを生成する。そして、生成した六つのコンテキストのうちの四つに基づいて、対応するDBオペレーションに要するメモリ資源をタスク24C、24D、24E及び24F各々に割り当てて実行する。タスク24C、24D、24E及び24F各々に割り当てるメモリ資源は、例えば、図5のクエリ1のクエリ実行プランにおいて、表Bのデータフェッチから結果生成に至るまでの一連のDBオペレーションに要するデータに相当し、二つのフィールドに相当する。
(t4)t3で実行していた六つのタスクについて、その実行を終え、クエリの結果を生成する。DBMS412は、実行を終えた六つのタスクそれぞれについて、割り当てていたメモリ資源を解放しタスクを終了する(t4の直後)。これにより、第2のメモリ資源量が「6」となるため、DBMS412は、タスク生成に用いていない残り二つのコンテキストに基づき同時生成タスク数決定処理を行う。DBMS412は、該処理により同時生成タスク数を「2」と算出し、算出した数と同数のタスクを生成する。そして、生成した二つのタスクについて、同時生成タスク数決定処理に用いた二つのコンテキストに基づき、対応するDBオペレーションに要するメモリ資源を割り当てて実行する。
(t5)t4までに実行した全てのタスクの実行を終え、クエリの結果を生成する。
更に、実施例2では、タスク24A及び24Bのように、タスクの実行を開始したら結果生成に至るまで、途中にメモリ資源の割り当てを行うことなく実行することができる。メモリ資源の割り当て処理では、図16の通りタスクの実行待ちが生じる可能性があるため、その処理をタスクの実行中に行わないことで、開始したタスクを効率的に実行することができる。また、新たに生成するタスクの実行基となるコンテキストを生成しておくことで、割り当て済みのメモリ資源を有したままとなる、タスクの生成を待つタスクは生じない。これにより、タスクによる非効率なメモリ資源の浪費が起こることなくクエリを実行することができる。なお、DBMS412は、一つのタスクの実行結果から生成するコンテキスト(例えば、t3でタスク24Aの実行結果から生成する二つのコンテキスト)を、まとめて一つのコンテキストとして管理しても良い。
また、図26及び図27は、図7〜図9と同様に、実施例2における概要のイメージを表す模式的な図であり、DBMS412は、複数のタスクを同じ時点で開始しなくても良い。
(x)対象部分クエリの実行に関するコンテキストの総数の、所定数に対する比率、
(y)コンテキストに要するメモリ資源の予約可否(図18のメモリ資源予約処理に従う)、
を基に行われる。例えば、(x)の比率が所定比率を超えている、(y)の予約が不可能である、のいずれかに該当すれば、クエリ実行部423は、S2904の判断の結果を否定的とし、上記のいずれにも該当しなければ、S2904の判断の結果を肯定的として良い。クエリ実行部423は、該判断の結果が肯定的であれば、S2905を行い、該判断の結果が否定的であれば、S2912を行う。
なお、S2912において、クエリ実行部423は、上記した関連する全てのDBオペレーションにおける各実行結果に基づいて、S2904及びS2905の判断を行っても良い。このとき、クエリ実行部423は、或るDBオペレーションの実行結果から、S2904及びS2905の判断を踏まえてコンテキストの生成が可能になった場合、S2906〜S2911に従う処理を行っても良い。すなわち、クエリ実行部423は、再びコンテキストを生成し、該コンテキストに基づいてタスクを生成し実行しても良い。
(1)クエリ実行管理表424の割り当て可能総メモリ資源量909又は未予約メモリ資源量908が増加した。
(2)クエリ実行管理表424のある部分クエリの優先度901が変化した、又は、最優先フラグ902がオンになった。
(3)一定時間が経過した。
なお、本タスク追加生成処理は、クエリ実行管理表424の未予約メモリ資源量908が所定値以上の場合に、クエリ実行管理表424の全ての部分クエリについて、タスクの実行に用いられていないコンテキストが存在しなくなるまで繰り返されても良い。
(S31)ユーザ端末3101は、APサーバ3102に要求(以下、ユーザ要求)を発行する。
(S32)APサーバ3102は、S31で受信したユーザ要求に従いクエリを生成する。そして、生成したクエリをDBサーバ401に発行する。
(S33)DBサーバ401は、APサーバ3102からのクエリを受け付け、受け付けたクエリを実行する。DBサーバ401は、受け付けたクエリの実行において必要なデータ入出力要求(例えばデータ読出し要求)を外部ストレージ装置402に発行する。DBサーバ401は、一つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、DBサーバ401は、一つのクエリの実行において、S33の要求を複数回並行して行うことがある。
(S34)外部ストレージ装置402は、S33で発行されたデータ入出力要求について、DBサーバ401に応答する。外部ストレージ装置402は、S34の応答を複数回並行して行うことがある。
(S35)DBサーバ401は、クエリの実行結果を生成し、APサーバ3102に送信する。
(S36)APサーバ3102は、クエリの実行結果を受信する。そして、該実行結果に従う、S31で受信したユーザ要求に対する回答を、ユーザ端末3101に送信する。
なお、APサーバ3102に発行されるユーザ要求、又は、DBサーバへ発行されるクエリは、同時に複数あっても良い。
Claims (20)
- データベースを管理するデータベース管理システムであって、
前記データベースへのクエリを受け付けるクエリ受付部と、
前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションを表す情報を含むクエリ実行プランを生成するクエリ実行プラン生成部と、
前記生成したクエリ実行プランに基づいて前記受け付けたクエリを実行し、前記受け付けたクエリの実行において、データベースオペレーションを実行するためのタスクを動的に生成し、前記動的に生成されたタスクを実行するクエリ実行部と
を有し、
前記クエリ実行部は、前記受け付けたクエリの実行において、前記タスクを新たに生成する場合に、生成タスク数決定処理を実行し、
前記生成タスク数決定処理は、新たに生成するタスク当たりに割り当てを要するメモリ資源の量である第1のメモリ資源量と、新たに割り当て可能なメモリ資源の量である第2のメモリ資源量とを基に、生成することができるタスクの数である生成タスク数を算出することであり、
動的に生成されるタスクの数は、前記生成タスク数以下であり、
前記生成タスク数決定処理は、下記(A)及び(B)を含み、
(A)新たに生成可能なタスクの数である生成可能タスク数を特定すること、
(B)前記特定された生成可能タスク数と、前記第1のメモリ資源量とを基に、前記特定された生成可能タスク数分のタスクに割り当てが必要なメモリ資源量である第3のメモリ資源量を算出すること、
前記クエリ実行部は、メモリ資源を予約する処理である予約処理を実行し、
前記予約処理は、クエリの実行に割り当て可能なメモリ資源から、前記第2及び第3のメモリ資源量のうち小さい方のメモリ資源量である予約メモリ資源量分のメモリ資源を予約することであり、
前記生成タスク数決定処理は、更に、下記(C)を含む、
(C)前記第1のメモリ資源量と前記予約メモリ資源量とを基に前記生成タスク数を算出すること、
データベース管理システム。 - 前記クエリ実行部は、
1以上のクエリを並行して実行する際に、前記1以上のクエリの実行において、別々のタスクにより並行して実行を開始できる実行単位である部分クエリを2以上含み、前記2以上の部分クエリを並行して実行する場合、
前記2以上の部分クエリの各々の実行において、タスクを新たに生成する際に、前記生成タスク数決定処理を行う、
請求項1記載のデータベース管理システム。 - データベースを管理するデータベース管理システムであって、
前記データベースへのクエリを受け付けるクエリ受付部と、
前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションを表す情報を含むクエリ実行プランを生成するクエリ実行プラン生成部と、
前記生成したクエリ実行プランに基づいて前記受け付けたクエリを実行し、前記受け付けたクエリの実行において、データベースオペレーションを実行するためのタスクを動的に生成し、前記動的に生成されたタスクを実行するクエリ実行部と
を有し、
前記クエリ実行部は、前記受け付けたクエリの実行において、前記タスクを新たに生成する場合に、生成タスク数決定処理を実行し、
前記生成タスク数決定処理は、新たに生成するタスク当たりに割り当てを要するメモリ資源の量である第1のメモリ資源量と、新たに割り当て可能なメモリ資源の量である第2のメモリ資源量とを基に、生成することができるタスクの数である生成タスク数を算出することであり、
動的に生成されるタスクの数は、前記生成タスク数以下であり、
前記クエリ実行部は、
1以上のクエリを並行して実行する際に、前記1以上のクエリの実行において、別々のタスクにより並行して実行を開始できる実行単位である部分クエリを2以上含み、前記2以上の部分クエリを並行して実行する場合、
前記2以上の部分クエリの各々の実行において、タスクを新たに生成する際に、前記生成タスク数決定処理を行う、
データベース管理システム。 - 前記2以上の部分クエリのうちの一つの部分クエリの実行における前記生成タスク数決定処理において、前記第2のメモリ資源量は、第4及び第5のメモリ資源量のうちの小さい方であり、
前記第4のメモリ資源量は、前記2以上の部分クエリにそれぞれ対応した優先度に応じて、全ての部分クエリの実行に割り当て可能なメモリ資源の総量である総メモリ資源量を配分することにより得られる、前記一つの部分クエリの実行に割り当て可能なメモリ資源の量から、前記一つの部分クエリに対応した前記予約メモリ資源量の合計量である既予約メモリ資源量を減じた量であり、
前記第5のメモリ資源量は、前記2以上の部分クエリの実行に対応した2以上の前記既予約メモリ資源量の合計を前記総メモリ資源量から減じることにより得られる未予約メモリ資源量である、
請求項2又は3記載のデータベース管理システム。 - 前記クエリ実行部は、前記部分クエリ毎の目標実行時間と実行達成率とクエリ実行時間とのうち少なくとも一つを基に、前記部分クエリの前記優先度を動的に変更する、
請求項4記載のデータベース管理システム。 - 前記クエリ実行部は、前記部分クエリの前記優先度の変更を受け付ける入力インタフェースで受け付けた情報に従い、前記部分クエリの前記優先度を変更する、
請求項4又は5記載のデータベース管理システム。 - 前記クエリ実行部は、
生成されたタスクを実行する場合に、前記予約処理により予約されたメモリ資源から前記第1のメモリ資源量に基づく量のメモリ資源を、前記生成されたタスクに割り当て、
前記生成されたタスクの実行を終了する場合に、前記生成されたタスクに割り当てられたメモリ資源の解放及び予約の解消を行う
請求項1記載のデータベース管理システム。 - 前記生成タスク数決定処理は、前記実行されたタスクに対応したデータベースオペレーションの実行結果に基づいて前記タスクを新たに生成する場合に、実行される、
請求項1乃至7のうちのいずれか1項に記載のデータベース管理システム。 - 前記クエリ実行部は、前記タスクを新たに生成する場合に、コンテキストを生成して、前記生成したコンテキストに基づいて前記生成タスク数決定処理を実行し、前記生成したコンテキストに基づいて前記生成されたタスクを実行し、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するデータベースオペレーションが、前記クエリ実行プランに含まれる情報である1以上のデータベースオペレーションのうちのいずれであるかを示す第1の情報と、前記第1の情報が示すデータベースオペレーションに要するデータのアクセス先に関する第2の情報と、前記新たに生成するタスクにより前記1以上のデータベースオペレーションに関する結果を生成するために必要なデータに関する第3の情報とを含む情報である、
請求項1乃至8のうちのいずれか1項に記載のデータベース管理システム。 - 前記クエリ実行部は、前記第2のメモリ資源量が増加した場合、前記生成したコンテキストを用いて、前記生成タスク数決定処理を実行する、
請求項9記載のデータベース管理システム。 - 前記クエリ実行部は、前記1以上のデータベースオペレーションにおいて、結果生成に至るデータベースオペレーションの総数に対する、前記新たに生成するタスクにおいて実行を開始するデータベースオペレーションから結果生成に至る後続のデータベースオペレーションの数、の比率が、所定値より大きい場合に、前記コンテキストを生成する、
請求項10記載のデータベース管理システム。 - 前記クエリ実行部は、前記1以上のデータベースオペレーションにおいて、結果生成に至るデータベースオペレーションの総数に対する、前記新たに生成するタスクにおいて実行を開始するデータベースオペレーションから結果生成に至る後続のデータベースオペレーションの数、の比率が、所定値以下の場合に、前記コンテキスト及び新たなタスクを生成せず、実行しているタスクで前記後続のデータベースオペレーションを実行する、
請求項10記載のデータベース管理システム。 - 前記第1のメモリ資源量は、新たに生成するタスク当たりに割り当てを要するメモリ資源の量であって、前記新たに生成するタスクにおいて実行を開始するデータベースオペレーションから後続のデータベースオペレーションの実行に要するメモリ資源量である、
請求項1乃至12のうちのいずれか1項に記載のデータベース管理システム。 - 前記クエリ実行部は、前記生成したタスクを実行する場合に、前記実行するタスクに前記第1のメモリ資源量に基づく量のメモリ資源を割り当て、前記後続のデータベースオペレーションを実行する、
請求項13記載のデータベース管理システム。 - メモリと、
前記メモリに接続された制御デバイスと
を有し、
前記制御デバイスが、
(P)データベースへのクエリを受け付け、
(Q)前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションを表す情報を含むクエリ実行プランを生成し、
(R)前記生成したクエリ実行プランに基づいて前記受け付けたクエリを実行し、前記受け付けたクエリの実行において、データベースオペレーションを実行するためのタスクを動的に生成し、前記動的に生成されたタスクを実行し、
前記制御デバイスは、前記クエリの実行において、前記タスクを新たに生成する場合に、生成タスク数決定処理を実行し、
前記生成タスク数決定処理は、新たに生成するタスク当たりに割り当てを要するメモリ資源の量である第1のメモリ資源量と、新たに割り当て可能なメモリ資源の量である第2のメモリ資源量とを基に、生成することができるタスクの数である生成タスク数を算出することであり、
動的に生成されるタスクの数が、前記生成タスク数以下であり、
前記生成タスク数決定処理は、下記(A)及び(B)を含み、
(A)新たに生成可能なタスクの数である生成可能タスク数を特定すること、
(B)前記特定された生成可能タスク数と、前記第1のメモリ資源量とを基に、前記特定された生成可能タスク数分のタスクに割り当てが必要なメモリ資源量である第3のメモリ資源量を算出すること、
前記制御デバイスは、メモリ資源を予約する処理である予約処理を実行し、
前記予約処理は、クエリの実行に割り当て可能なメモリ資源から、前記第2及び第3のメモリ資源量のうち小さい方のメモリ資源量である予約メモリ資源量分のメモリ資源を予約することであり、
前記生成タスク数決定処理は、更に、下記(C)を含む、
(C)前記第1のメモリ資源量と前記予約メモリ資源量とを基に前記生成タスク数を算出すること、
計算機。 - メモリと、
前記メモリに接続された制御デバイスと
を有し、
前記制御デバイスが、
(P)データベースへのクエリを受け付け、
(Q)前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションを表す情報を含むクエリ実行プランを生成し、
(R)前記生成したクエリ実行プランに基づいて前記受け付けたクエリを実行し、前記受け付けたクエリの実行において、データベースオペレーションを実行するためのタスクを動的に生成し、前記動的に生成されたタスクを実行し、
前記制御デバイスは、前記クエリの実行において、前記タスクを新たに生成する場合に、生成タスク数決定処理を実行し、
前記生成タスク数決定処理は、新たに生成するタスク当たりに割り当てを要するメモリ資源の量である第1のメモリ資源量と、新たに割り当て可能なメモリ資源の量である第2のメモリ資源量とを基に、生成することができるタスクの数である生成タスク数を算出することであり、
動的に生成されるタスクの数が、前記生成タスク数以下であり、
前記制御デバイスは、
1以上のクエリを並行して実行する際に、前記1以上のクエリの実行において、別々のタスクにより並行して実行を開始できる実行単位である部分クエリを2以上含み、前記2以上の部分クエリを並行して実行する場合、
前記2以上の部分クエリの各々の実行において、タスクを新たに生成する際に、前記生成タスク数決定処理を行う、
計算機。 - 前記2以上の部分クエリのうちの一つの部分クエリの実行における前記生成タスク数決定処理において、前記第2のメモリ資源量は、第4及び第5のメモリ資源量のうちの小さい方であり、
前記第4のメモリ資源量は、前記2以上の部分クエリにそれぞれ対応した優先度に応じて、全ての部分クエリの実行に割り当て可能なメモリ資源の総量である総メモリ資源量を配分することにより得られる、前記一つの部分クエリの実行に割り当て可能なメモリ資源の量から、前記一つの部分クエリに対応した前記予約メモリ資源量の合計量である既予約メモリ資源量を減じた量であり、
前記第5のメモリ資源量は、前記2以上の部分クエリの実行に対応した2以上の前記既予約メモリ資源量の合計を前記総メモリ資源量から減じることにより得られる未予約メモリ資源量である、
請求項16記載の計算機。 - 前記制御デバイスは、前記タスクを新たに生成する場合に、コンテキストを生成して、前記生成したコンテキストに基づいて、前記生成タスク数決定処理を実行し、前記生成したタスクを実行し、
前記コンテキストは、前記新たに生成するタスクにおいて実行を開始するデータベースオペレーションが、前記クエリ実行プランに含まれる情報である1以上のデータベースオペレーションのうちのいずれであるかを示す第1の情報と、前記第1の情報が示すデータベースオペレーションに要するデータのアクセス先に関する第2の情報と、新たに生成するタスクにより前記1以上のデータベースオペレーションに関する結果を生成するために必要なデータに関する第3の情報とを含む情報である、
請求項15乃至17のうちのいずれか1項に記載の計算機。 - データベースを管理するデータベース管理方法であって、
(a)前記データベースへのクエリを受け付け、
(b)前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションを表す情報を含むクエリ実行プランを生成し、
(c)前記生成したクエリ実行プランに基づいて前記受け付けたクエリを実行し、前記受け付けたクエリの実行において、データベースオペレーションを実行するためのタスクを動的に生成し、前記動的に生成されたタスクを実行し、
前記(c)では、前記クエリの実行において、前記タスクを新たに生成する場合に、生成タスク数決定処理を実行し、
前記生成タスク数決定処理は、新たに生成するタスク当たりに割り当てを要するメモリ資源量である第1のメモリ資源量と、新たに割り当て可能なメモリ資源量である第2のメモリ資源量とを基に、生成することができるタスクの数である生成タスク数を算出することであり、
動的に生成されるタスクの数は、前記生成タスク数以下であり、
前記生成タスク数決定処理は、下記(A)及び(B)を含み、
(A)新たに生成可能なタスクの数である生成可能タスク数を特定すること、
(B)前記特定された生成可能タスク数と、前記第1のメモリ資源量とを基に、前記特定された生成可能タスク数分のタスクに割り当てが必要なメモリ資源量である第3のメモリ資源量を算出すること、
前記(c)では、メモリ資源を予約する処理である予約処理を実行し、
前記予約処理は、クエリの実行に割り当て可能なメモリ資源から、前記第2及び第3のメモリ資源量のうち小さい方のメモリ資源量である予約メモリ資源量分のメモリ資源を予約することであり、
前記生成タスク数決定処理は、更に、下記(C)を含む、
(C)前記第1のメモリ資源量と前記予約メモリ資源量とを基に前記生成タスク数を算出すること、
データベース管理方法。 - データベースを管理するデータベース管理方法であって、
(a)前記データベースへのクエリを受け付け、
(b)前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションを表す情報を含むクエリ実行プランを生成し、
(c)前記生成したクエリ実行プランに基づいて前記受け付けたクエリを実行し、前記受け付けたクエリの実行において、データベースオペレーションを実行するためのタスクを動的に生成し、前記動的に生成されたタスクを実行し、
前記(c)では、前記クエリの実行において、前記タスクを新たに生成する場合に、生成タスク数決定処理を実行し、
前記生成タスク数決定処理は、新たに生成するタスク当たりに割り当てを要するメモリ資源量である第1のメモリ資源量と、新たに割り当て可能なメモリ資源量である第2のメモリ資源量とを基に、生成することができるタスクの数である生成タスク数を算出することであり、
動的に生成されるタスクの数は、前記生成タスク数以下であり、
1以上のクエリを並行して実行する際に、前記1以上のクエリの実行において、別々のタスクにより並行して実行を開始できる実行単位である部分クエリを2以上含み、前記2以上の部分クエリを並行して実行する場合、前記2以上の部分クエリの各々の実行において、タスクを新たに生成する際に、前記生成タスク数決定処理を行う、
データベース管理方法。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2012/061443 WO2013161080A1 (ja) | 2012-04-27 | 2012-04-27 | データベース管理システム、計算機、データベース管理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2013161080A1 JPWO2013161080A1 (ja) | 2015-12-21 |
| JP5967672B2 true JP5967672B2 (ja) | 2016-08-10 |
Family
ID=49482446
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014512275A Active JP5967672B2 (ja) | 2012-04-27 | 2012-04-27 | データベース管理システム、計算機、データベース管理方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9842136B2 (ja) |
| EP (1) | EP2843558B1 (ja) |
| JP (1) | JP5967672B2 (ja) |
| WO (1) | WO2013161080A1 (ja) |
Families Citing this family (75)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9639573B2 (en) * | 2013-07-22 | 2017-05-02 | Mastercard International Incorporated | Systems and methods for query queue optimization |
| US8631325B1 (en) | 2013-08-09 | 2014-01-14 | Zoomdata, Inc. | Real-time data visualization of streaming data |
| US10223256B1 (en) * | 2013-10-28 | 2019-03-05 | Pivotal Software, Inc. | Off-heap memory management |
| JP2015094976A (ja) * | 2013-11-08 | 2015-05-18 | 富士通株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
| US10262035B2 (en) * | 2013-11-14 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Estimating data |
| US9606853B2 (en) * | 2014-03-28 | 2017-03-28 | Intel Corporation | Protecting a memory device from becoming unusable |
| WO2016092604A1 (ja) * | 2014-12-08 | 2016-06-16 | 株式会社日立製作所 | データ処理システムおよびデータアクセス方法 |
| US9817871B2 (en) | 2015-02-27 | 2017-11-14 | Zoomdata, Inc. | Prioritized retrieval and/or processing of data via query selection |
| JP2016177347A (ja) * | 2015-03-18 | 2016-10-06 | 日本電気株式会社 | データベースシステム |
| US9389909B1 (en) * | 2015-04-28 | 2016-07-12 | Zoomdata, Inc. | Prioritized execution of plans for obtaining and/or processing data |
| US11487755B2 (en) * | 2016-06-10 | 2022-11-01 | Sap Se | Parallel query execution |
| US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
| US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
| US10776355B1 (en) | 2016-09-26 | 2020-09-15 | Splunk Inc. | Managing, storing, and caching query results and partial query results for combination with additional query results |
| US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
| US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
| US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
| US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
| US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
| US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
| US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
| US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
| US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
| US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
| US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
| US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
| US10726009B2 (en) * | 2016-09-26 | 2020-07-28 | Splunk Inc. | Query processing using query-resource usage and node utilization data |
| US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
| US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
| US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
| US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
| US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
| US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
| US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
| US10984044B1 (en) | 2016-09-26 | 2021-04-20 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system |
| US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
| US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
| US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
| US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
| US11003714B1 (en) | 2016-09-26 | 2021-05-11 | Splunk Inc. | Search node and bucket identification using a search node catalog and a data store catalog |
| US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
| US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
| US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
| US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
| US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
| US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
| US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
| US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
| US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
| JP2018063470A (ja) * | 2016-10-11 | 2018-04-19 | 富士通株式会社 | 制御装置および制御方法 |
| US9942312B1 (en) | 2016-12-16 | 2018-04-10 | Zoomdata, Inc. | System and method for facilitating load reduction at a landing zone |
| CN108664516A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 查询优化方法及相关装置 |
| US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
| US12118009B2 (en) | 2017-07-31 | 2024-10-15 | Splunk Inc. | Supporting query languages through distributed execution of query engines |
| US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
| US12248484B2 (en) | 2017-07-31 | 2025-03-11 | Splunk Inc. | Reassigning processing tasks to an external storage system |
| JP7006013B2 (ja) * | 2017-08-22 | 2022-01-24 | 富士通株式会社 | データ提供プロラム、データ提供方法、及びデータ提供装置 |
| US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
| US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
| US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
| WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
| US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
| US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
| US11609911B2 (en) * | 2019-12-19 | 2023-03-21 | Ocient Holdings LLC | Selecting a normalized form for conversion of a query expression |
| US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
| US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
| US20220335047A1 (en) * | 2021-04-16 | 2022-10-20 | Microsoft Technology Licensing, Llc | System and method for dynamic memory allocation for query execution |
| CN117136359A (zh) * | 2021-04-16 | 2023-11-28 | 微软技术许可有限责任公司 | 用于查询执行的动态存储器分配的系统和方法 |
| US12072939B1 (en) | 2021-07-30 | 2024-08-27 | Splunk Inc. | Federated data enrichment objects |
| US12360666B2 (en) * | 2022-01-27 | 2025-07-15 | Dell Products L.P. | Microservices server and storage resource controller |
| US12093272B1 (en) | 2022-04-29 | 2024-09-17 | Splunk Inc. | Retrieving data identifiers from queue for search of external data system |
| US12141137B1 (en) | 2022-06-10 | 2024-11-12 | Cisco Technology, Inc. | Query translation for an external data system |
| US12287790B2 (en) | 2023-01-31 | 2025-04-29 | Splunk Inc. | Runtime systems query coordinator |
| US12353414B2 (en) * | 2023-05-04 | 2025-07-08 | International Business Machines Corporation | Database query optimization based on analytics |
| US12585638B2 (en) | 2023-07-17 | 2026-03-24 | Cisco Technology, Inc. | Query execution using a data processing scheme of a separate data processing system |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5324525A (en) * | 1991-03-26 | 1994-06-28 | Kabushiki Kaisha Sangi | Anti-adhesion agent to water borne organisms |
| US5325525A (en) * | 1991-04-04 | 1994-06-28 | Hewlett-Packard Company | Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time |
| JPH04314147A (ja) | 1991-04-12 | 1992-11-05 | Nec Corp | メモリ管理方式 |
| US5701471A (en) * | 1995-07-05 | 1997-12-23 | Sun Microsystems, Inc. | System and method for testing multiple database management systems |
| US7437725B1 (en) * | 1999-01-04 | 2008-10-14 | General Electric Company | Processing techniques for servers handling client/server traffic and communications |
| US7024414B2 (en) * | 2001-08-06 | 2006-04-04 | Sensage, Inc. | Storage of row-column data |
| US7134081B2 (en) * | 2001-08-14 | 2006-11-07 | National Instruments Corporation | Method and apparatus for controlling an instrumentation system |
| US6931395B2 (en) * | 2001-10-25 | 2005-08-16 | International Business Machines Corporation | Method and apparatus for optimizing queries in a logically partitioned computer system |
| JP4611830B2 (ja) | 2005-07-22 | 2011-01-12 | 優 喜連川 | データベース管理システム及び方法 |
| JP5261809B2 (ja) | 2005-08-31 | 2013-08-14 | 株式会社日立製作所 | 計算機システム及びデータベース管理システムプログラム |
| US9424315B2 (en) * | 2007-08-27 | 2016-08-23 | Teradata Us, Inc. | Methods and systems for run-time scheduling database operations that are executed in hardware |
| US20100005077A1 (en) * | 2008-07-07 | 2010-01-07 | Kickfire, Inc. | Methods and systems for generating query plans that are compatible for execution in hardware |
| JP5440937B2 (ja) | 2010-02-01 | 2014-03-12 | 日本電気株式会社 | スレッド数制限装置、スレッド数制限方法およびスレッド数制限プログラム |
| US8874961B2 (en) * | 2010-03-22 | 2014-10-28 | Infosys Limited | Method and system for automatic failover of distributed query processing using distributed shared memory |
| JP2011215812A (ja) | 2010-03-31 | 2011-10-27 | Hitachi Ltd | 仮想計算機管理方法、計算機システム及びリソース管理プログラム |
| US8356050B1 (en) * | 2011-11-21 | 2013-01-15 | Yahoo! Inc. | Method or system for spilling in query environments |
| WO2013161081A1 (ja) * | 2012-04-27 | 2013-10-31 | 株式会社日立製作所 | データベース管理システム、計算機、データベース管理方法 |
| US9934276B2 (en) * | 2012-10-15 | 2018-04-03 | Teradata Us, Inc. | Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency |
| US9760657B2 (en) * | 2015-02-19 | 2017-09-12 | Adp, Llc | Task based semantic search |
-
2012
- 2012-04-27 JP JP2014512275A patent/JP5967672B2/ja active Active
- 2012-04-27 WO PCT/JP2012/061443 patent/WO2013161080A1/ja not_active Ceased
- 2012-04-27 EP EP12875047.8A patent/EP2843558B1/en active Active
- 2012-04-27 US US14/397,051 patent/US9842136B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| WO2013161080A1 (ja) | 2013-10-31 |
| EP2843558B1 (en) | 2019-06-12 |
| US20150112966A1 (en) | 2015-04-23 |
| EP2843558A1 (en) | 2015-03-04 |
| EP2843558A4 (en) | 2016-03-16 |
| US9842136B2 (en) | 2017-12-12 |
| JPWO2013161080A1 (ja) | 2015-12-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5967672B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
| JP5858151B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
| US10129333B2 (en) | Optimization of computer system logical partition migrations in a multiple computer system environment | |
| US10789133B2 (en) | Data storage resource allocation by performing abbreviated resource checks of certain data storage resources based on relative scarcity to determine whether data storage requests would fail | |
| US9298506B2 (en) | Assigning resources among multiple task groups in a database system | |
| US7337226B2 (en) | Method and mechanism for implementing dynamic sizing of session pools | |
| JP5999574B2 (ja) | データベース管理システム及び計算機システム | |
| US20100125715A1 (en) | Storage System and Operation Method Thereof | |
| US7325017B2 (en) | Method of implementation of data storage quota | |
| JP2004070403A (ja) | ファイル格納先ボリューム制御方法 | |
| JPWO2014155555A1 (ja) | 管理システム及び管理プログラム | |
| US20210089534A1 (en) | System and method for dynamically reallocating resources among multiple task groups in a database system | |
| US20220043678A1 (en) | Efficient distributed scheduler for a data partitioned system | |
| JP2006106993A (ja) | ストレージの予約管理方法及びストレージ管理システム | |
| US9781057B1 (en) | Deadlock avoidance techniques | |
| JP6272556B2 (ja) | 共有リソース更新装置及び共有リソース更新方法 | |
| US20050086430A1 (en) | Method, system, and program for designating a storage group preference order | |
| CN114168306B (zh) | 调度方法及调度装置 | |
| US12475102B2 (en) | Methods and systems for conflict detection and mitigation between services in an autonomous database cloud environment |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160202 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160323 |
|
| 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: 20160607 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160629 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5967672 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |