JP2010066922A - データベース管理方法、データベース管理プログラム、および、データベース管理システム - Google Patents

データベース管理方法、データベース管理プログラム、および、データベース管理システム Download PDF

Info

Publication number
JP2010066922A
JP2010066922A JP2008231402A JP2008231402A JP2010066922A JP 2010066922 A JP2010066922 A JP 2010066922A JP 2008231402 A JP2008231402 A JP 2008231402A JP 2008231402 A JP2008231402 A JP 2008231402A JP 2010066922 A JP2010066922 A JP 2010066922A
Authority
JP
Japan
Prior art keywords
sql
pool
standby
unit
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.)
Withdrawn
Application number
JP2008231402A
Other languages
English (en)
Inventor
Takahiro Hayashi
崇博 林
Koji Kimura
耕治 木村
Norihiro Hara
憲宏 原
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008231402A priority Critical patent/JP2010066922A/ja
Publication of JP2010066922A publication Critical patent/JP2010066922A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データベースの前処理結果を効率的に管理して、データベースの処理性能を高めること。
【解決手段】更新対象のデータを格納する待機系DB201を有する待機系サーバ3は、実行系サーバ2からデータ処理要求の発行履歴データ111を受信すると、受信した発行履歴データ111のデータ処理要求に従って、待機系DB201のデータを更新することで、実行系DB101と待機系DB201とをデータ同期するとともに、受信した発行履歴データ111からデータ処理要求ごとの発行頻度を抽出し、抽出した発行頻度が多いほど、そのデータ処理要求が実行系SQLプール103に記憶される優先度合いを高くする旨のプール管理ルール114を作成し、実行系サーバ2のプール管理ルール114を更新する。
【選択図】図1

Description

