JP6961133B1 - 検索装置、検索方法、及び、検索プログラム - Google Patents
検索装置、検索方法、及び、検索プログラム Download PDFInfo
- Publication number
- JP6961133B1 JP6961133B1 JP2021540861A JP2021540861A JP6961133B1 JP 6961133 B1 JP6961133 B1 JP 6961133B1 JP 2021540861 A JP2021540861 A JP 2021540861A JP 2021540861 A JP2021540861 A JP 2021540861A JP 6961133 B1 JP6961133 B1 JP 6961133B1
- Authority
- JP
- Japan
- Prior art keywords
- access
- database
- unit
- deadlock
- queue
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
実行計画は木構造のデータであり、実行計画の各計画ノードは実行中状態と待ち状態との2つの状態の間を遷移する。1つの問合せの実行計画において、検索装置が同時に実行中状態とする計画ノードは1件のみであり、その他の計画ノードは待ち状態となる。
検索装置は、
結合処理を含む問合せ等から、複数のデータベースへのアクセスを含む実行計画を作成する場合があり、
あるデータベースアクセスの結果を1件取得した後、別のデータベースアクセスの結果を1件取得する場合がある。
非特許文献2では、データベースアクセスを実行する際に、データベースから全ての結果を取得した当該データベースアクセスを終了させる技術が開示されている。
データベースへのデータベースアクセスの要求を表すアクセス要求情報を登録しているアクセスキューと、データを書き込むことができる一時領域とを有するデータ記憶部と、
前記アクセスキューに登録されている前記アクセス要求情報に対応するデータベースアクセスを実行中アクセスとして同時に1以上実行し、前記実行中アクセスに対応するアクセス要求情報を前記アクセスキューから削除するアクセス部と、
前記データベースアクセスにおけるデッドロックを防止するデッドロック防止部と
を備え、
前記アクセス部は、前記データベースアクセスを実行する前に、前記データベースへの同時アクセス数が上限に達している場合に、前記デッドロック防止部にデッドロックの検知を依頼し、
前記デッドロック防止部は、
前記アクセス部にデッドロックの検知を依頼された場合に、前記実行中アクセスの任意の識別情報が、前記アクセスキューに登録されている前記アクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知し、
デッドロックを検知した場合に、1の実行中アクセスを選択アクセスとして選択し、前記選択アクセスの全ての結果の内、前記データベースから取得していない結果である残り結果を前記データベースから取得し、前記残り結果を前記一時領域に書き込み、前記データベースに前記選択アクセスに対応する処理の終了を要求する。
アクセス部は、データベースアクセスを実行する前に、データベースへの同時アクセス数が上限に達している場合に、デッドロック防止部にデッドロックの検知を依頼し、
デッドロック防止部は、
アクセス部にデッドロックの検知を依頼された場合に、実行中アクセスの任意の識別情報が、アクセスキューに登録されているアクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知し、
デッドロックを検知した場合に、1の実行中アクセスを選択アクセスとして選択し、選択アクセスの全ての結果の内、データベースから取得していない結果である残り結果をデータベースから取得し、残り結果を一時領域に書き込み、データベースに選択アクセスに対応する処理の終了を要求する。
従って、本発明によれば、デッドロックが発生することを防ぐことと、データベースアクセスの処理速度の低下を減らすこととを両立することができる。
以下、本実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態に係る検索装置101の構成例を示す。
検索装置101は、
データベース150に接続されており、
外部の検索アプリケーション300から問合せ301を受信し、
受信した問合せ301に対応する命令をデータベース150に送信し、
データベース150から送信した命令に対応する検索結果を受信し、
受信した検索結果を検索アプリケーション300に送信する。
アプリケーションは、アプリケーションプログラムのことである。以下、アプリケーションプログラムをアプリケーションと記載する。
検索装置101の外部のデータベースであり、
検索部151と、データ格納領域152とから構成され、
問合せ301に対する検索結果を検索装置101に送信する。
データベースアクセスは、データベース150にアクセスする必要がある処理のことであり、一時領域134にアクセスする処理を含む。
問合せ301と、検索結果302とを有し、
問合せ301を検索装置101に送信する。
データベース150の検索を要求する問合せであり、
データベース150に格納されているデータの検索を要求する命令であり、
検索装置101がデータを検索するための問合せである。
問合せ301が検索装置101内のデータの検索を要求する場合もあるが、以下では、問合せ301がデータベース150の検索を要求する場合について説明する。
定義アプリケーション200からアクセス定義201を受信し、
受信したアクセス定義201をアクセス定義131に変換し、
データ記憶部130にアクセス定義131を格納する。
アクセス定義201と、アクセス定義131とは形式が異なるのみである。そのため、以下ではアクセス定義131について説明する。以下のアクセス定義131に関する説明は、アクセス定義201にもあてはまる。
問合せ処理部121は、
受信した問合せ301に対応する実行計画135を生成し、
実行計画135に従い処理を実行し、
実行計画135がデータベースアクセスを含む場合、当該データベースアクセスの情報をアクセス部122に提供し、アクセス部122に当該データベースアクセスの全ての結果を1件ずつ取得するよう要求する。
問合せ処理部121は、典型的には、アクセス部122から取得したデータベースアクセスの結果を1件ずつ処理する。
1件の結果は、対象アクセスの結果全体が表形式のデータである場合、表の1行に対応する。この場合において、対象アクセスの結果の総数は、表の行数と同じである。
問合せ処理部121は、
データベースアクセスに関する処理を開始する前に、監視部123にデータベース150への同時アクセス数136を問い合わせ、
同時アクセス数136が上限132に達していない場合、データベースアクセスに関する処理を開始し、
それ以外の場合、デッドロック防止部124にデッドロックの検知を依頼し、デッドロックが発生している場合、デッドロック防止部124にデッドロックの解消を依頼する。
同時アクセス数136は、データベース150への同時アクセス数である。
データベースアクセスの方法は、検索条件を表す問合せをデータベース150に転送して実行を委託する方法でも良く、問合せの検索手順を表す実行計画をデータベース150に転送して実行を委託する方法でも良く、その他の方法でも良い。
アクセス部122は、問合せ処理部121からデータベースアクセスの情報を受信する度に、検索部151にデータベースアクセスの開始を依頼するための処理を実行する。
同時アクセス数136を取得し、
アクセス部122にデータベース150への同時アクセス数136を回答する。
デッドロック防止部124は、アクセス部122にデッドロックの解消を依頼された場合に、
アクセス記憶領域133を参照して実行中アクセスのいずれか1件を選択アクセスとして選択し、
選択アクセスに対応する残り結果を取得し、
一時領域134に取得した残り結果を書き込み、
当該データベースアクセスの終了をデータベース150の検索部151に依頼する。
デッドロック防止部124は、アクセス部122にデッドロックの検知を依頼された場合に、実行中アクセスの任意の識別情報が、アクセスキュー137に登録されているアクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知する。
識別情報は、実行中アクセスを識別する情報であり、具体例として、問合せIDである。
問合せIDは、データベースアクセスに対応する問合せ301を示す識別子である。
デッドロックの検知は、デッドロックが発生する可能性を検知することを含む。
デッドロックの解消は、デッドロックが発生する可能性を解消することを含む。
実行中アクセスは、実行中のデータベースアクセスのことである。実行中のデータベースアクセスには、他のデータベースアクセスの完了を待つことも含まれる。
実行中アクセスに対応する処理をデータベース150が実行している場合、実行中アクセスは実行中状態である。実行中アクセスは、実行中状態でない場合、待ち状態である。
残り結果は、1の実行中アクセスの全ての結果の内、データベース150から取得していない結果である。
本図に示すように、実行中アクセス情報は、問合せIDと、アクセスIDと、必要情報と、一時領域フラグと、結果データサイズとから構成される。
アクセスIDは、データベースアクセスの識別子を表す。
必要情報は、データベースアクセスの結果を取得するために必要な情報を表す。
一時領域フラグは、データベースアクセスにおいて、一時領域134へのアクセスする必要の有無を表す。
結果データサイズは、
典型的には、データベースアクセスの結果のデータサイズの推定値であり、
データベースアクセスの結果のデータサイズの実績値であっても良い。
典型的には、図3に例示するような木構造のデータであり、
問合せ処理部121が問合せ301を基に作成したものであり、
検索手順を表すものである。
アクセス要求情報は、
データベースアクセスの開始要求を表し、
典型的には、アクセス部122が開始を要求するデータベースアクセスに対応する問合せ301の識別子を表す問合せIDと、アクセスキュー137における開始要求の順番を表す開始要求番号とから構成される。
図4は、アクセスキュー137データの例である。図4の表の1行が、1件のアクセス要求情報である。
本図に示すように、検索システムは、検索装置101と、データ収集装置401と、データ検索装置501と、外部データ管理装置601とから構成される。
データ収集装置401、データ検索装置501、及び/又は、外部データ管理装置601は、検索装置101に内包されていても良い。
本図に示すように、検索装置101は一般的なコンピュータ10から構成される。
演算装置701と、外部記憶装置702と、主記憶装置703と、通信装置704とは、バス705を介して接続されている。
なお、本図に示す構成は、検索装置101のハードウェア構成の一例に過ぎず、他の構成であっても良い。
具体例として、表示ディスプレイ等の出力装置と、マウス、キーボード等の入力装置とがバス705に接続されていても良い。
検索装置101は、演算装置701を複数備えていても良い。これら複数の演算装置は、検索プログラムの実行を分担する。
検索装置101の各部は、通信装置704を利用して、定義アプリケーション200、検索アプリケーション300、又は、データベース150と通信する。
検索プログラムは、検索装置101の各部の機能を実現するプログラムであり、主記憶装置703に記憶されていても良い。
検索プログラムは、コンピュータ10が読み取り可能な可搬記憶媒体に記憶されていても良く、プログラムプロダクトとして提供されても良い。可搬記憶媒体は、具体例として、NANDフラッシュである。
検索プログラムは、OSの機能を利用しても良い。
また、本実施の形態において、典型的には、処理の結果を示す、情報、データ、信号値、及び/又は、変数値が主記憶装置703にファイルとして記憶されている。
本実施の形態に係る検索装置101の動作を説明する。
検索装置101の動作手順は、検索方法に相当する。また、検索装置101の動作を実現するプログラムは、検索プログラムに相当する。
アクセス定義部110は、定義アプリケーション200からアクセス定義201を受信する。
アクセス定義部110は、受信したアクセス定義201を解釈し、アクセス定義201をアクセス定義131に変換する。
アクセス定義部110は、アクセス定義131をデータ記憶部130に格納する。
本図に示す動作の開始前に、アクセス定義131がデータ記憶部130に格納されているものとする。
問合せ処理部121は、検索アプリケーション300から問合せ301を受信する。
問合せ処理部121は、問合せ301を解析し、実行計画135を生成する。
問合せ処理部121は、実行計画135に含まれる各データベースアクセスの結果データサイズを求める。
問合せ処理部121は、
実行計画135を基に問合せ301を実行し、
問合せ301の実行結果を検索アプリケーション300に送信する。
本ステップの詳細は後述する。
検索装置101は、以下の処理において、SQL(Structured Query Language)における一般的な手法を用いて良い。
問合せ処理部121は、典型的には深さ優先探索により実行計画の木を走査し、1の計画ノードを対象ノードとして取得する。
問合せ処理部121は、実行計画135が図3に示すものである場合、「アクセス1A」、「アクセス1B」、「結合」の順に取得する。
問合せ処理部121は、1の問合せ301に関する本フローチャートの処理を最初に実行する場合に、頂点ノードを取得しても良い。
頂点ノードは、ルートノードとも呼ばれる。
問合せ処理部121は、対象ノードがデータベースアクセスを含むか否かを判定する。
問合せ処理部121は、
判定結果がYESの場合、ステップS303に進み、
それ以外の場合、ステップS304に進む。
以下、対象ノードに対応するデータベースアクセスを対象アクセスとする。
問合せ処理部121は、アクセス部122に、
対象アクセスの情報を対象アクセス情報として送信し、
対象ノードに対応する1件の結果を、対象結果として取得させる。
本ステップにおいて、問合せ処理部121は、対象結果を取得できない場合もある。
本ステップの詳細は後述する。
問合せ処理部121は、対象ノードに対応する1件の結果を、対象結果として取得する。
本ステップにおいて、問合せ処理部121は、対象結果を取得できない場合もある。
問合せ処理部121は、対象ノードが頂点ノードか否かを判定する。
問合せ処理部121は、
判定結果がYESの場合、ステップS306に進み、
それ以外の場合、ステップS301に戻る。
問合せ処理部121は、対象結果を取得できたか否かを判定する。
問合せ処理部121は、
判定結果がYESの場合、ステップS307に進み、
それ以外の場合、ステップS203の処理を終了する。
問合せ処理部121は、対象結果を検索アプリケーション300に送信し、ステップS301に戻る。
アクセス部122は、以下の処理において、アクセス記憶領域133、同時アクセス数136、及び/又は、アクセスキュー137を参照及び/又は更新する際に、1のデータベースアクセスに対応するプロセスのみが同時に実行することができるように排他ロックを取得する。
アクセス部122は、対象アクセスに対応する1件目の対象結果を取得する処理であるか否かを判定する。
アクセス部122は、
判定結果がYESの場合、ステップS402に進み、
それ以外の場合、ステップS403に進む。
アクセス部122は、対象アクセスを開始する。
本ステップの詳細は後述する。
アクセス部122は、対象アクセスの1件の結果を対象結果として取得する。
本ステップの詳細は後述する。
アクセス部122は、ステップS403で対象結果を取得できたか否かを判定する。
アクセス部122は、
判定結果がYESの場合、ステップS405に進み、
それ以外の場合、ステップS406に進む。
アクセス部122は、対象結果を問合せ処理部121に送信する。
アクセス部122は、対象アクセスを終了する。
本ステップの詳細は後述する。
アクセス部122は、
対象アクセスの情報を対象アクセス情報として問合せ処理部121から受信し、
受信した対象アクセス情報を基に、アクセスキュー137に対象アクセスのアクセス要求情報を、対象要求情報として登録する。
対象アクセス情報には、問合せIDと、アクセスIDと、必要情報と、結果データサイズの情報とが含まれる。
アクセス部122は、
対象要求情報の開始要求番号が1番になった場合、ステップS503に進み、
それ以外の場合、本ステップの処理を続ける。
アクセス部122は、監視部123に、同時アクセス数136が上限132に達しているか否かを問い合わせる。
監視部123は、同時アクセス数136がアクセス定義131の上限132(以下、上限132の値をNとする)に達しているか否かを回答する。
アクセス部122は、
監視部123の回答がYESの場合、ステップS504に進み、
それ以外の場合、ステップS509に進む。
アクセス部122は、デッドロック防止部124にデッドロックの検知を依頼する。
本ステップにおいて、アクセス記憶領域133において一時領域フラグがOFFとなっている実行中アクセス情報がN個ある。以下、N個の実行中アクセス情報に対応するデータベースアクセスに対して重複がないよう通し番号iを割り当て(i=1,2,...,N)、各データベースアクセスをRe(i)と表記する。通し番号の割り当て方は、任意であって良い。
デッドロック防止部124は、任意のi∈{1,2,...,N}について、同時実行中のデータベースアクセスRe(i)に対応する問合せIDを有するアクセス要求情報がアクセスキュー137に登録されているか否かを判定する。
デッドロック防止部124は、
判定結果がYESの場合、ステップS505に進み、
それ以外の場合、ステップS503に戻る。
判定結果は、実行中アクセスに対応する任意の問合せIDを、アクセスキュー137に登録されているいずれかのアクセス要求情報が有する場合に、YESとなる。
アクセス部122は、デッドロック防止部124にデッドロックの解消を依頼する。
デッドロック防止部124は、アクセス記憶領域133を参照し、結果データサイズが最小であるデータベースアクセスを、選択アクセスとして選択する。以下、選択アクセスの通し番号を、i´とする。
デッドロック防止部124は、結果データサイズが最小であるデータベースアクセスが複数ある場合、いずれか1つの結果データサイズが最小であるデータベースアクセスを、選択アクセスとして選択する。
デッドロック防止部124は、
Re(i´)の残り結果を一時領域134に書き込み、
アクセス記憶領域133においてRe(i´)の必要情報を一時領域134から結果を取得するために必要な情報に更新する。
デッドロック防止部124は、Re(i´)に対応する処理の終了をデータベース150に要求する。
デッドロック防止部124は、Re(i´)に対応する一時領域フラグをONに変更する。
アクセス部122は、
対象アクセスの開始をデータベース150に要求し、
データベース150から必要情報を取得する。
アクセス部122は、
対象要求情報をアクセスキュー137から削除し、
アクセスキュー137に登録されている他のアクセス要求情報全ての開始要求番号を1デクリメントする。
アクセス部122は、対象アクセスの実行中アクセス情報をアクセス記憶領域133に登録する。
実行中アクセス情報には、ステップS509で取得した必要情報が含まれる。
アクセス部122は、同時アクセス数136を1インクリメントする。
アクセス部122は、対象アクセスの情報を、対象アクセス情報として問合せ処理部121から受信する。
対象アクセス情報には、問合せIDと、アクセスIDとが含まれる。
アクセス部122は、
ステップS601で受信した対象アクセス情報に含まれる問合せIDとアクセスIDとを含む実行中アクセス情報をアクセス記憶領域133から取得し、
取得した実行中アクセス情報の一時領域フラグがOFFであるか否かを判定する。
アクセス部122は、
判定結果がYESの場合、ステップS603に進み、
それ以外の場合、ステップS604に進む。
アクセス部122は、ステップS602で取得した実行中アクセス情報に含まれる必要情報を用いて、一時領域134から1件の結果を対象結果として取得する。
アクセス部122は、対象結果を取得できない場合もある。
アクセス部122は、ステップS602で取得した実行中アクセス情報に含まれる必要情報を用いて、データベース150から1件の結果を対象結果として取得する。
アクセス部122は、対象結果を取得できない場合もある。
アクセス部122は、対象アクセスの情報を、対象アクセス情報として問合せ処理部121から受信する。
対象アクセス情報には、問合せIDと、アクセスIDとが含まれる。
アクセス部122は、
ステップS701で受信した対象アクセス情報に含まれる問合せIDとアクセスIDとを含む実行中アクセス情報をアクセス記憶領域133から取得し、
取得した実行中アクセス情報の一時領域フラグがOFFであるか否かを判定する。
アクセス部122は、
判定結果がYESの場合、ステップS703に進み、
それ以外の場合、ステップS704に進む。
アクセス部122は、ステップS506で一時領域134に書き込んだ残り結果を削除する。
アクセス部122は、対象アクセスの終了をデータベース150に要求する。
アクセス部122は、対象アクセス情報に含まれる問合せIDとアクセスIDとを含む実行中アクセス情報を、アクセス記憶領域133から削除する。
検索装置101は、
データベース150へのデータベース150アクセスの要求を表すアクセス要求情報を登録しているアクセスキュー137と、データを書き込むことができる一時領域とを有するデータ記憶部130と、
アクセスキュー137に登録されているアクセス要求情報に対応するデータベース150アクセスを実行中アクセスとして同時に1以上実行し、実行中アクセスに対応するアクセス要求情報をアクセスキュー137から削除するアクセス部122と、
データベース150アクセスにおけるデッドロックを防止するデッドロック防止部124と
を備え、
アクセス部122は、データベース150アクセスを実行する前に、データベース150への同時アクセス数136が上限に達している場合に、デッドロック防止部124にデッドロックの検知を依頼し、
デッドロック防止部124は、
アクセス部122にデッドロックの検知を依頼された場合に、実行中アクセスの任意の識別情報が、アクセスキュー137に登録されているアクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知し、
デッドロックを検知した場合に、1の実行中アクセスを選択アクセスとして選択し、前記選択アクセスの全ての結果の内、前記データベースから取得していない結果である残り結果を前記データベースから取得し、前記残り結果を前記一時領域に書き込み、データベース150に選択アクセスに対応する処理の終了を要求する。
問合せ処理部121は、
実行計画135の1の計画ノードを対象ノードとして取得し、
対象ノードに対応する処理がデータベース150アクセスを含む場合、データベース150アクセスの情報を対象アクセス情報としてアクセス部122に送信し、
アクセス部122は、対象アクセス情報をアクセスキュー137に登録し、
デッドロック防止部124は、実行中アクセスに対応する任意の問合せ301が、アクセスキュー137が登録しているアクセス要求情報に対応する問合せ301のいずれかと同一であるか判定する。
特許文献2の技術と、非特許文献1の技術とを組み合わせたとき、実行中のデータベースアクセスの総数がデータベース150の同時アクセス数の上限に達している場合、かつ、実行中の任意のデータベースアクセスに対応する問合せ301に含まれるデータベースアクセスを新たに開始した場合にデッドロックが発生する。
デッドロック防止部124は、デッドロックを検知した場合に、アクセス記憶領域133から実行中アクセス情報を1件選択し、選択した実行中アクセス情報に対応する残り結果をデータベース150から取得し、取得した残り結果を一時領域134に書き込み、実行中のデータベースアクセスの結果を得るために用いるデータを全て取得して選択した実行中アクセス情報に対応するデータベースアクセスを終了させる。これにより、デッドロック防止部124は、不要なI/O(Input/Output)を防ぎつつデッドロックを解消することが可能となる。
従って、本実施の形態によれば、デッドロックを防止することと、データベースアクセスの処理速度の低下を減らすこととを両立することができる。
さらに、デッドロックが発生している場合に、実行中のデータベースアクセスの内、結果データサイズが最小のものを選択することにより、一時ファイルのI/Oデータサイズを削減することができ、処理速度を向上させることができる。
検索装置101は、複数の問合せ301を並列に実行することができる。そのため、検索装置101は、アクセス1Aと2Aとを並列に開始した後、アクセス1Bと2Bとを並列に開始する場合がある。
図11のフローチャートに示す動作の完了時に、同時アクセス数136は1となり、アクセス記憶領域133にはアクセス1Aに対応する実行中アクセス情報が登録され、アクセスキュー137は空となる。
図11のフローチャートに示す動作の完了時に、同時アクセス数136は2となり、アクセス記憶領域133にはアクセス1Aと2Aとに対応する実行中アクセス情報が登録され、アクセスキュー137は空となる。
アクセス記憶領域133に登録されている情報は図2に示すようなものであり、
アクセス記憶領域133に登録されているアクセス1Aと2Aとは待ち状態である。
この時点において、アクセスキュー137は図14のようになる。
同時アクセス数136は2であるため、図11のステップS503の結果はYESとなる。アクセス記憶領域133に登録されているアクセス1Aと2Aとは待ち状態であるため、ステップS505に到達するまで、ステップS503の結果は常にYESとなる。
アクセス部122は、
ステップS504の結果がNOの場合、アクセス部122はステップS503に戻り、
後述の処理を実行することにより、アクセス2Bの開始要求をアクセスキュー137に登録する。
この時点において、アクセスキュー137は図4のようになる。
そのため、アクセス部122は、ステップS504の結果がYESとなるので、ステップS505に進む。
アクセス部122がステップS505〜S508の処理を実行することにより、アクセス記憶領域133に登録されている実行中アクセス情報2件の内、結果データサイズが最小であるアクセス1Aのデータベース150における処理が終了し、アクセス1Aの必要情報が一時領域134からの結果取得に必要な情報に更新される。ステップS505〜S508の処理完了時点におけるアクセス記憶領域133に登録されている情報は図15のようになる。
アクセス部122は、ステップS509〜S512の処理を実行する。ステップS509〜S512の処理完了時点におけるアクセス記憶領域133に登録されている情報は図16のようになる。また、ここで、アクセスキュー137は空である。ここで、アクセスキュー137は図17のようになる。
アクセス1Bが開始されている場合、アクセスキュー137には、図17に示すように問合せ2に対応する開始要求1件が登録されている。そのため、ステップS502の結果はYESとなり、ステップS503に進む。
アクセス2Aと1Bとの2件が実行中であるため、ステップS503の結果はYESとなり、検索装置101はステップS504に進む。
アクセスキュー137に登録されている開始要求は問合せ2に対応するもの1件のみであるため、ステップS504の結果はNOとなる。
この時点において、アクセス1Aは終了状態、アクセス2Aと1Bとは実行中状態である。
その後、以下の2つのケースのいずれかが起こり得る。
ケース1.アクセス部122がアクセス1Aに対応する開始要求をアクセスキュー137に登録する。
ケース2.アクセス2A又は1Bが終了する。
そのため、デッドロック防止部124は、ステップS505に進む。デッドロック防止部124は、ステップS505〜S508の処理を実行することにより、アクセス1Bに対応するデータベースアクセスを終了させ、デッドロックを解消することができる。
結果として、アクセス部122はアクセス2Bを開始することができる。
従って、いずれのケースにおいても、アクセス部122はアクセス2Bを開始することができる。
しかしながら、本実施の形態の検索装置101によれば、デッドロックが発生した場合に、デッドロックを解消し、問合せ1と2とを完了することが可能となる。
一方、本実施の形態では、実際にデッドロックが発生しているときのみ結果データサイズが最小であるデータベースアクセスに対応する残り結果を一時領域134に書き込むため、一時ファイルのI/Oデータサイズは合計1GB以下となる。
検索装置101は、複数のコンピュータ10から構成されても良い。
本実施の形態では、各機能構成要素をソフトウェアで実現する場合を説明した。しかし、変形例として、各機能構成要素はハードウェアで実現されても良い。
前述した実施の形態1の任意の構成要素の変形、もしくは実施の形態1において任意の構成要素の省略が可能である。
Claims (5)
- データベースへのデータベースアクセスの要求を表すアクセス要求情報を登録しているアクセスキューと、データを書き込むことができる一時領域とを有するデータ記憶部と、
前記アクセスキューに登録されている前記アクセス要求情報に対応するデータベースアクセスを実行中アクセスとして同時に1以上実行し、前記実行中アクセスに対応するアクセス要求情報を前記アクセスキューから削除するアクセス部と、
前記データベースアクセスにおけるデッドロックを防止するデッドロック防止部と
を備え、
前記アクセス部は、前記データベースアクセスを実行する前に、前記データベースへの同時アクセス数が上限に達している場合に、前記デッドロック防止部にデッドロックの検知を依頼し、
前記デッドロック防止部は、
前記アクセス部にデッドロックの検知を依頼された場合に、前記実行中アクセスの任意の識別情報が、前記アクセスキューに登録されている前記アクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知し、
デッドロックを検知した場合に、1の実行中アクセスを選択アクセスとして選択し、前記選択アクセスの全ての結果の内、前記データベースから取得していない結果である残り結果を前記データベースから取得し、前記残り結果を前記一時領域に書き込み、前記データベースに前記選択アクセスに対応する処理の終了を要求する検索装置。 - 前記デッドロック防止部は、前記選択アクセスとして、アクセス結果のデータサイズが最小である実行中アクセスを選択する請求項1に記載の検索装置。
- 前記データベースに格納されているデータの検索を要求する問合せを受信し、前記問合せを複数の計画ノードを有する木構造の実行計画に変換する問合せ処理部を備え、
前記問合せ処理部は、前記実行計画の1の計画ノードを対象ノードとして取得し、
前記対象ノードに対応する処理がデータベースアクセスを含む場合、前記データベースアクセスの情報を対象アクセス情報として前記アクセス部に送信し、
前記アクセス部は、前記対象アクセス情報を前記アクセスキューに登録し、
前記デッドロック防止部は、前記実行中アクセスに対応する任意の問合せが、前記アクセスキューが登録しているアクセス要求情報に対応する問合せのいずれかと同一であるか判定する請求項1又は2に記載の検索装置。 - データ記憶部が、データベースへのデータベースアクセスの要求を表すアクセス要求情報を登録しているアクセスキューと、データを書き込むことができる一時領域とを有し、
アクセス部が、前記アクセスキューに登録されている前記アクセス要求情報に対応するデータベースアクセスを実行中アクセスとして同時に1以上実行し、前記実行中アクセスに対応するアクセス要求情報を前記アクセスキューから削除し、
デッドロック防止部が、前記データベースアクセスにおけるデッドロックを防止し、
前記アクセス部が、前記データベースアクセスを実行する前に、前記データベースへの同時アクセス数が上限に達している場合に、前記デッドロック防止部にデッドロックの検知を依頼し、
前記デッドロック防止部が、
前記アクセス部にデッドロックの検知を依頼された場合に、前記実行中アクセスの任意の識別情報が、前記アクセスキューに登録されている前記アクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知し、
デッドロックを検知した場合に、1の実行中アクセスを選択アクセスとして選択し、前記選択アクセスの全ての結果の内、前記データベースから取得していない結果である残り結果を前記データベースから取得し、前記残り結果を前記一時領域に書き込み、前記データベースに前記選択アクセスに対応する処理の終了を要求する検索方法。 - コンピュータに、
データベースへのデータベースアクセスの要求を表すアクセス要求情報を登録しているアクセスキューと、データを書き込むことができる一時領域とを有させ、
前記アクセスキューに登録されている前記アクセス要求情報に対応するデータベースアクセスを実行中アクセスとして同時に1以上実行させ、前記実行中アクセスに対応するアクセス要求情報を前記アクセスキューから削除させ、
前記データベースアクセスを実行する前に、前記データベースへの同時アクセス数が上限に達している場合に、前記実行中アクセスの任意の識別情報が、前記アクセスキューに登録されている前記アクセス要求情報のいずれかの識別情報と同じであるか判定することによりデッドロックを検知させ、
デッドロックを検知した場合に、1の実行中アクセスを選択アクセスとして選択させ、前記選択アクセスの全ての結果の内、前記データベースから取得していない結果である残り結果を前記データベースから取得させ、前記残り結果を前記一時領域に書き込ませ、前記データベースに前記選択アクセスに対応する処理の終了を要求させることにより、前記データベースアクセスにおけるデッドロックを防止させる検索プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/033925 WO2021038797A1 (ja) | 2019-08-29 | 2019-08-29 | 検索装置、検索方法、及び、検索プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021038797A1 JPWO2021038797A1 (ja) | 2021-03-04 |
JP6961133B1 true JP6961133B1 (ja) | 2021-11-05 |
Family
ID=74683398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021540861A Active JP6961133B1 (ja) | 2019-08-29 | 2019-08-29 | 検索装置、検索方法、及び、検索プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6961133B1 (ja) |
WO (1) | WO2021038797A1 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3620203B2 (ja) * | 1996-03-13 | 2005-02-16 | 株式会社日立製作所 | データベースの検索処理方法 |
JP2000259561A (ja) * | 1999-03-09 | 2000-09-22 | Pfu Ltd | データベースアクセス制御システム及び方法 |
-
2019
- 2019-08-29 JP JP2021540861A patent/JP6961133B1/ja active Active
- 2019-08-29 WO PCT/JP2019/033925 patent/WO2021038797A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021038797A1 (ja) | 2021-03-04 |
JPWO2021038797A1 (ja) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7107323B2 (en) | System and method of file distribution for a computer system in which partial files are arranged according to various allocation rules | |
US20160212206A1 (en) | Deterministic database system and data transferring method thereof | |
CN108897628A (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
US9977804B2 (en) | Index updates using parallel and hybrid execution | |
JP6479186B2 (ja) | 計算機システム及びデータベース管理方法 | |
JP6870466B2 (ja) | 制御プログラム、制御方法、制御装置、及びデータベースサーバ | |
CN107784030B (zh) | 一种处理连接查询的方法及装置 | |
CN112789606A (zh) | 数据重分布方法、装置及系统 | |
US11176092B2 (en) | Database management system and anonymization processing method | |
US11640383B2 (en) | Systems and methods for managing a shared database | |
JP5083408B2 (ja) | 構成管理装置、構成管理プログラム、構成管理方法 | |
JP6961133B1 (ja) | 検索装置、検索方法、及び、検索プログラム | |
JP6677605B2 (ja) | プログラム、ストレージシステム、およびストレージシステムの制御方法 | |
US11681682B2 (en) | Data processing system and cache update control method | |
JP6506773B2 (ja) | 情報処理装置、方法およびプログラム | |
KR102354343B1 (ko) | 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치 | |
CN111209304B (zh) | 数据处理方法、装置及系统 | |
JP7068210B2 (ja) | データベース管理システム、端末装置及び方法 | |
CN113849482A (zh) | 一种数据迁移方法、装置及电子设备 | |
JP6036692B2 (ja) | 情報処理装置、情報処理システム、情報処理方法および制御プログラム記録媒体 | |
JP7146611B2 (ja) | カラムストアデータベースシステム及びデータベース処理高速化方法 | |
JPH07306795A (ja) | 二重系計算機のデータベース等価処理装置 | |
CN116821058B (zh) | 元数据访问方法、装置、设备及存储介质 | |
US20230273728A1 (en) | Storage control apparatus and method | |
US20230195761A1 (en) | Spatial lsm tree apparatus and method for indexing blockchain based geospatial point data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210714 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20210714 |
|
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: 20210914 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211012 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6961133 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |