JP2019040245A - データ提供プロラム、データ提供方法、及びデータ提供装置 - Google Patents

データ提供プロラム、データ提供方法、及びデータ提供装置 Download PDF

Info

Publication number
JP2019040245A
JP2019040245A JP2017159414A JP2017159414A JP2019040245A JP 2019040245 A JP2019040245 A JP 2019040245A JP 2017159414 A JP2017159414 A JP 2017159414A JP 2017159414 A JP2017159414 A JP 2017159414A JP 2019040245 A JP2019040245 A JP 2019040245A
Authority
JP
Japan
Prior art keywords
query
data
execution plan
database
storage unit
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.)
Granted
Application number
JP2017159414A
Other languages
English (en)
Other versions
JP7006013B2 (ja
Inventor
豪一 森本
Takekazu Morimoto
豪一 森本
真一 假屋
Shinichi Kariya
真一 假屋
武 龍頭
Takeshi Ryuto
武 龍頭
尚子 北村
Naoko Kitamura
尚子 北村
正勝 山田
Masakatsu Yamada
正勝 山田
雅子 宮澤
Masako MIYAZAWA
雅子 宮澤
利則 難波
Toshinori Nanba
利則 難波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017159414A priority Critical patent/JP7006013B2/ja
Priority to US16/105,270 priority patent/US11360975B2/en
Publication of JP2019040245A publication Critical patent/JP2019040245A/ja
Application granted granted Critical
Publication of JP7006013B2 publication Critical patent/JP7006013B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

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)
  • Operations Research (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データベースサーバの処理負荷を低減するデータ提供プログラム、方法及び装置を提供する。【解決手段】サーバシステムにおいて、キャッシュサーバは、クエリをデータベースサーバに送信した後に、データベースサーバから、クエリに基づいて生成された実行計画と実行計画に基づいてデータベースから抽出されたデータとを受信すると、クエリを実行計画と対応付けて候補クエリとして第1の記憶部に記憶するとともに、データを第2の記憶部に記憶する。第1の要求元から第1のクエリを受信すると、第1の記憶部において、第1のクエリと内容が対応する候補クエリを検索し、検索において第1のクエリと内容が対応する第1の候補クエリが特定された場合、第1の記憶部を参照して、第1の候補クエリに対応する第1の実行計画を特定するとともに、第1の実行計画に基づいて第2の記憶部から特定のデータを抽出し、特定のデータを第1の要求元に送信する。【選択図】図1

Description

本発明は、データ提供プロラム、データ提供方法、及びデータ提供装置に関する。
データベースサーバは、SQL(Structured Query Language)のような問合せ言語で記述された問合せ文(クエリとも称される)に応じて各種処理を実行する。例えば、データベースサーバはSQL文(SQLクエリ)を受け取ると、データベースの管理情報を基にSQL文を解析する。そして、SQL文の解析が終わると、データベースサーバは、SQL文を実行可能にする実行計画を作成する。データベースサーバは、作成した実行計画に基づいて、各種処理を実行する。
クライアントからの要求毎に、データベースサーバからクライアントへのデータの通信が発生すると、データベースサーバの負荷が増大する。そこで、クライアントが一度参照したデータをキャッシュサーバに保持し、2度目以降の参照においては、キャッシュサーバからデータをクライアントに提供する技術がある。
特開2008−287660号公報
しかしながら、キャッシュサーバを利用する場合であっても、例えば、SQL文がクライアントから送信される度に、SQL文を解析し実行計画を作成する処理を、データベースサーバが実行するのでは、データベースサーバの処理負荷が高いという課題がある。
また、データベースサーバに加えてキャッシュサーバ自身もSQL文を解析し実行計画を作成することも考えられる。ただし、その場合には、データベースサーバの処理負荷は軽減されるものの、2ヶ所でSQL文の解析を行うことによりSQL文に対する応答時間が劣化するとともに、キャッシュサーバの負担が増大するという課題がある。
一の側面では、本発明は、データベースサーバの処理負荷を低減することを目的とする。
本発明の一観点によれば、クエリをデータベースサーバに送信した後に、データベースサーバから、クエリに基づいて生成された実行計画と実行計画に基づいてデータベースから抽出されたデータとを受信すると、クエリを実行計画と対応付けて候補クエリとして第1の記憶部に記憶するとともに、データを第2の記憶部に記憶し、第1の要求元から第1のクエリを受信すると、第1の記憶部において、第1のクエリと内容が対応する候補クエリを検索し、検索において第1のクエリと内容が対応する第1の候補クエリが特定された場合、第1の記憶部を参照して、第1の候補クエリに対応する第1の実行計画を特定するとともに、第1の実行計画に基づいて第2の記憶部から特定のデータを抽出し、特定のデータを第1の要求元に送信し、検索において第1のクエリと内容が対応する候補クエリが特定されない場合、第1のクエリを前記データベースサーバに送信する。
一の側面において、本発明は、データベースサーバの処理負荷を低減することを可能とする。
図1は、サーバシステムの構成例を示す図である。 図2は、データベースサーバのハードウェア構成例を示す図である。 図3は、データベースサーバの処理手順の一例を示すフローチャートである。 図4は、キャッシュサーバのハードウェア構成例を示す図である。 図5aは、データベースに含まれるテーブルの一例を示す図である。図5bは、キャッシュデータベースに含まれるテーブルの一例を示す図である。図5cは、テーブルフィルタの一例を示す図である。 図6は、キャッシュサーバの処理手順の一例を示すフローチャートである。 図7は、キャッシュサーバのキャッシュデータベースへの記憶の処理手順の一例を示すフローチャートである。 図8は、SQL文の正規化の一例を示す図である。 図9は、キャッシュサーバの処理手順の一例を示すフローチャートである。 図10は、データベースサーバの更新に関する処理手順の一例を示すフローチャートである。
以下、図面を参照して各実施形態について詳細に説明する。各実施形態における各処理は適宜組み合わせることが可能である。なお、各実施形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
(第1実施形態)
以下、第1実施形態について説明する。図1は、第1実施形態のサーバシステムの構成例を示す図である。第1実施形態のサーバシステムは、キャッシュサーバ10、データベースサーバ11、アプリケーションサーバ12を含み、キャッシュサーバ10、データベースサーバ11、アプリケーションサーバ12は、ネットワーク13を介して接続されている。
アプリケーションサーバ12は、例えば、図示していないウェブサーバからのクエリに応じて、各種処理を実行し、ウェブサーバに結果を送信する。クエリは、問合せ言語で記述されている。各実施形態においては、問合せ言語としてSQLを取り扱うが、問合せ言語は、これに限られるものではない。
データベースサーバ11は、例えば、サービスに必要なデータを記憶したデータベースを有し、アプリケーションサーバ12から発信されたクエリに対応するデータをアプリケーションサーバ12に提供する。データベースサーバ11は、サービスに必要なデータを体系的に記録したデータ集合であるデータベース16を有する。
キャッシュサーバ10は、例えば、データベースサーバ11のデータベース16に記録されたデータの一部を保持し、アプリケーションサーバ12から発信されたクエリに対応するデータを、データベースサーバ11の代わりにアプリケーションサーバ12に提供する。キャッシュサーバ10は、実行計画キャッシュ14とキャッシュデータベース15とを有する。キャッシュデータベース15は、例えば、データベース16の一部を再現したものである。
まず、データベースサーバ11に関して説明する。図2は、第1実施形態に係るデータベースサーバ11のハードウェア構成例を示す。データベースサーバ11は、制御装置21、記憶装置22、通信装置23を有し、これらはシステムバス24で相互に接続されている。
制御装置21は、データベースサーバ11を制御する装置である。制御装置21は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路が用いられても良い。制御装置21は、記憶装置22に格納されているOS(Operating System)、各種プログラムに基づいて、各種演算や各ハードウェア構成部とのデータ入出力等、データベースサーバ11の動作を制御して、各種処理を実行する。制御装置21は、例えば、データベース管理システムを実行し、データベースを管理する。プログラムの実行中に必要となる各種情報等は、例えば記憶装置22から取得することができる。なお、制御装置21が行なう処理の一部を専用のハードウェアを用いて実現しても良い。制御装置21は、第1実施形態に係るプログラムに基づき、第1実施形態に係る処理を実行する。
記憶装置22は、主記憶装置及び補助記憶装置を含んでも良い。主記憶装置は、例えば、制御装置21に実行させるOSやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、主記憶装置は、制御装置21による処理に必要な各種データを記憶する。なお、主記憶装置としては、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)等を用いても良い。
補助記憶装置は、例えば、実行プログラムや、データベースサーバ11に設けられた制御プログラム等を記憶する。補助記憶装置は、制御装置21からの指示に基づいて、記憶された各種情報の読み出しや、書き込みを行うことができる。補助記憶装置としては、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等のストレージ等を用いても良い。補助記憶装置は、処理において使用する情報や処理の結果を記憶しても良い。また、主記憶装置と補助記憶装置は、互いの機能を担い合っても良い。
通信装置23は、例えば、制御装置21からの制御信号に基づき、図1に示す様に、ネットワーク13を介して接続されたアプリケーションサーバ12やキャッシュサーバ10との通信を行う。
以下、データベースサーバ11の制御装置21の具体的な動作を例示する。データベースサーバ11は、アプリケーションサーバ12から直接的に、若しくはキャッシュサーバ10を経由して間接的に、クエリを受信する。クエリはSQLで記述されており、例えばSELECT文は、データベースにおけるデータの抽出(参照)を示す。また、SELECT文に付随する各種パラメータにより、抽出対象となるデータの条件を指定することができる。データベースサーバ11の制御装置21は、受信したクエリをSQLの構文規則に基づいて構文解析(解釈)するとともに、データベース16の定義情報(スキーマとも称される)に基づいて、実行する一連の処理の順を示す実行計画を生成する。ここで、実行計画とは、データベースサーバがクエリで要求された処理を現実に実行するための内部の処理手順を詳細に規定した情報である。
制御装置21は、作成した実行計画を実行する。クエリが参照に関する場合には、制御装置21は、実行計画の実行より、回答データ(クエリ結果とも称される)を作成する。制御装置21は、実行計画と回答データとをキャッシュサーバ10に送信する。制御装置21は、実行計画の処理に関する部分のデータベース16の定義情報をキャッシュサーバ10に送信する場合もある。
第1実施形態に係るデータベースサーバ11のクエリに対する処理手順の一例について説明する。図3は、データベースサーバ11の処理手順の一例を示すフローチャートである。なお、一例は、クエリにデータの参照が含まれている場合の例である。
例えば、データベースサーバ11は、キャッシュサーバ10を介してアプリケーションサーバ12より発信されたクエリを受信する(S101)。制御装置21は、受信したクエリに含まれるSQL文を、SQLの構文規則とデータベース16の定義情報に基づいて、解析する(S102)。制御装置21は、解析後、クエリに対応する実行計画を作成する(S103)。制御装置21は、例えば、クエリに対応する実行計画を複数作成しても良い。
制御装置21は、作成した実行計画を実行し、記憶装置22に記憶されたデータベース16から実行計画に対応するデータを取得する(S104)。制御装置21は、実行計画が複数ある場合は、その中から、最も効率よく短時間に処理が完了できる実行計画を選択して、実行しても良い。
制御装置21は、得られたデータを基に、クエリに対する回答データを作成する(S105)。回答データは、例えば、表データであっても良い。
制御装置21は、通信装置23を制御し、クエリに対する応答として、作成した回答データと実行計画をキャッシュサーバ10に送信する(S106)。
この場合、キャッシュサーバ10に送信された回答データは、キャッシュサーバ10からクエリ元であるアプリケーションサーバ12に送信されることなる。制御装置21は、S106の処理とともに、作成した回答データを直接アプリケーションサーバ12に送信しても良い。
次に、キャッシュサーバ10に関して説明する。図4は、第1実施形態に係るキャッシュサーバ10のハードウェア構成例を示す。キャッシュサーバ10は、制御装置31、記憶装置32、通信装置33を有し、これらはシステムバス34で相互に接続されている。
制御装置31は、キャッシュサーバ10を制御する装置である。制御装置31は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路が用いられても良い。制御装置31は、記憶装置32に格納されているOS(Operating System)、各種プログラムに基づいて、各種演算や各ハードウェア構成部とのデータ入出力等、キャッシュサーバ10の動作を制御して、各種処理を実行する。プログラムの実行中に必要となる各種情報等は、例えば記憶装置32から取得することができる。なお、制御装置31が行なう処理の一部を専用のハードウェアを用いて実現しても良い。制御装置31は、第1実施形態に係るプログラムに基づき、第1実施形態に係る処理を実行する。
記憶装置32は、主記憶装置及び補助記憶装置を含んでも良い。主記憶装置は、例えば、制御装置31に実行させるOSやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、主記憶装置は、制御装置31による処理に必要な各種データを記憶する。なお、主記憶装置としては、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)等を用いても良い。
補助記憶装置は、例えば、実行プログラムや、キャッシュサーバ10に設けられた制御プログラム等を記憶する。補助記憶装置は、制御装置31からの指示に基づいて、記憶された各種情報の読み出しや、書き込みを行うことができる。補助記憶装置としては、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等のストレージ等を用いても良い。補助記憶装置は、処理において使用する情報や処理の結果を記憶しても良い。また、主記憶装置と補助記憶装置は、互いの機能を担い合っても良い。
通信装置33は、例えば、制御装置31からの制御信号に基づき、図1に示す様に、ネットワーク13を介して接続されたアプリケーションサーバ12やデータベースサーバ11との通信を行う。
以下、キャッシュサーバ10の制御装置31の具体的な動作を例示する。キャッシュサーバ10は、実行計画キャッシュ14とキャッシュデータベース15とを有する。実行計画キャッシュ14は、データベースサーバ11で作成された各実行計画が、それぞれの元となるクエリと対応付けられて記憶されている。キャッシュサーバ10は、データベースサーバ11から実行計画と回答データとを受信する。キャッシュサーバ10の制御装置31は、受信した実行計画をクエリと対応付けて実行計画キャッシュ14に記憶する。また、制御装置31は、受信した回答データをキャッシュデータベース15に記憶する。制御装置31は、回答データをキャッシュデータベース15に記憶させる際、データベースサーバ11から受信したデータベース16の一部の定義情報に基づいて、データベース16の一部と同様の構成となるように、回答データを記憶させる。これにより、キャッシュデータベース15は、データベースサーバ11のデータベース16の一部を再現したものとなる。
図5a、図5bを参照しながら、より具体的に説明する。図5aは、データベース16に含まれるテーブルの一例を示す図である。図5bは、キャッシュデータベース15に含まれるテーブルの一例を示す図である。なお、データベース16は、例えば、データをテーブル(表)形式によって管理されるRDB(Relational Datebase)とする。
データベース16には、テーブル50が含まれているとする。例えば、キャッシュサーバ10が、a11、a13、a14、a31、a32、a33、a34、a41、a42、a44のそれぞれのデータを、一又は複数の回答データとして、データベースサーバ11から受信したとする。この場合、キャッシュサーバ10は、キャッシュデータベース15に含まれるテーブル51にそれぞれのデータを記憶する。テーブル51は、テーブル50と同一のレコードであって同一のカラムのフィールドに同一のデータが記憶されており、テーブル50の一部が再現されている。
図5cは、テーブルフィルタの一例を示す図である。キャッシュサーバ10は、テーブル51と対応付けてテーブルフィルタ52を有しても良い。テーブルフィルタ52は、テーブル51においてデータが記憶されているフィールドと同一位置のテーブルフィルタ52のフィールドに1を記憶し、テーブル51においてデータが記憶されていないフィールドと同一位置のテーブルフィルタ52のフィールドに0を記憶したものである。
制御装置31は、テーブルフィルタ52に基づいて、テーブル51の各フィールドのデータの有無を判定することができる。例えば、テーブル51の4行目のレコードの全部のデータが必要な場合、制御装置31は、テーブルフィルタ52の4行目のレコードの全部の値を乗算する。乗算の結果が0であれば、制御装置31は、4行目のレコードの少なくとも一部のデータがテーブル51にはないと判定できる。このように、制御装置31は、乗算命令を用いて、高速にキャッシュデータベース15に含まれるデータの利用可否を判断できる。
また、制御装置31は、アプリケーションサーバ12からデータベースサーバ11への新たなクエリを受信すると、クエリに含まれているSQL文と、実行計画キャッシュ14の実行計画のそれぞれに対応付けられているクエリ(以下、候補クエリと言う)に含まれるSQL文との比較を行い、クエリと内容が対応する候補クエリの有無を判定する。ここでの比較においては、クエリと候補クエリとは文字列として単純に取り扱われ、SQLに基づく構文解析まで行わないことに留意する。制御装置31は、例えば、クエリに含まれているSQL文の文字列と候補クエリに含まれるSQL文の文字列とが一致する場合、それらが対応すると判定してもよい。文字列は、例えば、文字、数字、記号、スペースが含まれても良い。
クエリと内容が対応する候補クエリが検出された場合は、検出した候補クエリに対応付けられた実行計画を特定し、特定した実行計画を実行する。制御装置31は、実行計画の実行により、キャッシュデータベース15から回答データを作成し、クエリの応答として、データベースサーバ11の代わりに、アプリケーションサーバ12に回答データを送信する。
クエリと内容が対応する候補クエリが検出されない場合、制御装置31は、受信したクエリを、データベースサーバ11に送信する。
第1実施形態に係るキャッシュサーバ10のクエリに対する処理手順の一例について説明する。図6は、キャッシュサーバ10の処理手順の一例を示すフローチャートである。なお、一例は、クエリにデータの参照が含まれている場合の例である。
例えば、キャッシュサーバ11は、アプリケーションサーバ12より発信されたクエリを受信する(S201)。制御装置31は、受信したクエリに含まれるSQL文と内容が対応する候補クエリの有無を判定する(S202)。
内容が対応する候補クエリが検出された場合(S202Yes)、制御装置31は、記憶装置32に記憶された実行計画キャッシュ14から、内容が対応する候補クエリと対応付けられた実行計画を特定する(S203)。制御装置31は、特定した実行計画に対応するデータが、キャッシュデータベース15に存在するか否か判定する(S204)。
データが存在すると判定された場合(S204Yes)、制御装置31は、特定した実行計画を実行し、記憶装置32に記憶されたキャッシュデータベース15から実行計画に対応するデータを取得する(S205)。
制御装置31は、得られたデータに基づいて、クエリに対する回答データを作成する(S206)。回答データは、例えば、表データであっても良い。制御装置31は、クエリに対する応答として、作成した回答データをアプリケーションサーバ12に送信する(S207)。
内容が対応する候補クエリが検出されない場合(S202No)、制御装置31は、クエリをデータベースサーバ11に送信する(S208)。また、データが存在しないと判定された場合も(S204No)、制御装置31は、クエリをデータベースサーバ11に送信する(S208)。これらの場合、上述した通りに、データベースサーバ11にて各処理が実行され、キャッシュサーバ10は、データベースサーバ11で作成された回答データと実行計画とを受信する。
以上より、キャッシュサーバ10は、アプリケーションサーバ12からのクエリに対して、データベースサーバ11に処理をさせずに、応答する場合がある。これによりデータベースサーバ11の処理負荷は低減される。また、キャッシュサーバ10は、クエリに含まれるSQL文の比較により候補クエリを特定するため、キャッシュサーバ10及びデータベースサーバ11においてSQL文の構文解析と実行計画の作成を行わずに、アプリケーションサーバ12からの新たなクエリに対して応答することを可能にしている。
次に、第1実施形態に係るキャッシュサーバ10のキャッシュデータベース15への記憶の処理手順の一例について説明する。図7は、キャッシュサーバ10のキャッシュデータベース15への記憶の処理手順の一例を示すフローチャートである。
例えば、キャッシュサーバ10は、データベースサーバ11より実行計画と回答データとを受信する(S301)。制御装置31は、受信した実行計画と実行計画キャッシュ14の空き容量とを比較し、受信した実行計画に対して実行計画キャッシュ14の空き容量が十分か不足かを判定する(S302)。
実行計画キャッシュ14の空き容量が十分と判定された場合(S302Yes)、制御装置31は、受信した実行計画を実行計画キャッシュ14に記憶する(S303)。
実行計画キャッシュ14の空き容量が不足と判定された場合(S302No)、制御装置31は、LRU(Least Recently Used)方式により、受信した実行計画と、実行計画キャッシュ14に記憶された実行計画のうち使用されたのが最も古い実行計画とを置換して、受信した実行計画を実行計画キャッシュ14に記憶する(S306)。
S303とS306のいずれかの処理の後、制御装置31は、受信した回答データとキャッシュデータベース15の空き容量とを比較し、受信した回答データに対してキャッシュデータベース15の空き容量が十分か不足かを判定する(S304)。
キャッシュデータベース15の空き容量が十分と判定された場合(S304Yes)、制御装置31は、受信した回答データをキャッシュデータベース15に記憶する(S305)。
キャッシュデータベース15の空き容量が不足と判定された場合(S304No)、制御装置31は、キャッシュデータベース15に記憶されているデータの被参照数カウンタが0であるデータを特定し、キャッシュデータベース15から特定されたデータを削除する(S307)。制御装置31は、S307の処理の後、S304の処理を実行する。
被参照数カウンタとは、例えば、キャッシュデータベース15に記憶されている個々のデータ毎に、それぞれのデータを参照する、実行計画キャッシュ14に記憶された実行計画の数を示す情報である。具体的には、キャッシュデータベース15に記憶されている被参照数カウンタが5の第1のデータは、実行計画キャッシュ14に記憶された5つの実行計画により参照されていることになる。つまり、制御装置31は、その5つの実行計画のいずれかを実行すると、キャッシュデータベース15から少なくとも第1のデータを取得することになる。
被参照カウンタは、個々のデータ毎であることを例示したが、これに限られるものではなく、例えば、キャッシュデータベース15に記憶されたテーブル毎に、参照する実行計画をカウントしたものであっても良い。
なお、S307の処理において、被参照数カウンタが0であるデータがない場合、制御装置31は、いずれかのデータの被参照数カウンタが0になるまで、実行計画キャッシュ14に記憶された実行計画のうち使用されたのが最も古い実行計画を削除するようにしても良い。
また、S306の処理において、LRU方式であることを例示したが、これに限られるものではなく、制御装置31は、LFU(Least Freruently Used)方式により、受信した実行計画と最も使用頻度が低い実行計画とを置換するようにしても良い。
以上、第1実施形態によれば、キャッシュサーバ10は、アプリケーションサーバ12からのクエリに対して、データベースサーバ11に処理を実行させずに、応答することができるため、データベースサーバ11の処理負荷を低減することができる。
また、キャッシュサーバ10は、受信したクエリに含まれるSQL文を構文解析することなく、実行計画を特定することができるため、SQL文の構文解析や実行計画作成に係る処理負荷や処理時間を省くことができる。
また、キャッシュサーバ10は、実行計画キャッシュ14と、データベース16の一部を再現したキャッシュデータベース15とを有するため、実行計画の実行により所望のデータを取得することができる。キャッシュデータベース15が、データベース16の一部を再現したデータ構造であるため、例えば、クエリ又は実行計画とキャッシュデータ(回答データ)とを1対1で対応付けて保持するデータ構造と比べて、キャッシュデータの重複を抑制することができ、データ容量を低減することができる。
(第2実施形態)
次に、第2実施形態について説明する。第2実施形態に係るキャッシュサーバ10のハードウェア構成は、第1実施形態に係るキャッシュサーバ10と同一であっても良いため、説明を省略する。
以下、第2実施形態に係るキャッシュサーバ10の具体的な動作を例示する。キャッシュサーバ10の制御装置31は、アプリケーションサーバ12から新たなクエリを受信した場合、クエリに含まれるSQL文を正規化する。図8は、SQL文の正規化の一例を示す図である。正規化とは、例えば、SQL文に含まれるスペースやコメントを削除すること、所定の規則に従って文字列の順序を変更すること、が挙げられる。
制御装置31は、正規化後のクエリと実行計画キャッシュ14の実行計画のそれぞれに対応付けられている候補クエリとの比較を行い、正規化後のクエリと内容が対応する候補クエリの有無を判定する。この場合、候補クエリについても予め正規化がされていても良いし、比較処理を実行する際に候補クエリを正規化してから比較しても良い。
正規化後のクエリと内容が対応する候補クエリが検出された場合は、検出した候補クエリに対応付けられた実行計画を特定し、特定した実行計画を実行する。制御装置31は、実行計画の実行により、キャッシュデータベース15から回答データを作成し、クエリの応答として、データベースサーバ11の代わりに、アプリケーションサーバ12に回答データを送信する。
正規化後のクエリと内容が対応する候補クエリが検出されない場合、制御装置31は、受信したクエリを、データベースサーバ11に送信する。
第2実施形態に係るキャッシュサーバ10のクエリに対する処理手順の一例について説明する。図9は、キャッシュサーバ10の処理手順の一例を示すフローチャートである。なお、一例は、クエリにデータの参照が含まれている場合の例である。
例えば、キャッシュサーバ11は、アプリケーションサーバ12より発信されたクエリを受信する(S401)。制御装置31は、受信したクエリに含まれるSQL文を正規化する(S402)。制御装置31は、正規化されたクエリと内容が対応する候補クエリの有無を判定する(S403)。
内容が対応する候補クエリが検出された場合(S403Yes)、制御装置31は、S203以降の処理を実行する。
内容が対応する候補クエリが検出されない場合(S403No)、制御装置31は、S208の処理を実行する。また、データが存在しないと判定された場合も(S204No)、制御装置31は、クエリをデータベースサーバ11に送信する(S208)。これらの場合、上述した通りに、データベースサーバ11にて各処理が実行され、キャッシュサーバ10は、データベースサーバ11で作成された回答データと実行計画とを受信する。
第2実施形態によれば、キャッシュサーバ10は、アプリケーションサーバ12からのクエリに対して、キャッシュのヒット率を向上させることができる。つまり、キャッシュサーバ10は、SQL文の正規化を実行することにより、例えば、記載されたSQL文の文字列にスペースやコメントによる差異がある場合であっても、他の記載が一致するキャッシュされたSLQ文である候補クエリを特定することができる。
(第3実施形態)
次に、第3実施形態について説明する。第3実施形態に係るデータベースサーバ11のハードウェア構成は、第1実施形態に係るデータベースサーバ11と同一であっても良いため、説明を省略する。
以下、第3実施形態に係るキャッシュサーバ10の具体的な動作を例示する。データベースサーバ11は、アプリケーションサーバ12から直接的に、若しくはキャッシュサーバ10を経由して間接的に、データの更新に関するクエリを受信する。データの更新は、例えば、データの更新、追加、削除を含んでも良い。SQLにおいては、データの更新はUPDATE文、追加はINSERT文、削除はDELETE文がそれぞれ対応する。
データベースサーバ11の制御装置21は、受信したクエリに含まれるSQL文を解析し、データベース16の定義情報に基づいて、受信したクエリに対応する実行計画を作成する。制御装置21は、作成した実行計画を実行し、データベース16に含まれるデータの更新を行う。
制御装置21は、データベース16に含まれるデータのうちキャッシュデータベース15に記憶されているデータを記録したキャッシュ管理情報を参照し、更新されたデータがキャッシュデータベース15に影響するものであるか判定する。
更新処理がキャッシュデータベース15に影響する場合、制御装置21は、キャッシュサーバ10に対して、キャッシュデータベース15の更新を指示する。
次に、第3実施形態に係るデータベースサーバ11の更新に関する処理手順の一例について説明する。図10は、データベースサーバ11の更新に関する処理手順の一例を示すフローチャートである。なお、一例は、クエリにデータの更新が含まれている場合の例である。
例えば、データベースサーバ11は、キャッシュサーバ10を介してアプリケーションサーバ12より発信された更新に関するクエリを受信する(S501)。制御装置21は、受信したクエリに含まれるSQL文を、データベース16の定義情報に基づいて、解析し、クエリに対応する実行計画を作成する(S502)。
制御装置21は、作成した実行計画を実行し、記憶装置22に記憶されたデータベース16に含まれるデータを更新する(S503)。制御装置21は、データベース16の更新の処理が、キャッシュサーバ10のキャッシュデータベース15に影響するか否かを判定する(S504)。
キャッシュデータベース15に影響する場合(S504Yes)、制御装置21は、キャッシュサーバ10に対して、同じデータの更新処理をキャッシュデータベース15に実行するように、指示を送信する(S505)。制御装置21は、キャッシュデータベース15より更新が完了した旨の通知を受信したかを判定する(S506)。
完了通知を受信した場合(S506Yes)、制御装置21は、通信装置23を制御し、クエリに対して、更新完了の応答をキャッシュサーバ10に送信する(S507)。
完了通知を受信しない場合(S506No)、制御装置21は、キャッシュサーバ10より完了通知を受信するまで待機する。
キャッシュデータベース15に影響しない場合(S504No)、制御装置21は、通信装置23を制御し、クエリに対して、更新完了の応答をキャッシュサーバ10に送信する(S507)。
なお、データベースサーバ11は、キャッシュサーバ10が複数ある場合は、すべてのキャッシュサーバ10からの完了通知を受信するまで、クエリに対する応答を行わないようにしても良い。
第3実施形態によれば、データベース16に対するデータの更新に関するクエリがあった際に、データベースサーバ11は、キャッシュデータベース15のデータの更新処理が完了するまで、クエリに対する更新処理完了の応答をしないため、データベース16とキャッシュデータベース15との間でデータが齟齬することを防止することができる。
また、データベース16の更新処理が、例えば、あるテーブルにカラムを追加するといったテーブルの定義を変更するような更新である場合、データベースサーバ11は、キャッシュサーバ10に、実行計画キャッシュ14に記憶された実行計画のうち、更新処理に影響される実行計画について削除するように指示しても良い。
この場合、キャッシュサーバ10は、更新内容をデータベースサーバ11から受信し、実行計画キャッシュ14から更新処理により更新されるデータを参照する実行計画を特定し、特定した実行計画を削除しても良い。
また、データベースサーバ11は、実行計画キャッシュ14に記憶された更新処理に影響される実行計画について、更新後のデータベース16に応じて、最新の実行計画を作成し、最新の実行計画をキャッシュサーバ10に送信しても良い。
本発明は、上述した各実施形態の構成及び手順に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜処理方法の変更、組み換え等が可能である。
10:キャッシュサーバ
11:データベースサーバ
12:アプリケーションサーバ
13:ネットワーク
14:実行計画キャッシュ
15:キャッシュデータベース
16:データベース
21:制御装置
22:記憶装置
23:通信装置
24:システムバス
31:制御装置
32:記憶装置
33:通信装置
34:システムバス
50:テーブル
51:テーブル
52:テーブルフィルタ