本発明は、データベース管理方法、データベース管理プログラム、および、データベース管理システムに関する技術である。
動的SQLはクライアントが発行するまでSQL文が確定しないため、クライアントの実行時にSQLを前処理する必要がある。なおSQLの前処理とは、C言語のコンパイルに相当するものである。
一回前処理したSQLの前処理結果を保持しておき、同一SQLに対する二度目以降の前処理を省略する技術をSQLプールと呼ぶ。SQLプールは揮発性のメモリ上に置くのが一般的である。
特許文献1に開示されているシステムは、システム終了時に前処理結果を不揮発性の記憶装置に退避することにより、SQLプールの有効性を高めている。
特開2003−271428号公報
データベース管理システムの処理性能は、データベースへのアクセスだけでなく、SQLの前処理時間に左右される。
SQL文が固定であればコンパイルと同時に前処理することができるが、SQL文は固定ではなくSQL実行時にSQL文を作成して前処理を行う動的SQLを使用するのが一般的である。
また、システムの構成上、実行時の前処理が必須であるデータベース管理システムも存在する。
近年データベースへのアクセスは、CPUの64ビット化に伴い使用できるメモリが増えたことにより、メモリ上にデータのすべてを配置するインメモリDBが幅広く利用できるようになったため、メモリ上のアクセス速度が高速化している。
データベースへのアクセスが高速化したことにより、更なる性能向上のためには動的SQLの前処理の高速化が重要となっている。
動的SQLの前処理に関しては、前処理自体を高速化する方法と、一回前処理した結果をキャッシュしておくSQLプールを使用する方法と、の2つの方法がある。
前処理自体を高速化することも重要ではあるが、クライアントの発行するSQLの前処理結果がSQLプールに存在する確率を高めること、つまりキャッシュヒット率を高めることも重要である。
本発明は、このような背景に鑑みてなされたものであり、データベースの前処理結果を効率的に管理して、データベースの処理性能を高めることを、主な目的とする。
前記課題を解決するため、本発明は、クライアントからのデータ処理要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムによるデータベース管理方法であって、
更新対象のデータを格納する実行系DBを有する前記実行系サーバが、
前記データ処理要求と、その前処理結果を対応づけて記憶する実行系SQLプールと、
前記データ処理要求ごとに前記実行系SQLプールに記憶される優先度合いを示すプール管理ルールと、を有し、
更新対象のデータを格納する待機系DBを有する前記待機系サーバが、
前記実行系サーバから前記データ処理要求の発行履歴データを受信すると、
前記受信した発行履歴データのデータ処理要求に従って、前記待機系DBのデータを更新することで、前記実行系DBと前記待機系DBとをデータ同期するとともに、
前記受信した発行履歴データから前記データ処理要求ごとの発行頻度を抽出し、前記抽出した発行頻度が多いほど、そのデータ処理要求が前記実行系SQLプールに記憶される優先度合いを高くする旨の前記プール管理ルールを作成し、前記実行系サーバの前記プール管理ルールを更新することを特徴とする。
その他の手段は、後記する。
本発明によれば、データベースの前処理結果を効率的に管理して、データベースの処理性能を高めることが可能となった。
以下、第1実施形態によるデータベース管理システムについて、図面を参照して説明する。
図1は、第1実施形態のデータベース管理システムを示す構成図である。データベース管理システムは、クライアント1、実行系サーバ2、および、待機系サーバ3がネットワーク9で接続されて構成される。なお、待機系サーバ3の台数は、1台でもよいし、複数台のクラスタリング構成でもよい。
ネットワーク9は、例えば、IP(Internet Protocol)ネットワークとして、または、各サーバ(実行系サーバ2および待機系サーバ3)がブレードサーバである場合には内部バスとして、構成される。
なお、図1の各装置(クライアント1、実行系サーバ2、待機系サーバ3)は、それぞれ演算処理を行う際に用いられる記憶手段としてのメモリ92、前記演算処理を行うCPU(Central Processing Unit)91、および、ネットワーク9を介して他装置と通信を行う通信インターフェース20を少なくとも備えるコンピュータとして構成される。なお、メモリ92は、RAM(Random Access Memory)などにより構成される。CPU91は、メモリ92上のプログラムを実行する。
クライアント1は、実行系サーバ2に対して、実行系サーバ2が管理するデータベースである実行系DB101に対してアクセスを要求する。
この要求するアクセスは、SQLを発行して前処理結果を取得する第1工程と、前処理結果を使用して実行系DB101に参照および更新を行う第2工程とに分かれる。以下、本実施形態では、第1工程とその効果を中心に説明する。
実行系サーバ2および待機系サーバ3は、障害対策としての冗長構成を採用する。待機系サーバ3は、実行系サーバ2に障害が発生したとき、実行系サーバ2の役割を代行することにより、障害が発生した実行系サーバ2の業務を引き継ぐ。
よって、実行系サーバ2および待機系サーバ3は、名称こそ異なるものの、同じサーバ装置が実行系サーバ2として動作する時間帯もあれば、待機系サーバ3として動作する時間帯もある。そのため、実行系サーバ2および待機系サーバ3は、同じ装置構成を採用している。
つまり、実行系サーバ2および待機系サーバ3は、符号の下2桁が同じ構成要素同士が同じ構成要素である。例えば、実行系DB101は、待機系DB201と対応する。
なお、同じ構成要素を有していても、各構成要素について、現在実行している系によって、休止している構成要素も存在する。例えば、サーバが実行系サーバ2として動作しているときには、分析予測部120は休止しているが、そのサーバが待機系サーバ3に系切替されたときには、分析予測部220として稼動を開始する。
実行系サーバ2および待機系サーバ3は、障害時に実行系サーバ2から待機系サーバ3に役割を円滑に引き継ぐため、実行系DB101と待機系DB201とは、同期処理を行う。以下のいずれかの同期処理により、実行系DB101と待機系DB201とでデータ内容が同一になるようにする。
例えば、同期処理の一例として、実行系サーバ2は、待機系サーバ3に、発行履歴データ111が示すSQLの処理を実行系DB101に適用することで、実行系DB101を更新し、その更新内容を差分形式のログとして送信する。待機系サーバ3は、受信した差分形式のログを待機系DB201に反映する。
または、同期処理の別の一例として、実行系サーバ2は、待機系サーバ3に、発行履歴データ111の更新内容を差分形式のログとして送信する。待機系サーバ3は、受信した差分形式のログを発行履歴データ211に反映する。そして、待機系サーバ3は、発行履歴データ211が示すSQLの処理を待機系DB201に適用することで、実行系DB101と待機系DB201とでデータ内容が同一になるようにする。
実行系前処理部102および待機系前処理部202は、SQLの前処理を行う。実行系前処理部102は、クライアント1が発行するSQLの前処理を行い、待機系前処理部202は、実行系前処理部102および分析予測部220から受信したSQLの前処理を行う。
実行系SQLプール103および待機系SQLプール203は、データベースを操作するコマンドである動的SQLの前処理結果を、対応づけて管理する。実行系SQLプール103および待機系SQLプール203は、それぞれプール管理ルール114およびプール管理ルール214に従い、前処理結果の格納および破棄を行う。
実行系サーバ2は、クライアント1が発行したSQL、および、発行した時刻を対応づけて組として、発行履歴データ111として保持する。
実行系サーバ2は、例えば、実行系DB101と待機系DB201との同期処理のタイミングで、発行履歴データ111を待機系サーバ3に送信する。待機系サーバ3は、受信した発行履歴データ111を自身の発行履歴データ211に書き込む。
なお、発行履歴データ111を送信するタイミングは、同期処理のタイミングに限らず、性能劣化が少ないタイミングであれば、いつでも送信し得る。
分析予測部220は、書き込まれた発行履歴データ211を分析し、今後クライアント1が発行するSQL、および、そのSQLを発行する確率を、発行予測リスト213として予測する。待機系サーバ3は、予測した発行予測リスト213を、実行系サーバ2の発行予測リスト113に送信する。
なお、発行予測リスト213を作成する装置として、待機系サーバ3を採用することにより、以下の効果を得ることができる。
まず、待機系サーバ3は冗長系システムの構成要素として、実行系サーバ2とともに既に導入されている装置である。よって、新たに装置を新設するよりも、導入コストを抑えることができる。
次に、待機系サーバ3は、実行系サーバ2に障害が発生する前には、実行系サーバ2との同期処理だけを実行すればよいので、比較的負荷が低い装置である。よって、予測演算を行う余力があり、発行予測リスト213を作成する装置として、適している。つまり、待機系サーバ3の余裕のある計算資源を使用できるため、計算コストが高い予測手法が使用でき、高い精度で予測ができる。
さらに、発行履歴データ111から発行履歴データ211への通信処理は、冗長系システムの基本機能であるデータ同期処理に使用されるとともに、発行予測リスト213を計算するための入力パラメータにも使用される。しかし、待機系サーバ3とは別の休眠装置が発行予測リスト213を作成すると、実行系サーバ2は、その休眠装置に対して新たに発行履歴データ111を送信する処理が発生してしまう。よって、待機系サーバ3を用いることで、通信処理を新たに発生させることを抑制できる。
実行系プール管理部110および待機系プール管理部210は、発行予測リスト113および発行予測リスト213から、プール管理ルール114およびプール管理ルール214を変更する。
プール管理ルール114およびプール管理ルール214は、実行系SQLプール103および待機系SQLプール203が格納するSQLの取捨選択を行うためのルールである。
Figure 2010066922
表1は、実行系SQLプール103の一例を示す表である。実行系SQLプール103は、SQL文と、そのSQL文に対して前処理が実行された結果である前処理結果と、を対応づけて管理する。
ここで、SQL文の先頭には、理解の手助けとして、SQL文を特定するためのIDを括弧書きで表記する。例えば、1行目の「SELECT * FROM T1」には、ID=1が割り当てられている。
なお、実行系SQLプール103は、表1で示した情報に限定されず、その他の情報(前処理の実行時刻など)をさらに対応づけて管理してもよい。
Figure 2010066922
表2は、待機系SQLプール203の一例を示す表である。待機系SQLプール203は、実行系SQLプール103と同じデータ構成である。しかし、待機系SQLプール203に格納されている各レコードは、実行系SQLプール103に格納されている各レコードとは、一致しないこともある。
Figure 2010066922
表3は、発行履歴データ111の一例を示す表である。発行履歴データ111は、SQL文およびその発行時刻を組にして保持する。
なお、実行系SQLプール103は、表3で示した情報に限定されず、その他の情報(SQL文を発行したクライアント1の装置IDなど)をさらに対応づけて管理してもよい。
また、発行履歴データ211には、8時台のSQLしか表記されていないが、9時台以降も存在し、その記載を省略する。
Figure 2010066922
表4は、発行確率遷移表112の一例を示す表である。発行確率遷移表112は、各SQL文について、時系列ごとの発行確率の実測値を示す。
つまり、発行履歴データ111から発行確率遷移表112の作成方法は、次の式の通りである。
発行確率遷移表112における所定SQL文のX時台の発行確率=(発行履歴データ111で所定SQL文がX時台に発行された回数)/(発行履歴データ111でX時台に発行されたSQL文の総数)
Figure 2010066922
表5は、時系列ごとの予測を行うときの、発行予測リスト113の一例を示す表である。発行予測リスト113は、各SQL文について、時系列ごとの発行確率の予測値を示す。
発行確率を時系列ごとに区切るデータ形式により、クライアント1が発行するSQLが周期的に変化する場合、予測精度を高くすることができる。
Figure 2010066922
表6は、時系列に依存しない予測を行うときの、発行予測リスト113の一例を示す表である。表5との違いは、発行確率を時系列ごとに区切らずに、1つのSQL文に対して1つの値とする点にある。
発行確率を時系列ごとに区切らないデータ形式により、クライアント1が発行するSQLが周期的に変化しない場合、表5と比べて発行予測リスト113のデータ量が少なくて済むために、計算量と通信量を節約することができる。
Figure 2010066922
表7は、時系列ごとに適用する、プール管理ルール114の一例を示す表である。プール管理ルール114は、SQL文ごとに、時系列ごとの管理ルールを示す。
管理ルールは、実行系SQLプール103にSQL文が格納されやすい順に、「必ず保持」、「LRUで管理」、「必ず廃棄」という値を取る。
「必ず保持」は、実行系SQLプール103に必ず保持(格納)されるという管理ルールである。
「LRUで管理」は、実行系SQLプール103に保持(格納)されるか否かは、他のSQL文との比較で決定される管理ルールである。LRU(Least Recently Used)とは、最近最も使われなかったものが、破棄されるというルールである。
「必ず廃棄」は、実行系SQLプール103に必ず保持(格納)されないという管理ルールである。
なお、発行予測リスト113からプール管理ルール114の作り方は、例えば、次の通りである。
0.3以上の確率(高確率)であれば「必ず保持」とし、
0.1以上0.2以下の確率であれば「LRUで管理」とし、
0.1未満の確率であれば「必ず廃棄」とする。
Figure 2010066922
表8は、時系列に依存せずに適用する、プール管理ルール114の一例を示す表である。表7と比較すると、SQL文ごとの管理ルールが時系列で区切られていない点が異なる。
図2は、第1実施形態の処理を示すフローチャートである。
S101において、クライアント1は、前処理のためのSQLを実行系サーバ2に送信する。
S201において、実行系前処理部102は、クライアント1から受信したSQLの前処理結果を、実行系SQLプール103から取得する。
S202において、実行系前処理部102は、S201でSQLの前処理結果が実行系SQLプール103に存在するか否かを判定する。S202の判定を満たすときにはS204へ、判定を満たさないときにはS203へ、それぞれ移行する。
S203において、実行系前処理部102は、クライアント1から受信したSQLに対して前処理を行う。
S204において、実行系前処理部102は、クライアント1にS201またはS203で取得した前処理結果を送信する。
S102において、クライアント1は実行系前処理部102から前処理結果を受信する。
S205において、実行系前処理部102は、S204で送信した前処理結果を、プール管理ルール114に従い、実行系SQLプール103に格納または破棄することで、実行系SQLプール103を更新する。
なお、プール管理ルール114の初期値はLRUであるのが一般的だが、本実施形態は、LRUに限定せず、ランダムでもFIFOでも適用可能である。
S206において、実行系サーバ2は、S201で受信したSQLと、その発行時刻とを対応づけて発行履歴データ111に追加し、その発行履歴データ111を分析予測部220に送信する。なお、S206の送信処理のタイミングは、性能劣化が少ないタイミングを見計らって送信することとしてもよい。性能劣化が少ないタイミングの一例として、実行系DB101および待機系DB201の同期処理のタイミングが挙げられる。
待機系サーバ3は、受信した発行履歴データ111を、自身の発行履歴データ211へと反映する。
S301において、分析予測部220は、S206で反映された発行履歴データ211を分析し、発行確率遷移表212を作成し、その発行確率遷移表212から発行予測リスト213を作成する。以下、発行予測リスト213の作成方法について、時系列ごとの発行予測リスト213(表5)、および、時系列に依存しない発行予測リスト213(表6)それぞれについて、具体的に説明する。
まず、S301において、時系列ごとの発行確率遷移表212(表4)から発行予測リスト213(表5)は、次のようにして作成される。
以下に、予測演算の一例として、SQL文「(1)SELECT * FROM T1」に対して、重回帰分析を使用した計算方法を説明する。
あるSQLが将来実行される確率を従属変数Yとし、過去の実行確率を順番に独立変数X1、X2、X3、X4として、重回帰分析を行う。
過去の実行確率は、例えば、14時台から17時台までの確率を独立変数に代入して、X1=0.35、X2=0.3、X3=0.1、X4=0.05とする。そして、重回帰分析は、以下の式で示される。
Y=-0.0814814814814813+1.2037037037037X1-X2+3.15796771448929E-17X3+1.2037037037037X4
この計算式に過去の実行確率を代入すると、Y=0.1となりこのSQL文が18時台に実行される確率は0.1であることが分かる。
また、過去の実行確率「X1=0.3、X2=0.1、X3=0.05、X4=0.1」を代入すると、Y=0.3となり、19時台にSELECT * FROM T1が実行される確率は0.3であることが分かる。
つまり、4回分のSQL発行確率を用いて、将来実行されるSQL発行確率が予測できる。その他のSQLにも同様に重回帰分析を適用することで、発行予測リスト213(表5)が作成できる。
一方、S301において、時系列に依存しない発行予測リスト213(表6)は、次のようにして作成される。
発行履歴データ211(表3)には、SQL文ごとにその発行時刻が記述されている。そこで、発行履歴データ211のSQL文を種別ごと(IDごと)に1つ選択する。選択したSQL文に該当するレコードを発行履歴データ211から検索し、検索されたレコード数を取得する。取得したレコード数を発行履歴データ211の全レコード数で除算することで、選択したSQL文の発行確率を求める。
S207において、実行系サーバ2は、S301で作成した発行予測リスト213を受信し、発行予測リスト113に反映する。そして、実行系プール管理部110は、発行予測リスト113にもとづいてプール管理ルール114を変更する。また、変更方法としては、発行確率の高いSQLの前処理結果を廃棄対象から外し、発行確率の低いSQLの前処理結果を格納対象から外す変更方法が一例として挙げられるが、発行予測リスト213にもとづいて今後のSQLプールのヒット率を上げるという条件さえを満たせば、この方法に限定しない。この変更により、データベース管理システムの処理性能が向上する。
S302において、待機系プール管理部210は、S301で作成した発行予測リスト213にもとづいて、プール管理ルール214を変更し、発行確率が高いSQL(高確率SQL)を待機系前処理部202に渡す。プール管理ルール214の変更方法も、発行予測リスト213にもとづいて今後のSQLプールのヒット率を上げるという条件さえを満たせば、特定の方法に限定しない。
S303において、待機系前処理部202は、受け取った高確率SQLの前処理結果が待機系SQLプール203に存在しない場合、高確率SQLの前処理を行う。
S304において、待機系SQLプール203は、高確率SQLの前処理結果をプール管理ルール214に従い、待機系SQLプール203に格納する。これにより、前処理結果が待機系SQLプール203にも存在することになり、障害時に実行系サーバ2から待機系サーバ3に役割を円滑に引き継ぐ際、引き継いだ待機系サーバ3が前処理を行う可能性が少なくなるため、データベース管理システムの処理性能が向上する。
以下、第2実施形態によるデータベース管理システムについて、図面を参照して説明する。
第2実施形態の構成は、第1実施形態の構成(図1参照)と同じである。
図3は、第2実施形態の処理を示すフローチャートである。第1実施形態の処理(図2)と比較すると、図3ではS208が追加されている。
S208において、実行系サーバ2は、S303で作成される高確率SQLの前処理結果を受信し、実行系SQLプール103に受信した前処理結果を格納する。これにより、受信によるオーバヘッドはあるものの、高確率SQLの前処理を実行系前処理部102が実行する(S203)ことを省略できるので、実行系サーバ2の処理負荷を軽減できる。
以下、第3実施形態によるデータベース管理システムについて、図面を参照して説明する。
第3実施形態の構成は、第1実施形態の構成(図1参照)と同じである。
図4は、第3実施形態の処理を示すフローチャートである。第1実施形態の処理(図2)と比較すると、S203の処理がS209に変更され、変更され、S305の処理が追加されている。
S209において、実行系前処理部102は、待機系前処理部202に対して、S201で受信したSQLを送信し、そのSQLの前処理を依頼する。
S305において、待機系前処理部202は、S209で受信したSQLの前処理を行い、その前処理結果を実行系前処理部102に送信する。これにより、送信受信のオーバヘッドがあるものの実行系サーバ2で前処理を行う必要がなくなる。
以下、第4実施形態によるデータベース管理システムについて、図面を参照して説明する。
図5は、第4実施形態のデータベース管理システムを示す構成図である。第4実施形態の構成は、第1実施形態の構成(図1参照)と比較すると、実行待ちキュー104が追加されている。
実行待ちキュー104は、クライアント1からのSQL(S101で受信)を保持するキューである。実行系前処理部102は、実行待ちキュー104が保持するSQLをFIFO(First In, First Out)の順番で前処理を行う。
さらに、実行系サーバ2は、実行待ちキュー104内の処理待ちのSQLのリストから、最近登録された方から1つ、もしくは、複数個のSQLを待機系サーバ3に送信し、待機系前処理部202に対して前処理を依頼する。
図6は、第4実施形態の処理を示すフローチャートである。第1実施形態の処理(図2)と比較すると、S201の処理がS210に変更され、S306の処理が追加されている。
S210において、実行系サーバ2は、実行待ちキュー104に保持されているSQLをFIFOの順に(キュー先頭のSQLから順に)実行系前処理部102に渡す。また、実行系サーバ2は、実行待ちキュー104に最近登録された方から1つ、もしくは、複数個のSQL(キュー末尾のSQL)を待機系前処理部202に送信し、前処理を依頼する。
S306において、待機系前処理部202は、受信したSQLに対して、待機系前処理部202が前処理を行う、または、待機系SQLプール203から前処理結果を読み取ることにより、前処理結果を取得し、その前処理結果を実行系サーバ2に返信する。
以上説明したように、本発明の各実施形態は、待機系サーバ3の分析予測部220が、クライアント1が発行した発行履歴データ111をもとに発行予測リスト213を作成し、実行系サーバ2の実行系SQLプール103に適用することを特徴とする。
これにより、待機系サーバ3の計算資源を有効活用することで、実行系サーバ2が予測演算によって止められることなく、プール管理ルール114の最適化を行い、実行系SQLプール103のキャッシュヒット率を高めることができる。
よって、データベース管理システム全体の処理性能を向上することができる。
さらに、各実施形態に特有の追加的効果を説明するため、図7〜図8を参照して、各実施形態の通信処理の一例を説明する。
図7(a)は、第1実施形態における通信処理を示すシーケンス図である。
実行系サーバ2は、クライアント1からSQLが送信(S101)されると、そのSQLの前処理結果を取得し、クライアント1へと送信(S204)する。
実行系サーバ2は、S101のSQLを反映した発行履歴データ111を待機系サーバ3に送信(S206)し、待機系サーバ3に作成させた発行予測リスト213が送信(S301)されると、自身の発行予測リスト113へと反映する。
第1実施形態によれば、実行系サーバ2と待機系サーバ3との間で前処理結果そのものの通信が行われないため、特に、「1つのSQLあたりの前処理の計算量」が「実行系サーバ2が待機系サーバ3から1つの前処理結果を受信するオーバヘッド」よりも小さい状況において、高い処理性能を発揮することができる。
図7(b)は、第2実施形態における通信処理を示すシーケンス図である。
実行系サーバ2は、クライアント1から第1SQLが送信(S101)されると、そのSQLの前処理結果を取得し、クライアント1へと送信(S204)する。
実行系サーバ2は、S101の第1SQLを反映した発行履歴データ111を待機系サーバ3に送信(S206)し、待機系サーバ3に作成させた発行予測リスト213が送信(S301)されると、自身の発行予測リスト113へと反映する。
さらに、実行系サーバ2は、高確率SQLである第2SQLの前処理結果(第2前処理結果)が送信(S303)されると、自身の実行系SQLプール103へと反映する。
その後、実行系サーバ2は、クライアント1から第2SQLが送信(S101)されると、実行系SQLプール103から第2前処理結果を取得し、クライアント1へと送信(S204)する。
第2実施形態によれば、実行系サーバ2が高確率SQLの前処理結果を待機系サーバ3から取得するため、特に、「1つのSQLあたりの前処理の計算量」が「実行系サーバ2が待機系サーバ3から1つの前処理結果を受信するオーバヘッド」よりも大きい状況において、高い処理性能を発揮することができる。
図8(a)は、第3実施形態における通信処理を示すシーケンス図である。
実行系サーバ2は、クライアント1からSQLが送信(S101)されると、そのSQLの前処理を依頼し(S209)、その依頼結果としての前処理結果の送信(S305)を受ける。そして、実行系サーバ2は、受信した前処理結果を、クライアント1へと送信(S204)する。
実行系サーバ2は、S101のSQLを反映した発行履歴データ111を待機系サーバ3に送信(S206)し、待機系サーバ3に作成させた発行予測リスト213が送信(S301)されると、自身の発行予測リスト113へと反映する。
第3実施形態によれば、実行系サーバ2がSQLの前処理を待機系サーバ3に依頼するため、特に、「1つのSQLあたりの前処理の計算量」が「SQLの依頼送信処理、およびその返信としての前処理結果の受信処理のオーバヘッド」よりも大きい状況において、高い処理性能を発揮することができる。
図8(b)は、第4実施形態における通信処理を示すシーケンス図である。
実行系サーバ2は、クライアント1から第1SQLと、第2SQLとが送信(S101)されると、送信順に実行待ちキュー104に格納する。
実行系サーバ2は、実行待ちキュー104の末尾の第2SQLを読み取り、待機系サーバ3へと前処理を依頼し、その前処理結果である第2前処理結果の送信(S306)を受ける。
実行系サーバ2は、実行待ちキュー104の先頭の第1SQLを読み取り、その前処理結果である第1前処理結果を取得し、クライアント1に送信(S204)する。
実行系サーバ2は、S101の各SQLを反映した発行履歴データ111を待機系サーバ3に送信(S206)し、待機系サーバ3に作成させた発行予測リスト213が送信(S301)されると、自身の発行予測リスト113へと反映する。
その後、実行系サーバ2は、実行待ちキュー104において第2SQLが先頭に送り出されると、実行系SQLプール103から第2前処理結果を取得し、クライアント1へと送信(S204)する。
第4実施形態によれば、実行待ちキュー104に最近登録されたSQLは待機系前処理部202で前処理を行い、その前処理結果を実行系SQLプール103に格納されても、まだ実行待ちキュー104にある可能性がある。その場合、実行系前処理部102で前処理しなくて済むため、処理性能は向上する。つまり、実行待ちキュー104内に処理待ちのSQLが多く格納されている状況において、高い処理性能を発揮することができる。
なお、図7〜図8で説明した各通信処理の順番について、クライアントがSQLを送信した後に、そのSQLの前処理結果を受信するという順序さえ満たせば、他処理の順番は適宜変更してもよい。
さらに、SQLの送信回数と、SQLの前処理結果の受信回数とは、同じ回数としてもよいし、異なった回数としてもよい。
本発明の第1実施形態に関するデータベース管理システムを示す構成図である。 本発明の第1実施形態に関する処理を示すフローチャートである。 本発明の第2実施形態に関する処理を示すフローチャートである。 本発明の第3実施形態に関する処理を示すフローチャートである。 本発明の第4実施形態に関するデータベース管理システムを示す構成図である。 本発明の第4実施形態に関する処理を示すフローチャートである。 本発明の第1,2実施形態に関する通信処理を示すシーケンス図である。 本発明の第3,4実施形態に関する通信処理を示すシーケンス図である。
符号の説明
1 クライアント
2 実行系サーバ
3 待機系サーバ
9 ネットワーク
20 通信インターフェース
91 CPU
92 メモリ
101 実行系DB
102 実行系前処理部
103 実行系SQLプール
104 実行待ちキュー
110 実行系プール管理部
111 発行履歴データ
112 発行確率遷移表
113 発行予測リスト
114 プール管理ルール
120 分析予測部
201 待機系DB
202 待機系前処理部
203 待機系SQLプール
204 実行待ちキュー
210 待機系プール管理部
211 発行履歴データ
212 発行確率遷移表
213 発行予測リスト
214 プール管理ルール
220 分析予測部

