JP4486384B6 - Db連携プリフェッチシステム - Google Patents
Db連携プリフェッチシステム Download PDFInfo
- Publication number
- JP4486384B6 JP4486384B6 JP2004068347A JP2004068347A JP4486384B6 JP 4486384 B6 JP4486384 B6 JP 4486384B6 JP 2004068347 A JP2004068347 A JP 2004068347A JP 2004068347 A JP2004068347 A JP 2004068347A JP 4486384 B6 JP4486384 B6 JP 4486384B6
- Authority
- JP
- Japan
- Prior art keywords
- data
- computer
- information
- storage device
- database
- 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.)
- Expired - Fee Related
Links
- 239000000284 extract Substances 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 34
- 238000000034 method Methods 0.000 description 33
- 230000005540 biological transmission Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007958 sleep Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Description
本発明は、データベース(以下「DB」)を運用する計算機システム(以下「DBシステム」)に関する。
現在、DBを基盤とする多くのアプリケーションが存在し、DBに関する一連の処理・管理を行うデータベースマネージメントシステム(以下「DBMS」)は極めて重要なものとなっている。DBの特徴の一つは、膨大な量のデータを扱うことである。そのため、DBMSが稼動するDBシステムの多くにおいては、DBMSが動作する計算機に大容量のディスク装置を持つストレージ装置を接続し、ストレージ装置上にDBのデータを記憶するシステム形態が一般的である。
DBシステム等に使用される上記のストレージ装置へのデータの入出力処理を高速化する方法として、ストレージ装置に揮発性の記憶媒体であるキャッシュメモリを設ける方法がある。この方法では、ストレージ装置に入出力されるデータをストレージ装置がキャッシュメモリに一時的に格納する。一般的に揮発性のキャッシュメモリの方がディスク装置よりも応答速度が速い。したがって、ディスク装置から読み出したデータをそのキャッシュメモリに保持しておき、同じデータへのアクセスの際はキャッシュメモリのデータを使用することストレージ装置の応答速度が向上する。
さらに、ストレージ装置(又は計算機)が一連の連続したデータアクセス(以下「シーケンシャルアクセス」とも言う)を検出することでこの先読み出されるデータを予測し、キャッシュメモリ上に予測したデータを読み出す(以下「プリフェッチ」とも言う)しておく技術もある。
非特許文献1では、ストレージ装置の高機能化によるDBMSの性能向上について、リレーショナルデータベース管理システム(RDBMS)を用いたDBを例にして論じている。ストレージ装置に対しアプリケーションレベルの知識としてRDBMSにおける問い合わせ処理の実行プランを与えた場合、ストレージ装置は、RDBMSのある表に対する索引を読んだ後、その表のデータを記憶するどのブロックにアクセスすべきなのかが判断できるようになる。そこで、DBMSが索引を連続的にアクセスして、その索引と対応する表のデータを保持するブロック群をDBMSを実行する計算機が把握し、それらに対するアクセスを効果的にスケジューリングすることによりデータの総アクセス時間を短縮することが可能となる。
またこの処理はDBMSが実行されている計算機とは独立実行可能であり、計算機からの命令を待つ必要がない。また、データが複数台のストレージ装置に分散配置されている場合にはそれぞれのストレージ装置を並列にアクセス可能であり、よりDBMSの処理実行時間の短縮が期待できる。
又、特許文献1では、ストレージ装置上に記憶されているデータベースのデータへのアクセスを高速化するため、データベースのデータを記憶しているストレージ装置が、DBMSからプリフェッチに必要となるDBスキーマの位置情報やクエリの実行情報等を取得し、ストレージ装置内でプリフェッチを実行する技術を開示している。
従来技術で記したキャッシュメモリの活用やデータのプリフェッチはストレージ装置内に特化したものである。また、プリフェッチに関しては、シーケンシャルアクセスについては効果があるものの、不連続なデータアクセスに関してはあまり効果がない。
又、非特許文献1記載の従来技術は、ストレージ装置に対しアプリケーションレベルの知識としてRDBMSにおける問い合わせ処理実行時の実行プランが与えられた後に、どのようなデータを用いてどのような処理を行う必要があるか十分に明確化されていない。
更に特許文献1記載の技術は、ストレージ装置がDBMSからプリフェッチに必要となるDBスキーマの位置情報やクエリの実行情報等を取得し、ストレージ装置内でプリフェッチを実行する。しかし、本技術を実装する場合、ストレージ装置内の改良を行う必要がある。更に、既存のDBシステムに適用する場合、既存のストレージ装置を、本技術を実装したストレージ装置に置き換え、DBのデータを移行する必要があり、この間通常業務に支障をきたす可能性が高い。更に、ストレージ装置(又は計算機)においては、通常のデータの読み出し処理に加え、新たにプリフェッチに関する処理を行わないといけないが、これはストレージ装置等に大きな負荷を与え、アクセス時間の短縮の効果が阻害される可能性がある。
本発明の目的は、既存のDBシステムに大きな変更を加えることなく、ストレージ装置上に記憶されたDBデータのアクセスに要する時間を短縮することである。
上記目的を達成するため、本発明は、DBMSが稼動するDBサーバと、DBのデータを記憶するストレージ装置に、プリフェッチを指示する計算機(以下、プリフェッチサーバ)を接続したシステム構成とする。
上記プリフェッチサーバは、DBMSが管理するDBスキーマのストレージ装置上の記憶位置に関する情報と、DBMSが実行するDB処理に関する情報と、DBMSがDB処理を実行する際に行われるDBのデータへのアクセスに関する情報をDBサーバから取得し、これらの情報に基づいて、この先読み出しが行われるデータを予測し、該当するデータのプリフェッチをストレージ装置に指示する。プリフェッチの指示を受けたストレージ装置は、指定されたデータをキャッシュメモリ上に読み出す。
本発明によれば、DBサーバ、ストレージ装置からなるDBシステムにおいて、既存のDBシステムに大きな変更を加えることなく、ストレージ装置に記憶されたDBデータのアクセスに要する時間を短縮することが可能となる。
以下、本発明の実施の形態を説明する。尚、これにより本発明が限定されるものではない。
図1は、本発明を適用したシステムの第一の実施形態の例を示した図である。
システムは、DBサーバ100、プリフェッチサーバ130、ストレージ装置150、DBクライアント170、DBサーバ100、プリフェッチサーバ130及びDBクライアント170を相互に接続するネットワーク190、並びにDBサーバ100、プリフェッチサーバ130及びストレージ装置150を相互に接続するネットワーク192を有する。
図1は、本発明を適用したシステムの第一の実施形態の例を示した図である。
システムは、DBサーバ100、プリフェッチサーバ130、ストレージ装置150、DBクライアント170、DBサーバ100、プリフェッチサーバ130及びDBクライアント170を相互に接続するネットワーク190、並びにDBサーバ100、プリフェッチサーバ130及びストレージ装置150を相互に接続するネットワーク192を有する。
DBサーバ100は、ストレージ装置150に格納されているDBを制御するDBMSを実行する。プリフェッチサーバ130は、DBサーバ100から取得した情報に基づいて、DBサーバ100が今後アクセスするデータを予測する。そして、プリフェッチサーバ130は、予測の結果に基づいて、データの先読み(以下「プリフェッチ」とも言う)の指示をストレージ装置150に送信する。
ストレージ装置150は、DB等、DBサーバ100が使用するデータを格納する。DBクライアント170は、ユーザから受け付けたクエリの実行をDBサーバ100に要求する。ネットワーク190は、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)等のネットワークである。一方、ネットワーク192はLANでも、ファイバチャネル等で構成されるネットワーク(ストレージエリアネットワーク:SAN)でも良い。
又、ネットワーク190とネットワーク192は同一のネットワークでも良い。尚、図1において、DBサーバ100、ストレージ装置150、DBクライアント170はそれぞれ1台のみ記載しているが、複数台でも良い。
DBサーバ100は一般的な計算機であり、ネットワーク190とのインタフェースであるI/F(A)102、CPU(制御プロセッサ)104、入出力装置106、メモリ108、ネットワーク192とのインタフェースであるI/F(B)120を有する。メモリ108には、オペレーティングシステム(以下「OS」)110、DBMS114、DB情報取得送信プログラム118が格納される。
OS110、DBMS114及びDB情報取得送信プログラム118は、CPU104によって実行される。OS110は、ローデバイスとストレージ装置150上の論理的な記憶領域を対応付けるローデバイス情報112を保持する。尚、ローデバイスとは、OSで管理する論理的な記憶装置である。DBMS114は、DBの運用管理に必要となるDB管理情報116を保持する。
プリフェッチサーバ130はDBサーバ100と同じく一般的な計算機であり、ネットワーク190とのインタフェースであるI/F(A)132、CPU(制御プロセッサ)134、入出力装置136、メモリ138、ネットワーク192とのインタフェースであるI/F(B)146を有する。
メモリ138には、OS140、プリフェッチプログラム142が格納される。OS140及びプリフェッチプログラム142は、CPU134によって実行される。OS140は、DBサーバ100のローデバイス情報112と同一の情報を保持する。具体的には、システム管理者等DBサーバ100のローデバイス情報112の内容をプリフェッチサーバ130に入力したり、DBサーバ100がローデバイス情報112の内容をプリフェッチサーバ130に自動的に送信したりする。プリフェッチプログラム142は、プリフェッチ処理に必要となるプリフェッチ管理情報144を保持する。
ストレージ装置150は、ネットワーク192とのインタフェースであるI/F152、CPU(制御プロセッサ)154、メモリ156、キャッシュメモリ162、ディスク164を有する。メモリ156には、ストレージ装置150を制御する制御プログラム158が格納される。制御プログラム158は、CPU154によって実行される。又制御プログラムは、ストレージ装置150の論理的な記憶領域と、ディスク164が有する物理的な記憶領域を対応付ける記憶領域情報160を保持する。尚、ディスク164は記憶媒体であり、ハードディスクドライブでも光ディスクでも良い。また、ストレージ装置150は、複数のディスクをRAID構成にしていても良い。
DBクライアント170は、DBサーバ100やプリフェッチサーバ130と同じく一般的な計算機であり、CPU(制御プロセッサ)172、入出力装置174、メモリ176、ネットワーク190とのインタフェースであるI/F182を有する。また、メモリ176には、OS178、DBフロントエンドプログラム180が格納される。OS178、DBフロントエンドプログラム180は、CPU172によって実行される。
尚、上述した各種プログラムは、可搬記憶媒体あるいはネットワークを介して各装置にインストールされる。
図2は、ストレージ装置150の制御プログラム158が保持する記憶領域情報160の構成例を示した図である。
記憶領域情報160は、ストレージ装置150が有する論理的な記憶領域(以下「論理ユニット」)と、実際にデータが記憶される物理的な記憶領域を対応付ける情報である。記憶領域情報160は、論理ユニット毎に対応するエントリを有する。各エントリは、論理ユニットを識別するための論理ユニット番号を登録するフィールド200、論理ユニット内における論理ブロックの番号(以下「論理ブロックアドレス」)を登録するフィールド202、論理ブロックと対応する物理ブロックが存在するディスクを識別するための物理ディスク番号を登録するフィールド204及び論理ブロックと対応する物理ブロックの番号(以下「物理ブロックアドレス」)を登録するフィールド206を有する。
尚、ブロックとは、記憶領域を扱う際の単位を示すものであり、一般的に512KBであることが多い。また、論理ブロックは物理ブロックと一対一で対応している必要があるが、全ての論理ブロックが同一のディスク上にある必要はない。ストレージ装置150は、DBサーバ100やプリフェッチサーバ130から論理ユニット及び論理ブロックアドレスによるアクセスを受け付ける。そして、ストレージ装置150は、論理ユニット及び論理ブロックに対応する物理ブロックの物理ディスク番号と物理ブロックアドレスを記憶領域情報160から割り出し、実際にアクセスを行う。
図3は、DBサーバ100のOS110及びプリフェッチサーバ130のOS140が保持するローデバイス情報112の構成例を示した図である。
ローデバイス情報112は、OS110が持つローデバイスと、そのローデバイスに割り当てられたストレージ装置150上の記憶領域を対応付ける情報である。ローデバイス情報112は、ローデバイス毎に対応するエントリを有する。各エントリは、ローデバイスのファイル名を登録するフィールド300、ローデバイスに対して割り当てられた記憶領域が存在するストレージ装置の装置アドレスを登録するフィールド302、割り当てられた記憶領域が存在する論理ユニットの論理ユニット番号を登録するフィールド304、割り当てられた記憶領域の論理ユニット上での先頭論理ブロックアドレスを登録するフィールド306及び割り当てられた記憶領域の論理ブロック数を登録するフィールド308を有する。
尚、本実施の形態において、DBサーバ100とプリフェッチサーバ130は、同一のストレージ装置上の記憶領域にアクセスする必要があるため、DBサーバ100のOS110及びプリフェッチサーバ130のOS140は、それぞれ内容も全て同一のローデバイス情報112を有する。
図4(a)は、DBMS114が保持するDB管理情報116の構成例を示した図である。尚、DB管理情報116は、DBの初期設定時に、管理者等によって設定される。
DB管理情報116は、DBシステムファイルの設定情報であるDBシステムファイル情報400、データ領域の設定情報であるデータ領域情報420、テーブルやインデックスといったDBスキーマの設定情報であるDBスキーマ情報440、インデックスの設定情報であるインデックス情報460を有する。
図4(b)は、DBシステムファイル情報400の構成例を示した図である。
DBシステムファイル情報400は、DBシステムファイルと、前述のローデバイスを対応付ける情報である。DBシステムファイル情報400は、DBシステムファイル毎にエントリを有する。各エントリは、DBシステムファイルのファイル名を登録するフィールド402、DBシステムファイルが登録されるローデバイスのファイル名を登録するフィールド404を有する。
尚、DBシステムファイルは、ローデバイスに作られる一つの大きなファイルである。DBMS114は、このDBシステムファイルにDBのデータを書き込むことでDBを構築する。また、DBシステムファイルに書き込まれたDBのデータについて、OS110が前述のローデバイス情報112から実際にデータを書き込むストレージ装置150の論理的な記憶領域を割り出す。そして割り出した情報を元に、OS110がデータの書き込み命令をストレージ装置150に発行する。
図4(c)は、データ領域情報420の構成例を示した図である。
データ領域情報420は、DBMS114が管理するデータ領域の設定情報である。データ領域情報420は、データ領域毎にエントリを有する。各エントリは、データ領域を識別するためのデータ領域IDを登録するフィールド422、データ領域の名前を登録するフィールド424、データ領域が作られるDBシステムファイルのファイル名を登録するフィールド426及びデータ領域に割り当てた領域サイズを登録するフィールド428を有する。
データ領域情報420は、DBMS114が管理するデータ領域の設定情報である。データ領域情報420は、データ領域毎にエントリを有する。各エントリは、データ領域を識別するためのデータ領域IDを登録するフィールド422、データ領域の名前を登録するフィールド424、データ領域が作られるDBシステムファイルのファイル名を登録するフィールド426及びデータ領域に割り当てた領域サイズを登録するフィールド428を有する。
尚、データ領域とは、DBのデータを記憶するデータ領域であり、DBシステムファイル上に作成される。
図5(a)は、DBスキーマ情報440の構成例を示した図である。
DBスキーマ情報440は、DBMS114が管理する表(テーブル)や索引(インデックス)といったDBスキーマに関する設定情報である。DBスキーマ情報440は、DBスキーマ毎にエントリを有する。各エントリは、DBスキーマを識別するためのDBスキーマIDを登録するフィールド500、DBスキーマの名前を登録するフィールド502、DBスキーマの種別を登録するフィールド504、DBスキーマが書き込まれるデータ領域を識別するためのデータ領域IDを登録するフィールド506、DBスキーマのサイズを登録するフィールド508及びDBスキーマが書き込まれるデータ領域上のオフセットを登録するフィールド510を有する。
DBスキーマ情報440は、DBMS114が管理する表(テーブル)や索引(インデックス)といったDBスキーマに関する設定情報である。DBスキーマ情報440は、DBスキーマ毎にエントリを有する。各エントリは、DBスキーマを識別するためのDBスキーマIDを登録するフィールド500、DBスキーマの名前を登録するフィールド502、DBスキーマの種別を登録するフィールド504、DBスキーマが書き込まれるデータ領域を識別するためのデータ領域IDを登録するフィールド506、DBスキーマのサイズを登録するフィールド508及びDBスキーマが書き込まれるデータ領域上のオフセットを登録するフィールド510を有する。
図5(b)は、インデックス情報460の構成例を示した図である。
インデックス情報460は、DBスキーマのうちインデックスに関する設定情報である。インデックス情報460は、インデックス毎にエントリを有する。各エントリは、インデックスを識別するためのDBスキーマIDを登録するフィールド520、インデックスのDBスキーマ名を登録するフィールド522、インデックスの種別を登録するフィールド524及びインデックスと対応するテーブルを識別するためのDBスキーマIDを登録するフィールド526を有する。
インデックス情報460は、DBスキーマのうちインデックスに関する設定情報である。インデックス情報460は、インデックス毎にエントリを有する。各エントリは、インデックスを識別するためのDBスキーマIDを登録するフィールド520、インデックスのDBスキーマ名を登録するフィールド522、インデックスの種別を登録するフィールド524及びインデックスと対応するテーブルを識別するためのDBスキーマIDを登録するフィールド526を有する。
以下、本実施形態におけるシステムの挙動について簡単に説明する。
DBサーバ100は、自身でDBMS114を起動した際あるいはDBの構成を変更した際、ストレージ装置150に格納されているDBの構成、特にDBスキーマの格納場所を示す情報(DBスキーマ位置情報)をプリフェッチサーバ130に送信する。
DBサーバ100は、自身でDBMS114を起動した際あるいはDBの構成を変更した際、ストレージ装置150に格納されているDBの構成、特にDBスキーマの格納場所を示す情報(DBスキーマ位置情報)をプリフェッチサーバ130に送信する。
その後、DBクライアント170からクエリ(DBの操作内容又はDBに対する処理内容)を受け付けたDBサーバ100は、そのクエリに関する情報(DB処理情報)をプリフェッチサーバ130に送る。更にDBサーバ100は、DBのデータへアクセスする際、アクセスするDBに関する情報(DBアクセス情報)をプリフェッチサーバ130に送る。その後、DBサーバ100はストレージ装置150へのアクセスを行う。
一方、上述の情報を受信したプリフェッチサーバ130は、これらの情報に基づいて、DBサーバ100がストレージ装置150のどの記憶領域にアクセスするかを予測する。そして、プリフェッチサーバ130は、その予測結果に基づいてプリフェッチ命令を作成し、ストレージ装置150へ送信する。
プリフェッチ命令を受信したストレージ装置150は、プリフェッチ命令で指示される記憶領域からデータを読み出し、キャッシュメモリ162に保存する。
図6(a)は、プリフェッチプログラム142が保持するプリフェッチ管理情報116の構成例を示した図である。
プリフェッチ管理情報116は、各DBスキーマの論理的な位置情報であるDBスキーマ位置情報600及びクエリの実行に関する情報であるDB処理情報620を有する。
プリフェッチ管理情報116は、各DBスキーマの論理的な位置情報であるDBスキーマ位置情報600及びクエリの実行に関する情報であるDB処理情報620を有する。
図6(b)は、DBスキーマ位置情報600の構成例を示した図である。
DBスキーマ位置情報600は、前述のDBスキーマがストレージ装置150の記憶領域に記憶された実際の位置を示す情報である。DBスキーマ位置情報600は、DBスキーマ毎にエントリを有する。
DBスキーマ位置情報600は、前述のDBスキーマがストレージ装置150の記憶領域に記憶された実際の位置を示す情報である。DBスキーマ位置情報600は、DBスキーマ毎にエントリを有する。
各エントリは、DBスキーマを有するDBMSを識別するためのDBMS IDを登録するフィールド602、DBスキーマを識別するためのDBスキーマIDを登録するフィールド604、DBスキーマの種別を登録するフィールド606、DBスキーマが書き込まれたローデバイスのファイル名を登録するフィールド608、DBスキーマが書き込まれたストレージ装置150の論理ユニット番号を登録するフィールド610及びDBスキーマが書き込まれたストレージ装置150の論理ユニットアドレスを登録するフィールド612を有する。尚、DBMS IDは管理者等によってあらかじめ各DBMSに一意の値として割り当てられている値である。
尚、DBサーバ100がDB情報取得送信プログラム118を実行することでDBスキーマ位置情報600をOS110やDBMS114から取得し、プリフェッチサーバ130に送信する。具体的には、DB情報取得送信プログラム118は、DBサーバ100が有するDB管理情報116やローデバイス情報112の内容及びDBMS IDの情報に基づいてDBスキーマ位置情報600を作成(又はDBスキーマ位置情報600を構成する情報を収集)し、プリフェッチサーバ130に送信する。送信する契機は、DBMS114の起動時、及びDBの構成の変更時である。
図6(c)は、DB処理情報620の構成例を示した図である。
DB処理情報620は、DBMS114が実行するクエリ及びそのクエリで実行される検索(テーブルスキャンやインデックススキャン等。以下「スキャン」とも言う)に関する情報である。DB処理情報620は、各クエリの各スキャン毎にエントリを有する。各エントリは、クエリを実行するDBMSを識別するためのDBMS IDを登録するフィールド622、実行するクエリを識別するためのクエリIDを登録するフィールド624、クエリ内で実行されるスキャンを識別するためのスキャンIDを登録するフィールド626、スキャンによってアクセスされるDBスキーマを識別するためのDBスキーマIDを登録するフィールド628及びスキャンの種別を登録するフィールド630を有する。
DB処理情報620は、DBMS114が実行するクエリ及びそのクエリで実行される検索(テーブルスキャンやインデックススキャン等。以下「スキャン」とも言う)に関する情報である。DB処理情報620は、各クエリの各スキャン毎にエントリを有する。各エントリは、クエリを実行するDBMSを識別するためのDBMS IDを登録するフィールド622、実行するクエリを識別するためのクエリIDを登録するフィールド624、クエリ内で実行されるスキャンを識別するためのスキャンIDを登録するフィールド626、スキャンによってアクセスされるDBスキーマを識別するためのDBスキーマIDを登録するフィールド628及びスキャンの種別を登録するフィールド630を有する。
尚、DBクライアント170から受け付けたクエリに対するDB処理情報620をDB情報取得送信プログラム118がDBMS114から取得し、プリフェッチサーバ130に送信する。
図7(a)は、DBサーバ100がプリフェッチサーバ130に送信するDBアクセス情報700の構成例を示した図である。
DBアクセス情報700は、DBMS114がDBデータにアクセスする際に使用する情報である。DBアクセス情報700は、クエリを実行しているDBMS114を識別するためのDBMS IDを登録するフィールド702、実行されているクエリを識別するためのクエリIDを登録するフィールド704、実行しているスキャンの種別を登録するフィールド706、アクセスされるデータが記憶されているストレージ装置150上の論理ユニット番号を登録するフィールド708、アクセスされるデータが記憶されているストレージ装置150上の論理ユニットアドレスを登録するフィールド710及びアクセスされるデータのサイズを登録するフィールド712を有する。
尚、上述したように、DBMS114がDBデータにアクセスする毎にDBアクセス情報700を作成し、プリフェッチサーバ130に送信する。
図7(b)は、プリフェッチサーバ130がストレージ装置に発行するプリフェッチ命令720の構成例を示した図である。
プリフェッチ命令720は、プリフェッチ対象となるデータの位置を示す情報であり、プリフェッチ対象のデータ毎にエントリを有する。各エントリは、プリフェッチ対象となるデータが記憶されているストレージ装置150上の論理ユニット番号を登録するフィールド720、プリフェッチ対象となるデータが記憶されているストレージ装置150上の論理ブロックのアドレスを登録するフィールド724及びプリフェッチ対象となるデータのサイズを登録するフィールド726を有する。
尚、プリフェッチ命令720を受信したストレージ装置150は、該当するデータの物理的な位置を記憶領域情報160から割り出し、キャッシュメモリ162上に読み出す。その後、DBへのアクセス命令を受け取ったストレージ装置150は、あらかじめキャッシュメモリ162に読み出されていたデータをDBサーバ100へ送信する。
以下、DBサーバ100で実行される各種情報のプリフェッチサーバ130への送信処理(以下「DB情報取得送信処理」)及びプリフェッチサーバ130で実行されるプリフェッチ命令の作成及び送信処理(以下「プリフェッチ処理」)の手順について説明する。尚、DBは構築済み(DB管理情報116は作成済み)であるものとする。
図8は、DBサーバ100上で実行されるDB情報取得送信処理の手順例を示したフロー図である。以下、プログラムが主語になる場合は、実際にはそのプログラムを実行するCPUによって処理が行われるものとする。
システム管理者は、DBサーバ100上でDB情報取得送信プログラム118を起動し、DB情報取得送信処理を開始する(ステップ800)。
システム管理者は、DBサーバ100上でDB情報取得送信プログラム118を起動し、DB情報取得送信処理を開始する(ステップ800)。
DB情報取得送信プログラム118は、起動後すぐにスリープ(待機状態)に入る。DB情報取得送信プログラム118は、以下に説明する各ステップでの割り込みを待ちつづける(ステップ802)。
DBMS114が起動した場合(ステップ804)又はDBに変更があった場合(ステップ806)、DB情報取得送信プログラム118は、DBMS114及びOS110から必要な情報(DB管理情報116及びローデバイス情報112)を取得してDBスキーマ位置情報600を作成し(ステップ808)、プリフェッチサーバ130に送信する(ステップ810)。尚、DB情報取得送信プログラム118が起動した時点でDBMS114が動作している場合、DB情報取得送信プログラム118はすぐにステップ808及びステップ810の処理を実行する。
DBクライアント170からクエリを受け付けた場合(ステップ812)、DB情報取得送信プログラム118は、そのクエリのクエリプランをDBMS114から取得してDB処理情報を作成し(ステップ814)、プリフェッチサーバ130に送信する(ステップ816)。その後、DB情報取得送信プログラム118は、受け付けたクエリの実行をDBMS114に要求する(ステップ818)。
クエリを実行するためにDBMS114がDBのデータにアクセスする場合(ステップ820)、DB情報取得送信プログラム118は、DBへのアクセス要求の発行の直前に、DBのデータへのアクセス(以下「I/O」とも言う)に関する情報をDBMS114から取得してDBアクセス情報700を作成する。尚、DB情報取得送信プログラム118は、I/Oの発行をDBMS、もしくはOSからのI/O発行前のコールに基づいて検出する(ステップ822)。その後、DB情報取得送信プログラム118は、作成したDBアクセス情報700をプリフェッチサーバ130に送信する(ステップ824)。
システム管理者等からDB情報取得送信プログラム118の終了コマンドを受け付けた場合(ステップ826)、DB情報取得送信プログラム118は処理を終了する(ステップ828)。
図9は、プリフェッチサーバ130上で実行されるプリフェッチ処理の手順例を示したフロー図である。
システム管理者は、プリフェッチサーバ130上でプリフェッチプログラム142を起動し、プリフェッチ処理を開始する(ステップ900)。尚、プリフェッチプログラム142は、前述のDB情報取得送信プログラム118より先に起動しておく必要がある。
プリフェッチプログラム142は、起動後すぐにスリープし(ステップ902)、DBサーバ100上で動作するDB情報取得送信プログラム118から、DBスキーマ位置情報600、DB処理情報620及びDBアクセス情報700が送られてくるのを待つ。
DBスキーマ位置情報600を受信した場合(ステップ904)、プリフェッチプログラム142は、受信したDBスキーマ位置情報600をプリフェッチ管理情報144の一部として格納する(ステップ906)。
DB処理情報620を受信した場合(ステップ910)、プリフェッチプログラム142は、受信したDB処理情報620をプリフェッチ管理情報144の一部として格納する(ステップ912)。
DBアクセス情報700を受信した場合(ステップ914)、プリフェッチプログラム142は、後述のプリフェッチ処理(b)1000を実行する(ステップ916)。
システム管理者等からプリフェッチプログラム142の終了コマンドを受け付けた場合(ステップ918)、プリフェッチプログラム142は処理を終了する(ステップ920)。
図10は、プリフェッチサーバ130が行うプリフェッチ処理(b)1000の処理手順例を示すフロー図である。プリフェッチプログラム142は、DBアクセス情報700を受信した場合、プリフェッチ処理(b)1000を実行する。まず、取得したDBアクセス情報700内のスキャン種別706を参照し、DBアクセス情報700の送信の契機になったDBサーバ100のアクセスの内容がインデックススキャンか判定する(ステップ1002)。
ステップ1002でアクセスの内容がインデックススキャンでないと判定した場合、プリフェッチプログラム142は、プリフェッチ処理(b)を終了する(ステップ1016)。
ステップ1002でアクセスの内容がインデックススキャンであると判定した場合、プリフェッチプログラム142は、取得したDBアクセス情報700内のDBMS ID702、クエリID704、アクセス先論理ユニット番号708、アクセス先論理ブロックアドレス710と、DBスキーマ位置情報600、及びDB処理情報620を参照し、アクセスの対象となるデータがインデックスデータか判定する(ステップ1004)。
ステップ1004でアクセスの対象となるデータがインデックスデータであると判定した場合、プリフェッチプログラム142は、アクセスの対象となるインデックスデータをストレージ装置150から読み出す(ステップ1006)。そして、プリフェッチプログラム142は、読み出したインデックスデータ内の各インデックスをキー値別のグループに区分し(ステップ1008)、プリフェッチ処理(b)を終了する(ステップ1016)。
ステップ1004でアクセスの対象となるデータがインデックスデータでないと判定した場合、プリフェッチプログラム142は、アクセスの対象となるデータがテーブルデータであるか判定する(ステップ1010)。
ステップ1010でアクセスの対象となるデータがテーブルデータであると判定した場合、プリフェッチプログラム142は、ステップ1008で作成した各グループのうち、アクセスの対象となるテーブルデータが属するグループを特定する。具体的には、プリフェッチプログラム142は、DBサーバ100から受信するDBアクセス情報700の位置情報からアクセスされるテーブルデータを特定し、そのテーブルデータを含むグループを特定する(ステップ1012)。そして、プリフェッチプログラム142は、特定されたグループに属しているインデックスに対応するテーブルデータを読み出すためのプリフェッチ命令を作成する。その後、プリフェッチプログラム142は、作成したプリフェッチ命令720をストレージ装置150に発行し(ステップ1014)、プリフェッチ処理(b)を終了する。
ステップ1010でアクセスの対象となるデータがテーブルデータでないと判定した場合、プリフェッチプログラム142は、プリフェッチ処理(b)を終了する(ステップ1016)。
以上の手順により、プリフェッチサーバ130は、DBサーバ100によってこの先アクセスされるデータを予測し、該当するデータのプリフェッチ指示をストレージ装置150に与える。指示を受けたストレージ装置150は、指定されたデータをキャッシュメモリ162上に読み出す。この結果、DBサーバ100がストレージ装置150上のDBのデータにアクセスする際は、全てのデータではないが大部分のデータはストレージ装置150のキャッシュメモリ162上にプリフェッチされているため、ディスクから読み出す時間分が短縮され、アクセス性能が向上する。
図11及び図12を用いて、本発明の第二の実施形態を説明する。
第一の実施形態と第二の実施形態の違いは、DBサーバ100がプリフェッチサーバ130に送信するDBアクセス情報の内容と、その違いに基づくプリフェッチ処理(b)の処理内容である。それ以外の処理や構成については、第一の実施形態で説明した内容と同じである。以下、第一の実施形態と異なっている部分について説明する。
第一の実施形態と第二の実施形態の違いは、DBサーバ100がプリフェッチサーバ130に送信するDBアクセス情報の内容と、その違いに基づくプリフェッチ処理(b)の処理内容である。それ以外の処理や構成については、第一の実施形態で説明した内容と同じである。以下、第一の実施形態と異なっている部分について説明する。
図11は、第二の実施形態におけるDBアクセス情報1100の構成例を示した図である。
DBアクセス情報1100は、クエリを実行しているDBMSを識別するためのDBMS IDを登録するフィールド1102、実行されているクエリを識別するためのクエリIDを登録するフィールド1104、アクセスするインデックススキーマを識別するためのDBスキーマIDを登録するフィールド1106、スキャンの条件を登録するフィールド1108、アクセスされるデータが記憶されているストレージ装置150上の論理ユニット番号を登録するフィールド1110、アクセスされるデータが記憶されているストレージ装置150上の論理ユニットアドレスを登録するフィールド1112及びアクセスされるデータのサイズを登録するフィールド114を有する。
尚、本実施形態では、DBサーバ100は、DBアクセス情報1100を、DBMS114がDBデータにインデックススキャンを目的としてアクセスする場合にのみプリフェッチサーバ130に送信する。この点が第一の実施形態と異なる。尚、DBサーバ100は、DBMS114のアクセスがインデックススキャンか否かを受信するクエリ及びDB管理情報116の内容に基づいて判定する。
図12は、第二の実施形態におけるプリフェッチ処理(b)の手順例を示したフロー図である。
プリフェッチプログラム142は、DBアクセス情報1100を受信した場合、プリフェッチ処理(b)1200を実行する。まず、DBアクセス情報1100の契機となったアクセスの対象となるインデックスデータをストレージ装置150から読み出す(ステップ1202)。そしてプリフェッチプログラム142は、読み出したインデックスデータ内の各インデックスからスキャン条件1108と一致するインデックスを抽出する(ステップ1204)。
プリフェッチプログラム142は、DBアクセス情報1100を受信した場合、プリフェッチ処理(b)1200を実行する。まず、DBアクセス情報1100の契機となったアクセスの対象となるインデックスデータをストレージ装置150から読み出す(ステップ1202)。そしてプリフェッチプログラム142は、読み出したインデックスデータ内の各インデックスからスキャン条件1108と一致するインデックスを抽出する(ステップ1204)。
その後、プリフェッチプログラム142は、抽出したインデックスと関連付けられているテーブルデータをプリフェッチ対象のデータとする。そしてプリフェッチプログラム142は、プリフェッチ対象となったテーブルデータをストレージ装置150にプリフェッチさせるためのプリフェッチ命令720を作成する。そして、プリフェッチプログラム142は、作成したプリフェッチ命令720を、ストレージ装置150に発行し(ステップ1206)、プリフェッチ処理(b)1200を終了する。
以上の手順により、本実施形態では、第一の実施形態と同じく、DBサーバ100がストレージ装置150上のDBのデータにアクセスする際は、全てのデータではないが大部分のデータはストレージ装置150のキャッシュメモリ162上にプリフェッチされている。したがってストレージ装置150がディスクからデータを読み出す時間が短縮され、アクセス性能が向上する。
また、第一の実施形態では、アクセス対象となるインデックスデータを読み出してキー値別にグループを作成した後、テーブルデータのアクセス情報を受信し、グループを特定してからストレージ装置150にプリフェッチ指示を与える。しかし、第二の実施形態では、アクセス対象となるインデックスデータの情報と共にスキャン条件を取得し、インデックスデータを読み出した時点でストレージ装置150にプリフェッチの指示を与えることが可能となる。
尚、DBサーバ100に接続されるストレージ装置150が複数の場合も、上述した内容で発明を実施できる。この際、DBサーバ100は、ローデバイス情報112に基づいて、複数のストレージ装置150へのI/Oを発行する。この際、DBサーバ100は、複数のストレージ装置150に関するDBアクセス情報をプリフェッチサーバ130へ送信する。個々のDBアクセス情報を受け取ったプリフェッチサーバ130は、ローデバイス情報112を用いて個々のDBアクセス情報に対応するストレージ装置150を特定し、作成したプリフェッチ命令を個々のストレージ装置150へ送信する。
100…DBサーバ、130…プリフェッチサーバ、150…ストレージ装置、170…DBクライアント、190、192…ネットワーク。
Claims (4)
- 第一の計算機と、
前記第一の計算機と接続されるストレージ装置と、
前記第一の計算機及び前記ストレージ装置とに接続される第二の計算機とを有し、
前記第一の計算機はデータベース管理プログラムを実行し、
前記ストレージ装置はデータベースを格納しかつキャッシュメモリを有し、
前記第一の計算機は、データベースの構成についての情報を、該第一の計算機で前記データベース管理プログラムの実行が開始された際、又は前記データベース管理プログラムの実行によって前記データベースの構成が変更になった時に前記第二の計算機に送信し、データベース操作についての情報を、該第一の計算機がクエリを受信した際に前記第二の計算機に送信し、前記データベースへのアクセスに使用する情報を、該第一の計算機が前記ストレージ装置が有する前記データベースへアクセスする際に前記第二の計算機に送信し、
前記データベースへのアクセスに使用する情報には、前記第一の計算機がアクセスするデータの種類に関する情報が含まれており、
前記データの種類がインデックスデータである場合には、前記第二の計算機は、前記ストレージ装置から前記インデックスデータを読み出して所定の条件に基づいて前記インデックスデータをグループ化し、
前記データの種類がテーブルデータである場合には、前記第二の計算機は、前記グループ化された前記インデックスデータのうち、前記テーブルデータが含まれているグループを特定し、前記グループに属するインデックスデータで指定されるテーブルデータを前記キャッシュメモリに読み出す命令を作成して前記ストレージ装置に送信し、
前記命令を受信した前記ストレージ装置は、前記命令に基づいて前記テーブルデータを前記キャッシュメモリに読み出し、
前記第二の計算機は、前記第一の計算機が前記ストレージ装置が有する前記データベースへアクセスする際に、前記データベースへのアクセスに使用する情報に基づいて、前記ストレージ装置に前記データベースに格納されたデータの先読みを指示することを特徴とする計算機システム。 - 前記第二の計算機は、前記データベースの構成についての情報、前記第一の計算機が実行するデータベース操作についての情報及び前記データベースへのアクセスに使用する情報に基づいて、前記第一の計算機がアクセスするデータを予測し、前記予測されたデータを前記キャッシュメモリへ読み出す命令を含む前記先読みを前記ストレージ装置に指示することを特徴とする請求項1記載の計算機システム。
- 前記データベースへのアクセスに使用する情報には、前記第一の計算機が前記データベースを検索する条件及び前記第一の計算機が読み出すインデックスデータについての情報が含まれており、
前記第二の計算機は、前記予測を行う際に、前記インデックスデータを前記ストレージ装置から読み出し、読み出した前記インデックスデータから前記検索する条件に合致するインデックスを抽出し、抽出した前記インデックスに対応するテーブルデータを前記キャッシュメモリに読み出す命令を前記ストレージ装置に送信することを特徴とする請求項1記載の計算機システム。 - 更に第二のストレージ装置を有し、
前記第二の計算機は、前記ストレージ装置及び前記第二のストレージ装置に前記先読みを指示することを特徴とする請求項1または2記載の計算機システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004068347A JP4486384B6 (ja) | 2004-03-11 | Db連携プリフェッチシステム | |
US10/849,184 US7284014B2 (en) | 2003-04-07 | 2004-05-20 | Pre-fetch computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004068347A JP4486384B6 (ja) | 2004-03-11 | Db連携プリフェッチシステム |
Publications (4)
Publication Number | Publication Date |
---|---|
JP2005258735A JP2005258735A (ja) | 2005-09-22 |
JP4486384B2 JP4486384B2 (ja) | 2010-06-23 |
JP4486384B6 true JP4486384B6 (ja) | 2011-06-08 |
JP2005258735A6 JP2005258735A6 (ja) | 2011-06-16 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4116413B2 (ja) | プリフェッチアプライアンスサーバ | |
US7117309B2 (en) | Method of detecting sequential workloads to increase host read throughput | |
US10831728B2 (en) | Application-controlled sub-LUN level data migration | |
JP4288978B2 (ja) | データ先読み方法 | |
US5887151A (en) | Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks | |
US10817202B2 (en) | Application-controlled sub-LUN level data migration | |
US7818309B2 (en) | Method for managing data access requests utilizing storage meta data processing | |
JP4794571B2 (ja) | データベースに対するアクセスを効率化するシステム、および、その方法 | |
US10831729B2 (en) | Application-controlled sub-LUN level data migration | |
JPH02230373A (ja) | データベース処理装置及びデータベース処理方法 | |
US8898357B1 (en) | Storage integration plugin for virtual servers | |
JP2005165852A (ja) | ストレージシステム、ストレージ制御装置、ストレージシステムの制御方法 | |
JP5999536B2 (ja) | 計算機及びデータ読み出し方法 | |
US8036076B2 (en) | Method of reducing storage power consumption by use of prefetch and computer system using the same | |
JP5261809B2 (ja) | 計算機システム及びデータベース管理システムプログラム | |
US7284014B2 (en) | Pre-fetch computer system | |
JP5098120B2 (ja) | 計算機システム及びデータベース管理システムプログラム | |
JP5147296B2 (ja) | 計算機システム、データベース管理方法及びプログラム | |
JP4486384B6 (ja) | Db連携プリフェッチシステム | |
JP4486384B2 (ja) | Db連携プリフェッチシステム | |
JP2005258735A6 (ja) | Db連携プリフェッチシステム | |
JPH0728677A (ja) | 記憶装置のファイル管理方式 | |
JP2001249770A (ja) | コマンドキューイングの機能を持つ記憶装置 | |
JPH1185585A (ja) | 完全メモリ常駐型インデックス方法および装置 | |
JP2006011803A (ja) | 情報処理システムおよびその制御方法 |