Claims (8)

  1. クエリをデータベースサーバに送信した後に、前記データベースサーバから、前記クエリに基づいて生成された実行計画と前記実行計画に基づいてデータベースから抽出されたデータとを受信すると、前記クエリを前記実行計画と対応付けて候補クエリとして第1の記憶部に記憶するとともに、前記データを第2の記憶部に記憶し、
    第1の要求元から第1のクエリを受信すると、前記第1の記憶部において、前記第1のクエリと内容が対応する候補クエリを検索し、
    前記検索において前記第1のクエリと内容が対応する第1の候補クエリが特定された場合、前記第1の記憶部を参照して、前記第1の候補クエリに対応する第1の実行計画を特定するとともに、前記第1の実行計画に基づいて前記第2の記憶部から特定のデータを抽出し、前記特定のデータを前記第1の要求元に送信し、
    前記検索において前記第1のクエリと内容が対応する候補クエリが特定されない場合、前記第1のクエリを前記データベースサーバに送信する、
    処理をコンピュータに実行させることを特徴とするデータ提供プログラム。
  2. 前記クエリは、問合せ言語で記述されており、
    前記実行計画は、前記問合せ言語に基づく構文解析を前記クエリに対して行うことにより生成され、
    前記検索は、前記問合せ言語に基づく構文解析を行うことなく行われる、
    ことを特徴とする請求項1に記載のデータ提供プログラム。
  3. 前記第2の記憶部のデータ構造は、前記データベースサーバが有する前記データベースの一部のデータ構造と同一である、
    ことを特徴とする請求項1に記載のデータ提供プログラム。
  4. 前記第1のクエリと内容が対応する候補クエリを検索する処理は、前記第1のクエリの内容を正規化し、正規化後の第1のクエリの内容と対応する候補クエリを検索する処理である、
    ことを特徴とする請求項1に記載のデータ提供プログラム。
  5. 前記データベースサーバからデータの更新処理に関する情報を受信すると、前記情報に基づいて、前記第2の記憶部に記憶されたデータに対して、更新処理を実行する、
    ことを特徴とする請求項1に記載のデータ提供プログラム。
  6. 前記データベースサーバからデータの更新処理に関する情報を受信すると、前記情報に基づいて、前記第1の記憶部からデータの更新処理により影響を受ける特定の実行計画を削除する、
    ことを特徴とする請求項1に記載のデータ提供方法。
  7. クエリをデータベースサーバに送信した後に、前記データベースサーバから、前記クエリに基づいて生成された実行計画と前記実行計画に基づいてデータベースから抽出されたデータとを受信すると、前記クエリを前記実行計画と対応付けて候補クエリとして第1の記憶部に記憶するとともに、前記データを第2の記憶部に記憶し、
    第1の要求元から第1のクエリを受信すると、前記第1の記憶部において、前記第1のクエリと内容が対応する候補クエリを検索し、
    前記検索において前記第1のクエリと内容が対応する第1の候補クエリが特定された場合、前記第1の記憶部を参照して、前記第1の候補クエリに対応する第1の実行計画を特定するとともに、前記第1の実行計画に基づいて前記第2の記憶部から特定のデータを抽出し、前記特定のデータを前記第1の要求元に送信し、
    前記検索において前記第1のクエリと内容が対応する候補クエリが特定されない場合、前記第1のクエリを前記データベースサーバに送信する、
    処理をコンピュータが実行することを特徴とするデータ提供方法。
  8. クエリをデータベースサーバに送信した後に、前記データベースサーバから、前記クエリに基づいて生成された実行計画と前記実行計画に基づいてデータベースから抽出されたデータとを受信すると、前記クエリを前記実行計画と対応付けて候補クエリとして第1の記憶部に記憶するとともに、前記データを第2の記憶部に記憶し、第1の要求元から第1のクエリを受信すると、前記第1の記憶部において、前記第1のクエリと内容が対応する候補クエリを検索し、前記検索において前記第1のクエリと内容が対応する第1の候補クエリが特定された場合、前記第1の記憶部を参照して、前記第1の候補クエリに対応する第1の実行計画を特定するとともに、前記第1の実行計画に基づいて前記第2の記憶部から特定のデータを抽出し、前記特定のデータを前記第1の要求元に送信し、前記検索において前記第1のクエリと内容が対応する候補クエリが特定されない場合、前記第1のクエリを前記データベースサーバに送信する、処理を実行する制御部、
    を有することを特徴とするデータ提供装置。