Claims (11)

  1. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムによるデータベース管理方法であって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合その前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理方法。
  2. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムによるデータベース管理方法であって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合その前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果、および、前記待機系前処理部から受信した前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系SQLプールに送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系SQLプールに送信し、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理方法。
  3. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムによるデータベース管理方法であって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合、前記前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合、そのSQLを前記待機系前処理部に送信し、前記待機系前処理部から受信した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記実行系前処理部から受信したSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系前処理部に送信し、前記実行系前処理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系前処理部に送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理方法。
  4. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムによるデータベース管理方法であって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、SQL発行履歴保持部、および、SQL実行待ちキューを有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記SQL実行待ちキューからSQLを取得し、そのSQLの前処理結果が前記実行系SQLプールに存在する場合、前記前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合、そのSQLに対して前処理を行い、前記前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記SQL実行待ちキューは、前記クライアントが発行したSQLを実行順に保持し、実行が最後の方から1つもしくは複数のSQLを前記待機系前処理部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記SQL実行待ちキューから受信したSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系SQLプールに送信し、前記SQL実行待ちキューから受信したSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系SQLプールに送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理方法。
  5. 前記SQL発行予測リストは、時系列、ならびに、時系列ごとに前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLを発行する確率を、保持することを特徴とする
    請求項1ないし請求項4のいずれか1項に記載に記載のデータベース管理方法。
  6. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムであって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合その前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理システム。
  7. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムであって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合その前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果、および、前記待機系前処理部から受信した前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系SQLプールに送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系SQLプールに送信し、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理システム。
  8. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムであって、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合、前記前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合、そのSQLを前記待機系前処理部に送信し、前記待機系前処理部から受信した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記実行系前処理部から受信したSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系前処理部に送信し、前記実行系前処理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系前処理部に送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理システム。
  9. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムを実現させるためのデータベース管理プログラムであって、
    前記データベース管理プログラムは、前記実行系サーバおよび前記待機系サーバにそれぞれ読み取られ、実行されることで、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合その前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理プログラム。
  10. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムを実現させるためのデータベース管理プログラムであって、
    前記データベース管理プログラムは、前記実行系サーバおよび前記待機系サーバにそれぞれ読み取られ、実行されることで、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合その前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果、および、前記待機系前処理部から受信した前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系SQLプールに送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記実行系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系SQLプールに送信し、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理プログラム。
  11. クライアントからの要求に従ってデータを更新する実行系サーバと、前記実行系サーバに障害が発生したときにその実行系サーバの処理を代行する待機系サーバとを組として冗長構成とするデータベース管理システムを実現させるためのデータベース管理プログラムであって、
    前記データベース管理プログラムは、前記実行系サーバおよび前記待機系サーバにそれぞれ読み取られ、実行されることで、
    前記実行系サーバは、実行系DB、実行系前処理部、実行系SQLプール、実行系SQLプール管理部、実行系SQLプール管理ルール、および、SQL発行履歴保持部を有し、
    前記待機系サーバは、待機系DB、待機系前処理部、待機系SQLプール、待機系SQLプール管理部、待機系SQLプール管理ルール、および、分析予測部を有し、
    前記実行系前処理部は、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在する場合、前記前処理結果を前記クライアントに渡し、前記クライアントが発行したSQLの前処理結果が前記実行系SQLプールに存在しない場合、そのSQLを前記待機系前処理部に送信し、前記待機系前処理部から受信した前処理結果を前記クライアントに渡し、
    前記実行系SQLプールは、前記実行系前処理部が前記SQLを前処理して生成する前処理結果を前記実行系SQLプール管理ルールに従い前記実行系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行い、
    前記SQL発行履歴保持部は、前記クライアントが発行したSQLの履歴を保持し前記分析予測部に送信し、
    前記分析予測部は、前記SQL発行履歴保持部から受信したSQL発行履歴を分析し、前記クライアントが今後発行するSQL、および、前記クライアントがそのSQLが発行する確率を予測し、その結果をSQL発行予測リストにまとめ、実行系SQLプール管理部、および、待機系SQLプール管理部に、前記SQL発行予測リストを送信し、
    前記実行系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記実行系SQLプール管理ルールを変更し、
    前記待機系SQLプール管理部は、前記分析予測部から受信したSQL発行予測リストにもとづいて、前記待機系SQLプール管理ルールを変更し、前記クライアントが発行する確率が高いSQLを前記待機系前処理部に渡し、
    前記待機系前処理部は、前記実行系前処理部から受信したSQLの前処理結果が前記待機系SQLプールに存在する場合その前処理結果を前記実行系前処理部に送信し、前記実行系前処理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い生成した前処理結果を前記実行系前処理部に送信し、前記待機系SQLプール管理部から受け取ったSQLの前処理結果が前記待機系SQLプールに存在しない場合そのSQLに対して前処理を行い、
    前記待機系SQLプールは、前記待機系前処理部が前記SQLを前処理して生成する前処理結果を、前記待機系SQLプール管理ルールに従い前記待機系SQLプール内に格納し、かつ、前記実行系SQLプール管理ルールに従い実行系SQLプール内から前処理結果の破棄を行うこと、を特徴とする
    データベース管理プログラム。
JP2008231402A 2008-09-09 2008-09-09 データベース管理方法、データベース管理プログラム、および、データベース管理システム Withdrawn JP2010066922A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008231402A JP2010066922A (ja) 2008-09-09 2008-09-09 データベース管理方法、データベース管理プログラム、および、データベース管理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008231402A JP2010066922A (ja) 2008-09-09 2008-09-09 データベース管理方法、データベース管理プログラム、および、データベース管理システム

Publications (1)

Publication Number Publication Date
JP2010066922A true JP2010066922A (ja) 2010-03-25

Family

ID=42192469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008231402A Withdrawn JP2010066922A (ja) 2008-09-09 2008-09-09 データベース管理方法、データベース管理プログラム、および、データベース管理システム

Country Status (1)

Country Link
JP (1) JP2010066922A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018526746A (ja) * 2015-09-08 2018-09-13 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited データベーストランザクションを最適化するための方法および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018526746A (ja) * 2015-09-08 2018-09-13 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited データベーストランザクションを最適化するための方法および装置
US11500869B2 (en) 2015-09-08 2022-11-15 Alibaba Group Holding Limited Method and apparatus for optimizing database transactions

Similar Documents

Publication Publication Date Title
US9350826B2 (en) Pre-fetching data
US9773011B2 (en) On-demand caching in a WAN separated distributed file system or clustered file system cache
US9141648B1 (en) Management of database blocks
US9798745B2 (en) Methods, devices and systems for caching data items
CN110609796B (zh) 用于存储系统中预取的方法、设备和计算机程序产品
JP2010108073A (ja) ストリームデータ処理方法、及びシステム
WO2018120171A1 (zh) 一种用于存储过程的执行方法、设备以及系统
US20150142845A1 (en) Smart database caching
US20170329740A1 (en) Distributed client based cache for keys using demand fault invalidation
US8006238B2 (en) Workload partitioning in a parallel system with hetergeneous alignment constraints
US11841876B2 (en) Managing transaction size during database replication
US11561796B2 (en) Linked miss-to-miss instruction prefetcher
US20180267831A1 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
US8566521B2 (en) Implementing cache offloading
JP6189266B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
US10621163B2 (en) Tracking and reusing function results
JP2010066922A (ja) データベース管理方法、データベース管理プログラム、および、データベース管理システム
JP2010152435A (ja) 情報処理装置及び情報処理方法及びプログラム
CN115686769A (zh) 根据cxl协议处理一致存储器事务的系统、装置和方法
US11379268B1 (en) Affinity-based routing and execution for workflow service
CN109298884B (zh) 一种通用字符操作加速处理硬件装置及控制方法
US10747627B2 (en) Method and technique of achieving extraordinarily high insert throughput
JP4768054B2 (ja) キャッシュ制御方法
US20240028519A1 (en) Data processing method, electronic device and computer program product
JP6323109B2 (ja) 文書管理システム、キーバリューストア装置、文書管理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100303

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20110704