JP2017159414A 2017-08-22 2017-08-22 データ提供プロラム、データ提供方法、及びデータ提供装置 Active JP7006013B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017159414A JP7006013B2 (ja) 2017-08-22 2017-08-22 データ提供プロラム、データ提供方法、及びデータ提供装置
US16/105,270 US11360975B2 (en) 2017-08-22 2018-08-20 Data providing apparatus and data providing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017159414A JP7006013B2 (ja) 2017-08-22 2017-08-22 データ提供プロラム、データ提供方法、及びデータ提供装置

Publications (2)

Publication Number Publication Date
JP2019040245A true JP2019040245A (ja) 2019-03-14
JP7006013B2 JP7006013B2 (ja) 2022-01-24

Family

ID=65435153

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017159414A Active JP7006013B2 (ja) 2017-08-22 2017-08-22 データ提供プロラム、データ提供方法、及びデータ提供装置

Country Status (2)

Country Link
US (1) US11360975B2 (ja)
JP (1) JP7006013B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022079856A1 (ja) * 2020-10-15 2022-04-21 日本電信電話株式会社 データ処理装置、データ処理方法及びデータ処理プログラム
JP7433281B2 (ja) 2021-07-20 2024-02-19 エスアーペー エスエー インテリジェントなクエリプランキャッシュサイズ管理

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162543A (zh) * 2019-05-29 2019-08-23 北京奇艺世纪科技有限公司 一种信息查询方法及装置
US11023464B2 (en) * 2019-09-03 2021-06-01 International Business Machines Corporation Reducing temp size over a base table

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530566A (ja) * 2007-05-21 2010-09-09 グーグル・インコーポレーテッド クエリ統計プロバイダ
JP2013050864A (ja) * 2011-08-31 2013-03-14 Fujitsu Frontech Ltd 情報処理システム、情報処理方法および情報処理プログラム
JP2015197909A (ja) * 2014-04-02 2015-11-09 株式会社 ビーアイマトリックス 大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE515459C2 (sv) * 1999-02-10 2001-08-06 Ericsson Telefon Ab L M Metod för att synkronisera en värddatabas och en fjärrdatabas
US6466931B1 (en) * 1999-07-30 2002-10-15 International Business Machines Corporation Method and system for transparently caching and reusing query execution plans efficiently
US20030158842A1 (en) * 2002-02-21 2003-08-21 Eliezer Levy Adaptive acceleration of retrieval queries
US7877373B2 (en) * 2006-06-30 2011-01-25 Oracle International Corporation Executing alternative plans for a SQL statement
JP2008287660A (ja) 2007-05-21 2008-11-27 Hitachi Ltd キャッシュサーバ、キャッシュ管理方法、およびキャッシュ管理プログラム
US7937385B2 (en) * 2008-05-05 2011-05-03 International Business Machines Corporation Obtaining a plan for executing a query in a relational database
US20100306188A1 (en) * 2009-06-01 2010-12-02 Microsoft Corporation Persistent query plans
US8392403B2 (en) * 2009-09-18 2013-03-05 Microsoft Corporation Management of data and computation in data centers
JP5199317B2 (ja) * 2010-08-25 2013-05-15 株式会社日立製作所 データベース処理方法、データベース処理システム及びデータベースサーバ
EP2641190A1 (en) * 2010-10-01 2013-09-25 Telefonaktiebolaget L M Ericsson (PUBL) Generation of a query plan for accessing a database
US9002813B2 (en) * 2011-12-22 2015-04-07 Sap Se Execution plan preparation in application server
WO2013161080A1 (ja) * 2012-04-27 2013-10-31 株式会社日立製作所 データベース管理システム、計算機、データベース管理方法
US8924373B2 (en) * 2012-08-09 2014-12-30 International Business Machines Corporation Query plans with parameter markers in place of object identifiers
CN103577561B (zh) * 2013-10-24 2017-12-01 华为技术有限公司 执行计划的存储方法、装置及系统
US10255324B2 (en) * 2017-02-03 2019-04-09 International Business Machines Corporation Query modification in a database management system
US10459889B2 (en) * 2017-06-06 2019-10-29 Sap Se Multi-user database execution plan caching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530566A (ja) * 2007-05-21 2010-09-09 グーグル・インコーポレーテッド クエリ統計プロバイダ
JP2013050864A (ja) * 2011-08-31 2013-03-14 Fujitsu Frontech Ltd 情報処理システム、情報処理方法および情報処理プログラム
JP2015197909A (ja) * 2014-04-02 2015-11-09 株式会社 ビーアイマトリックス 大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
加藤 祥平: "Oracle 初心者必読! 絶対に身に付けたいSQLチューニングの基礎知識", 月刊DBマガジン 2009年6月号, vol. 第19巻2号, JPN6021019672, 1 June 2009 (2009-06-01), JP, pages 106 - 117, ISSN: 0004513245 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022079856A1 (ja) * 2020-10-15 2022-04-21 日本電信電話株式会社 データ処理装置、データ処理方法及びデータ処理プログラム
JP7524962B2 (ja) 2020-10-15 2024-07-30 日本電信電話株式会社 データ処理装置、データ処理方法及びデータ処理プログラム
US12093257B2 (en) 2020-10-15 2024-09-17 Nippon Telegraph And Telephone Corporation Data processing device, data processing method, and data processing program based on a historical plan tree
JP7433281B2 (ja) 2021-07-20 2024-02-19 エスアーペー エスエー インテリジェントなクエリプランキャッシュサイズ管理

Also Published As

Publication number Publication date
JP7006013B2 (ja) 2022-01-24
US11360975B2 (en) 2022-06-14
US20190065551A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
US6832227B2 (en) Database management program, a database managing method and an apparatus therefor
US10733055B1 (en) Methods and apparatus related to graph transformation and synchronization
CN107273522B (zh) 面向多应用的数据存储系统和数据调用方法
US9817858B2 (en) Generating hash values
US8495701B2 (en) Indexing of security policies
US20150234927A1 (en) Application search method, apparatus, and terminal
US8185546B2 (en) Enhanced control to users to populate a cache in a database system
JP7006013B2 (ja) データ提供プロラム、データ提供方法、及びデータ提供装置
US10635668B2 (en) Intelligently utilizing non-matching weighted indexes
US20130325826A1 (en) Matching transactions in multi-level records
WO2018036549A1 (zh) 分布式数据库查询方法、装置及管理系统
US11797495B2 (en) Simulating data definition triggers in a database system
US10685031B2 (en) Dynamic hash partitioning for large-scale database management systems
US10241979B2 (en) Accelerated detection of matching patterns
KR102368775B1 (ko) 인덱스 관리 방법, 장치, 기기 및 저장 매체
US20230153455A1 (en) Query-based database redaction
CN111914020A (zh) 数据同步方法及装置、数据查询方法及装置
US10324933B2 (en) Technique for processing query in database management system
CN104731641A (zh) 用于复制计算系统的批量作业的方法与系统
US10019483B2 (en) Search system and search method
US11588844B1 (en) Distributing search loads to optimize security event processing
US9710516B2 (en) Ghost table joins in remote systems
JP7173165B2 (ja) 履歴管理装置、履歴管理方法及びプログラム
JP6628566B2 (ja) データベース管理装置及びプログラム
CN114443782A (zh) 图形数据库的数据处理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20180528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210716

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: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211220

R150 Certificate of patent or registration of utility model

Ref document number: 7006013

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150