JP2008299672A - 計算機システム及びこれを用いたデータベース管理方法 - Google Patents

計算機システム及びこれを用いたデータベース管理方法 Download PDF

Info

Publication number
JP2008299672A
JP2008299672A JP2007146168A JP2007146168A JP2008299672A JP 2008299672 A JP2008299672 A JP 2008299672A JP 2007146168 A JP2007146168 A JP 2007146168A JP 2007146168 A JP2007146168 A JP 2007146168A JP 2008299672 A JP2008299672 A JP 2008299672A
Authority
JP
Japan
Prior art keywords
prefetch
data
information
storage device
prefetching
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
JP2007146168A
Other languages
English (en)
Other versions
JP5147296B2 (ja
Inventor
Hideomi Idei
英臣 出射
Kazuhiko Mogi
和彦 茂木
Norifumi Nishikawa
記史 西川
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 JP2007146168A priority Critical patent/JP5147296B2/ja
Priority to US11/968,681 priority patent/US7865514B2/en
Publication of JP2008299672A publication Critical patent/JP2008299672A/ja
Application granted granted Critical
Publication of JP5147296B2 publication Critical patent/JP5147296B2/ja
Expired - Fee Related 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/2455Query execution
    • G06F16/24552Database cache management
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】プリフェッチサーバが既述の先読みを行う計算機システムにおいて、DBサーバに対するクエリが多重に発生してもストレージ装置への負荷が増加することを抑制できる計算機システムを提供する。
【解決手段】DBMSが稼動するDBサーバと、DBのデータを記憶するストレージ装置に接続したプリフェッチサーバに、先読み効果の判定に必要となる情報を保持し、先読みI/Oを発行する時点で先読み効果が得られるかどうかの判定処理を実施し、その判定処理で先読み効果が得られると判定した先読みI/Oをストレージ装置に発行する。
【選択図】図6

Description

本発明は、データベース(以下「DB」という。)を運用する計算機システム(以下「DBシステム」)に関するものである。
現在、DBを基盤とする多くのアプリケーションが存在し、DBに関する一連の処理・管理を行うデータベースマネージメントシステム(以下「DBMS」という。)は極めて重要なものとなっている。
DBの特徴の一つは、多大な量のデータを扱うことである。そのため、DBMSが稼動するDBシステムの多くにおいては、DBMSが動作する計算機に大容量の記憶領域を備えるストレージ装置を接続し、ストレージ装置にデータを記憶させるシステム形態が一般的である。
このシステム形態では、ストレージ装置にデータが記憶されるために、計算機がストレージ装置にIOを発行する際に、ストレージ装置の記憶資源であるディスクに対するアクセスが必然的に発生する。このディスクへのデータアクセスはデータシーク等の機械的な動作を伴うものであり、計算機内のCPUやメモリ上で行われる演算、データ転送等に比べ遥かに時間がかかるものである。
そこで、ストレージ装置はキャッシュメモリを有し、ストレージ装置のコントローラは、ディスクから読み出したデータをキャッシュメモリに保持しておき、同じデータへのアクセスがあった際にはディスクではなくキャッシュメモリからデータを読み出すようにしている。
また、ストレージ装置が一連の連続したデータアクセス(シーケンシャルアクセス)を検出することで、次にアクセスされるデータを予測して、キャッシュメモリ上にプリフェッチ(先読み)しておくことも提案されている。
特開2003−150419号公報では、ストレージ装置に記憶されているDBのデータへのアクセスを高速化するため、データベースのデータを記憶しているストレージ装置が、DBMSからプリフェッチに必要となるDBスキーマの位置情報やクエリの実行情報等を取得し、ストレージ装置内でプリフェッチを実行する技術を開示している。
また、"高機能ディスクにおけるアクセスプランをプリフェッチ機構に関する評価"(向井他,第11回データ工学ワークショップ(DEWS2000)論文集講演番号3B−3,2000年7月発行CD−ROM,主催:電子情報通信学会データ工学研究専門委員会)では、ストレージ装置の高機能化によるDBMSの性能向上について、リレーショナルデータベース管理システム(RDBMS)を用いたDBを例にして論じている。
ストレージ装置に対しアプリケーションレベルの知識としてRDBMSにおける問い合わせ処理の実行プランを与えた場合、ストレージ装置は、RDBMSのある表に対する索引を読んだ後、その表のデータを記憶するどのブロックにアクセスすべきなのかが判断できるようになる。
そこで、DBMSが索引を連続的にアクセスして、その索引と対応する表のデータを保持するブロック群を、DBMSを実行する計算機が把握し、それらに対するアクセスを効果的にスケジューリングすることによりデータの総アクセス時間を短縮することが可能となる。
しかしながら、既述の技術は、既存のストレージ装置に大きな変更を加えなければ、データベースサーバがストレージ装置に記憶されたDBデータにアクセスできるまでの時間を短縮できないものであった。
そこで、特開2005−258735号公報記載の計算機システムは、DBサーバとストレージ装置に接続したプリフェッチサーバが、DBMSからプリフェッチに必要となるDBスキーマの位置情報やクエリ情報、DBMSの実行情報を取得し、それらの情報に基づいてDBMSがアクセスするデータを特定し、当該データをプリフェッチする指示(先読みI/O)をストレージ装置に与えてキャッシュ上に予め目的とするデータをステージングしておくことによって、DBサーバからストレージ装置へ発行されたI/Oを処理するのに要する時間を短縮できることを可能にした。
特開2003−150419号公報 特開2005−258735号公報 論文"高機能ディスクにおけるアクセスプランをプリフェッチ機構に関する評価"(向井他,第11回データ工学ワークショップ(DEWS2000)論文集講演番号3B−3,2000年7月発行CD−ROM,主催:電子情報通信学会データ工学研究専門委員会)
前記特開2005−258735号公報では、DBサーバが同時に実行しなければならないクエリの数、すなわちクエリの多重度が上がるに連れ、DBサーバからストレージ装置へのリードI/Oに加えて、プリフェッチサーバからストレージ装置へ先読みのためのI/Oも増加し、先読みを実施しない場合よりもかえってストレージ装置への負荷が増加してしまうおそれがある。
そこで、本発明の目的は、プリフェッチサーバが既述の先読みを行う計算機システムにおいて、DBサーバに対するクエリが多重に発生してもストレージ装置への負荷が増加することを抑制できる計算機システムを提供することにある。
上記目的を達成するため、本発明は、従来制限なくプリフェッチサーバからストレージ装置へ発行されていた先読みI/Oの有効性を判定し、有効性が認められた先読みI/Oをストレージ装置へ発行することで、先読み効果が得られない場合でも発行していた先読みI/Oを削減し、ストレージの負荷が増加することを抑制することを特徴とするものである。
すなわち、本発明は、DBMSが稼動するDBサーバと、DBのデータを記憶するストレージ装置に接続したプリフェッチサーバに、先読み効果の判定に必要となる情報を保持し、先読みI/Oを発行する時点で先読み効果が得られるかどうかの判定処理を実施し、その判定処理で先読み効果が得られると判定した先読みI/Oをストレージ装置に発行するようにしたものである。
本発明によれば、プリフェッチサーバが先読みを行う計算機システムにおいて、DBサーバに対するクエリが多重に発生してもストレージ装置への負荷が増加することを抑制できる計算機システム及びデータベース管理方法を提供することができる。
以下、図1〜図8を用いて本発明の実施の形態を説明する。尚、これにより本発明が限定されるものではない。
図1〜図6を用いて、本発明の第一の実施形態を説明する。図1は、計算機システムのハードウエアブロック図を示している。この計算機システムは、DBMSが動作するDBサーバ100、DBサーバ100から取得した情報に基づいて今後DBサーバがストレージ装置の記憶領域にアクセスするデータを予測し、プリフェッチの指示をストレージ装置150に与えるプリフェッチサーバ130、DBのデータを記憶するストレージ装置150、ユーザから受け付けたクエリの実行をDBサーバ100に要求するDBクライアント170、DBサーバ100並びにプリフェッチサーバ130及びDBクライアント170を相互に接続するネットワーク190、そして、DBサーバ100並びにプリフェッチサーバ130及びストレージ装置150を相互に接続するネットワーク192と、を備えている。尚、図1は、DBサーバ100、ストレージ装置150、DBクライアント170はそれぞれ1台のみを開示しているが、それぞれ複数台でも良い。
DBサーバ100は一般的な計算機であり、ネットワーク190とのインタフェースであるI/F(A)102、CPU(制御プロセッサ)104、入出力装置106、メモリ108、ネットワーク190とのインタフェースであるI/F(B)120とを有する。
DBサーバ100のメモリ108には、オペレーティングシステム(以下「OS」という。)110、DBMS114、DB情報取得送信プログラム118が格納されている。OS110、及びDBMS114、並びにDB情報取得送信プログラム118は、CPU104によって実行される。
OS110は、ローデバイスとローデバイス情報112を保持する。DBMS114は、DBの運用管理に必要となるDB管理情報116を保持する。ローデバイスとは、OSで管理する論理的な記憶装置である。ローデバイス情報112は、OS110が持つローデバイスと、そのローデバイスに割り当てられたストレージ装置150上の記憶領域を対応付ける情報である。
ローデバイス情報112によって、ローデバイスのファイル名と、ストレージ装置の記憶領域とが対応付けされる。ローデバイスのファイルに対するストレージ装置の記憶領域の割り当ては、ストレージ装置の論理ユニットの番号と、論理ユニット上での先頭論理ブロックアドレスによって定義される。
DBサーバ100とプリフェッチサーバ130は、同一のストレージ装置上の記憶領域にアクセスする必要があるため、DBサーバ100のOS110及びプリフェッチサーバ130のOS140は、それぞれ内容も全て同一のローデバイス情報112を有する。
DB管理情報116は、DBの初期設定時に、管理者等によって設定される。DB管理情報116は、DBシステムファイルの設定情報であるDBシステムファイル情報、データ領域の設定情報であるデータ領域情報、テーブルやインデックスといったDBスキーマの設定情報であるDBスキーマ情報、そして、インデックスの設定情報であるインデックス情報とから構成されている。
DBシステムファイル情報は、DBシステムファイルと、既述のローデバイスを対応付ける情報である。DBシステムファイルは、ローデバイスに作られる一つの大きなファイルである。DBMS114は、このDBシステムファイルにDBのデータを書き込むことでDBを構築する。また、DBシステムファイルに書き込まれたDBのデータについて、OS110が既述のローデバイス情報112から実際にデータを書き込むストレージ装置150の論理的な記憶領域を割り出す。そして割り出した情報を元に、OS110がデータの書き込み命令をストレージ装置150に発行する。
データ領域情報は、DBMS114が管理するデータ領域の設定情報である。データ領域とは、DBのデータを記憶するデータ領域であり、DBシステムファイル上に作成される。
DBスキーマ情報は、DBMS114が管理する表(テーブル)や索引(インデックス)といったDBスキーマに関する設定情報である。インデックス情報は、DBスキーマのうちインデックスに関する設定情報である。
プリフェッチサーバ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と同一の情報を保持する。プリフェッチプログラム142は、プリフェッチ処理に必要となるプリフェッチ管理情報144を保持する。
ストレージ装置150は、ネットワーク192とのインタフェースであるI/F152、CPU(制御プロセッサ)154、メモリ156、キャッシュメモリ162、ディスク164と、を有する。
ストレージ装置150のメモリ156には、ストレージ装置150を制御する制御プログラム158が格納されている。制御プログラム158は、CPU154によって実行され、論理的な記憶領域と物理的な記憶領域を対応付ける記憶領域情報160を保持する。尚、ディスク164は記憶媒体であり、ハードディスクドライブでも光ディスクでもよい。また、ストレージ装置150は、複数のディスクにまたがる論理的な記憶領域をRAIDによって設定してもよい。さらにまた、ディスクの代わりに、フラッシュメモリなどの半導体メモリを用いてもよい。
記憶領域情報160は、ストレージ装置150が有する論理的な記憶領域である論理ユニットと、実際にデータが記憶される物理的な記憶領域を対応付ける情報である。記憶領域情報160は、論理ユニット番号、論理ユニット内における論理ブロックの番号である論理ブロックアドレスと、論理ブロックアドレスと対応する物理ブロックが存在するディスクを識別するための物理ディスク番号、及び論理ブロックと対応する物理ブロックの番号である物理ブロックアドレスとから構成される。
ストレージ装置150は、DBサーバ100やプリフェッチサーバ130から、ストレージ装置150の論理ユニット及び論理ブロックアドレスによるアクセスを受け付ける。そして、ストレージ装置150は、論理ユニット及び論理ブロックに対応する物理ブロックの物理ディスク番号と物理ブロックアドレスを記憶領域情報160から割り出し、実際にアクセスを行う。
DBクライアント170は、DBサーバ100やプリフェッチサーバ130と同じく一般的な計算機であり、CPU(制御プロセッサのこと。)172、入出力装置174、メモリ176、ネットワーク190とのインタフェースであるI/F182とを有する。
メモリ176には、OS178、DBフロントエンドプログラム180が格納される。OS178、DBフロントエンドプログラム180は、CPU172によって実行される。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へのアクセスを行う。
DBクライアント170からクエリを受け付けた場合、DB情報取得送信プログラム118は、そのクエリのクエリプランをDBMS114から取得してDB処理情報を作成し、プリフェッチサーバ130に送信する。その後、DB情報取得送信プログラム118は、受け付けたクエリの実行をDBMS114に要求する。
一方、既述の情報を受信したプリフェッチサーバ130は、これらの情報に基づいて、DBサーバ100がストレージ装置150のどの記憶領域にアクセスするかを予測する。そして、プリフェッチサーバ130は、その予測結果に基づいてプリフェッチ命令を作成し、ストレージ装置150へ送信する。プリフェッチ命令を受信したストレージ装置150は、プリフェッチ命令で指示される記憶領域からデータを読み出し、キャッシュメモリ162に保存する。
プリフェッチ管理情報144は、各DBスキーマの論理的な位置情報であるDBスキーマ位置情報、及びクエリの実行に関する情報であるDB処理情報とから構成される。スキーマ位置情報は、DBスキーマを有するDBMSを識別するためのDBMS IDと、DBスキーマを識別するためのDBスキーマIDと、DBスキーマの種別と、DBスキーマが書き込まれたローデバイスのファイル名と、DBスキーマが書き込まれたストレージ装置150の論理ユニット番号と、DBスキーマが書き込まれたストレージ装置150の論理ユニットアドレスと、から構成される。DBMS IDは管理者等によってあらかじめ各DBMSに一意の値として割り当てられている値である。
DBサーバ100がDB情報取得送信プログラム118を実行することでDBスキーマ位置情報をOS110やDBMS114から取得し、プリフェッチサーバ130に送信する。DB情報取得送信プログラム118は、DBサーバ100が有するDB管理情報116やローデバイス情報112の内容及びDBMS IDの情報に基づいてDBスキーマ位置情報を作成(又は、DBスキーマ位置情報を構成するための情報を収集)し、プリフェッチサーバ130に送信する。送信する契機は、DBMS114の起動時、及びDBの構成の変更時である。
DB処理情報は、DBMS114が実行するクエリ及びそのクエリで実行される検索(テーブルスキャンやインデックススキャン等。以下「スキャン」とも言う)に関する情報である。DB処理情報は、クエリを実行するDBMSを識別するためのDBMS ID、実行するクエリを識別するためのクエリID、クエリ内で実行されるスキャンを識別するためのスキャンID、スキャンによってアクセスされるDBスキーマを識別するためのDBスキーマID及びスキャンの種別から構成される。DBクライアント170から受け付けたクエリに対するDB処理情報をDB情報取得送信プログラム118がDBMS114から取得し、プリフェッチサーバ130に送信する。
DBアクセス情報は、DBMS114がDBデータにアクセスする際に使用する情報である。DBアクセス情報は、クエリを実行するDBMS114を識別するためのDBMS ID、実行するクエリを識別するためのクエリID、実行するスキャンの種別、アクセスされるデータが記憶されているストレージ装置150上の論理ユニット番号、アクセスされるデータが記憶されているストレージ装置150上の論理ブロックアドレス、及びアクセスされるデータのサイズとから構成される。DBMS114がDBデータにアクセスする毎にDBアクセス情報を作成し、プリフェッチサーバ130に送信する。
プリフェッチサーバ130がストレージ装置に発行するプリフェッチ命令は、プリフェッチ対象となるデータの位置を示す情報であり、プリフェッチ対象となるデータが記憶されているストレージ装置150上の論理ユニット番号、プリフェッチ対象となるデータが記憶されているストレージ装置150上の論理ブロックのアドレス、及びプリフェッチ対象となるデータのサイズとから構成される。
プリフェッチ命令を受信したストレージ装置150は、該当するデータの物理的な位置を記憶領域情報160から割り出し、キャッシュメモリ162上に読み出す。その後、DBへのアクセス命令を受け取ったストレージ装置150は、あらかじめキャッシュメモリ162に読み出されていたデータをDBサーバ100へ送信する。
プリフェッチサーバ130上で動作するプリフェッチプログラム142は、さらに、I/O完了時間情報147、DBMSアクセス履歴管理情報148、先読みデータ管理情報149を保持する。
図2は、プリフェッチサーバ130のプリフェッチプログラム142が保持するI/O完了時間情報147の構成例を示した図である。I/O完了時間情報147は、プリフェッチサーバがストレージ装置150に対して、先読みのためのI/Oを発行してから完了するまでの時間を管理するための情報であり、この情報はI/O完了時間履歴保持数を登録するフィールド200、I/O完了時間履歴を登録するフィールド202、I/O平均完了時間を登録するフィールド204と、を有する。
I/O完了時間履歴保持数200は、I/O完了時間の履歴として保持するI/O完了時間の数を示す情報であり、プリフェッチプログラム142内部で設定しても良いし、プリフェッチプログラム起動時に管理者が外部からパラメータとして与えてもよい。
I/O完了時間履歴202のI/O完了時間とは、プリフェッチサーバ130が先読みI/Oをストレージ装置150に発行してから、ストレージ装置からプリフェッチサーバに当該I/Oに対する応答が来る間をタイムスタンプの差分によって表現したものである。I/O完了時間履歴202は、過去のI/O完了時間を直近のものからI/O完了時間履歴保持数分だけ保持したものである。
I/O平均完了時間204は、I/O完了時間履歴202に新しくI/O完了時間が追加、もしくは書き換えが行われた際、I/O完了時間履歴202を全て加算した後I/O完了時間履歴保持数で割った値である。
図3は、プリフェッチサーバ130のプリフェッチプログラム142が保持するDBMSアクセス履歴管理情報148の構成例を示した図である。DBMSアクセス履歴管理情報148は、DBMSがストレージ装置にどのようにアクセスするかを管理する情報であり、DBMSアクセス履歴情報300と、アクセス先データ情報310を有する。プリフェッチプログラム142は、アクセス履歴管理情報148を参照して先読み処理を実行する。
DBMSアクセス履歴情報300は、DBMS IDを登録するフィールド302、クエリIDを登録するフィールド304、アクセス先データ情報310の先頭へのポインタを登録するフィールド306、次のDBMSアクセス履歴情報へのポインタを登録するフィールド308を有する。
DBMSアクセス履歴情報300は、先読み対象となっているクエリ数分だけ作られ、次のDBMSアクセス履歴情報へのポインタ308によって関連付けられる。
アクセス先データ情報310は、アクセスフラグを登録するフィールド312、スキャンIDを登録するフィールド314、アクセス先論理ユニット番号を登録するフィールド316、アクセス先論理ブロックアドレスを登録するフィールド318、次のアクセス先データ情報へのポインタを登録するフィールド320を有する。
アクセス先データ情報310は、プリフェッチプログラム142が先読み処理の過程で先読み先となるデータを特定した時点で作成され、該当するDBMSアクセス履歴情報300のアクセス先データ情報として登録される。
この時、複数のアクセス先データ情報が作成された場合、DBMSのアクセス順で、次のアクセス先データ情報へのポインタ320によって関連付けられる。アクセスフラグ312はDBMSがこのフラグによって示される記憶領域にアクセスしたかどうかを示す情報であり、初期値はOFFである。DBMSがDBのデータにアクセスした際に送信されるDBアクセス情報によって、対応するアクセス先データ情報310を割り出して本アクセスフラグをONにする。
対応するアクセス先データ情報310の割り出しには、スキャンID314、アクセス先論理ユニット番号316、アクセス先論理ブロックアドレス318を使用する。ある一定期間保持し、処理に必要としなくなったアクセス先データ情報310は削除しても良い。
フェッチサーバ130のプリフェッチプログラム142は、DBサーバ100から送られるDB処理情報から図3に示すDBMSアクセス履歴管理情報148を作成する。なお、DBMSは、例えば、DBMS IDとクエリIDで特定されるDBMSアクセス履歴情報について、ポインタによってつながれた順にアクセス先データ情報に基づいてDBにアクセスする。さらに、DBMSは、DBMS IDとクエリIDで特定される、第1のDBMSアクセス履歴情報に基づくDBへのアクセスが終了すると、第2のDBMSアクセス履歴情報に基づいてDBへのアクセスを行う。
図4は、プリフェッチサーバ130のプリフェッチプログラム142が保持する先読みデータ管理情報149の構成例を示した図である。
先読みデータ管理情報149は、先読みI/O発行待ちキュー420、先読みI/O完了待ちキュー430、先読みI/O完了キュー440、先読みI/Oキャンセルキュー450を有する。各々のキューには、それぞれの状態によって先読みI/O情報400が末尾からキューイングされる。
先読みI/O情報は400、DBMS IDを登録するフィールド402、クエリIDを登録するフィールド404、スキャンIDを登録するフィールド406、先読み先論理ユニット番号を登録するフィールド408、先読み先論理ブロックアドレスを登録するフィールド410、次先読みI/O情報へのポインタを登録するフィールド412を有する。
先読みI/O情報400は、プリフェッチプログラム142が先読み処理の過程で先読み先のデータを特定した際、そのデータに対応する情報として作成し、これをまず先読みI/O発行待ちキュー420の末尾にキューイングする。
尚、この時のキューイングの順番は、DBMSのアクセス順である。また、各々のデータに優先度を設定し、優先度の高い順でキューイングしても良い。例えば、先読みの起点となる索引リーフページの優先度を最も高くすることで、他のデータよりも早くプリフェッチサーバのプリフェッチプログラムがストレージ装置に先読みI/Oを発行することになる。
先読みI/O発行待ちキュー420に先読みI/O情報400がキューイングされている場合、プリフェッチプログラムは、キューの先頭から後述の先読み効果判定処理を実施し、先読み効果ありと判定した場合は、先読みI/Oを発行して該当の先読みI/O情報400を先読み発行待ちキュー420からデキューし、先読み完了待ちキュー430の末尾にキューイングする。
プリフェッチプログラムは、先読みI/Oが終わった際は、該当の先読みI/O情報400を先読みI/O完了待ちキュー430からデキューし、先読みI/O完了キュー440の末尾にキューイングする。
また、プリフェッチプログラムは先読み効果判定処理で先読み効果なしと判定した場合は、先読みI/Oを発行しないで該当の先読みI/O情報400を先読み発行待ちキュー420からデキューし、先読みI/Oキャンセルキュー450にキューイングする。
尚、先読み完了キュー440、又は先読みキャンセルキュー450上である一定期間保持し、処理に必要としなくなった先読みI/O情報400は削除しても良い。
プリフェッチプログラム142は、図3のDBMSアクセス履歴管理情報148を参照して、ランダムに先読みI/O情報400を生成し、これを先読みI/O発行キューに格納する。図4の各キューは、プリフェッチサーバのメモリ138の所定領域に形成される。
以下、プリフェッチプログラム142が実行する先読み処理の過程において実行される先読みI/Oの発行処理(以下、先読みI/O発行処理)、及び先読みの効果を予測する処理(以下、先読み効果予測処理)の手順について説明する。以下、プログラム、又は処理が主語になる場合、実際にはそのプログラム、又は処理を実行するCPUによるものとする。
図5は、先読みI/O発行処理の手順例を示したフロー図である。先読みI/O発行処理500は、先読みI/O発行待ちキュー420を参照し、先読みI/O情報400がキューイングされているか否かを判定する(ステップ502)。
ステップ502において、プリフェッチプログラムは、先読みI/O情報400が先読みI/O発行待ちキュー420にキューイングされていると判定した場合、先読みI/O発行待ちキュー420の先頭にキューイングされている先読みI/O情報400を読み出し、I/O先読み情報400に保持されているデータを基にプリフェッチ管理情報144を検索し、このデータが先読みの起点となる索引リーフページか否かを判定する(ステップ504)。
ステップ504において前記データが先読みの起点となる索引リーフページではないと判定した場合、後述する先読み効果予測処理600を実行し、先読みI/Oによって先読み効果が得られるか否かを判定する(ステップ506)。
ステップ504において、プリフェッチプログラムが、前記データが先読みの起点となる索引リーフページである、と判定した場合、又はステップ506において先読みを実行して先読み効果が得られると判定した場合、その判定の時点でのタイムスタンプを取得し、先読みI/O情報400のI/O開始タイムスタンプ412に保存した後、先読みI/Oをストレージに発行する(ステップ508)。
続いて、プリフェッチプログラムは、この先読みI/O情報400を先読みI/O発行待ちキュー420からデキューし、先読みI/O完了待ちキュー430にキューイングする(ステップ510)。
ステップ506において、プリフェッチプログラムは、先読みを実行しても先読み効果が得られないと判定した場合、この判定の対象となった先読みI/O情報400を先読み発行待ちキュー420からデキューし、先読みキャンセルキュー450にキューイングする。
ステップ502において、先読みI/O情報400が先読みI/O発行待ちキュー420にキューイングされていない場合、もしくはステップ504からステップ512の処理を実行した後、プリフェッチプログラムは、以前に発行した先読みI/Oが完了したかを判定する(ステップ514)。
ステップ514において、以前に発行した先読みI/Oが完了していた場合、この先読みI/O情報400を先読み完了キュー430から検索して読み出し、以前に発行した先読みI/Oが完了した時点のタイムスタンプを取得してI/O開始タイムスタンプ412に保持されている値との差分を取り、I/O完了時間を割り出してI/O完了時間履歴202に保存する(ステップ516)。
続いて、プリフェッチプログラムは、ステップ516で検索した該当先読みI/O情報400を先読み完了待ちキュー430からデキューし、先読みI/O完了キュー440にキューイングする(ステップ518)。以降、プリフェッチプログラムは、ステップ502からステップ518を繰り返す。
図6は、先読み効果予測処理の手順例を示したフロー図である。先読み効果予測処理600は、前述の先読みI/O発行処理500において、先読みI/O情報400が先読み発行待ちキュー420にキューイングされていて、且つ先読み発行待ちキュー420の先頭にキューイングされている先読みI/O情報400で先読みされるデータが先読みの起点となる索引リーフページではない場合に実行される。
先読み効果予測処理600は、DBMSアクセス履歴管理情報を検索して、先読みI/O情報400で特定された、先読みされるべきデータにDBMSがアクセスしているかどうか判定する(ステップ602)。
ステップ602において、プリフェッチプログラムは、DBMSがアクセスしていないと判定した場合、再度DBMSアクセス履歴管理情報を検索し、現時点でDBMSが最後にアクセスした、又はアクセスしているデータのアクセス先データ情報310を読み出す(ステップ604)。
続いて、プリフェッチプログラムは、DBMSがステップ604で読み出したアクセス先データ情報310のデータから、先読みI/O情報400で先読みされるデータをアクセスする迄にアクセスされるデータの先読み状態を、先読みデータ管理情報149の各々のキューを参照して把握し、DBMSアクセス所要時間T1を以下ステップ608からステップ620によって算出する(ステップ606)。
対象のデータが先読みI/O完了待ちキュー430にキューイングされているか判定し(ステップ608)、そうである場合は現在先読み実行中であるため、DBMSが先読みすべきデータにアクセスするまでに要する、累積時間(T1)にI/O平均完了時間202を加算する(ステップ610)。
対象のデータが先読みI/Oキャンセルキュー450にキューイングされているか判定し(ステップ612)、そうである場合は先読み未実施であるため、DBMSはこのデータにアクセスしなければならないために、DBMSアクセス所要時間T1にI/O平均完了時間202を加算する(ステップ614)。
ステップ608、及びステップ612の判定がともに否定された場合、対象のデータは先読みI/O完了キュー440にキューイングされていることになり、先読みされるべきデータは先読み済みであり、これはキャッシュヒットの状態であるために、プリフェッチプログラムは、DBMSアクセス所要時間T1への加算は行わない(ステップ616)。
DBMSアクセス所要時間T1を算出するためにチェックすべき全てのデータに対し、ステップ608からステップ616を実行したか否かを判定し(ステップ618)、まだチェックすべきデータが存在する場合は、そのデータに対してステップ608からステップ616を実行する(ステップ620)。
ステップ618において、プリフェッチプログラムが、DBMSアクセス所要時間T1を算出するために対象となる全てのデータに対してステップ608からステップ616を実行したと判定した場合、先読みI/O完了待ちキュー430にキューイングされている先読みI/O情報400の数をカウントし、更に1を加算した値にI/O平均所要時間202を乗算して該当先読みI/Oの先読み完了時間T2を算出する(ステップ622)。
続いて、ステップ608からステップ616によって算出したDBMSアクセス所要時間T1と、ステップ622で算出したI/Oの先読み完了時間T2を比較し(ステップ624)、I/Oの先読み完了時間T2がDBMSアクセス所要時間T1より小さい場合は、該当先読みI/Oによって先読み効果が得られる(先読みが間に合う)と判定する(ステップ626)。
ステップ624において、I/Oの先読み完了時間T2がDBMSアクセス所要時間T1より大きい場合、又はステップ602においてDBMSアクセス済みであると判定した場合、該当先読みI/Oによって先読み効果は得られない(先読みは間に合わない)と判定する(ステップ628)。
以上の手順により、先読み効果の予測を行い、先読み効果を得られる(先読みが間に合う)先読みI/Oを発行することで、ストレージに発行するI/Oを削減し、ストレージの負荷増加を抑えることが可能となる。
但し、本発明の第一の実施形態において、プリフェッチサーバがストレージ装置に先読みI/Oを発行する際、前述の先読み効果予測処理を毎回行うことになり、プリフェッチサーバのCPUリソースを多く消費してしまう可能性が高く、先読み処理自体に影響を与えてしまうことも考えられる。そこで、先読み効果予測処理を簡略化し、プリフェッチサーバのCPUリソースを多く消費しない手順を第二の実施形態として説明する。
まず、第二の実施形態では、プリフェッチプログラム142が先読み処理の過程で先読み先となるデータを特定し、先読みI/O情報400を作成し、先読み発行待ちキュー420にキューイングする際、第一の実施形態ではDBMSのアクセス順でキューイングしていたところを、DBMSがアクセスする順番の逆順でキューイングするように変更する。そして、先読み効果予測処理では、DBMSアクセス履歴管理情報を検索して、該当先読みI/O情報400で先読みされるデータにDBMSがアクセスしているかどうかを判定し、DBMS未アクセスの場合は先読み効果あり(先読みが間に合う)、DBMSアクセス済みの場合は先読み効果なし(先読みが間に合わない)とする。
図7は、第二の実施形態における先読みデータ管理情報149の構成例を示した図である。第二の実施形態における先読み効果処理では、先読みデータの状態を管理する必要がなくなるため、先読みデータ管理情報149としては先読みI/O発行待ちキュー720を保持するだけで良い。尚、先読みI/O発行待ちキュー720にキューイングされる先読みI/O情報700の構成は、第一の実施形態の先読みI/O情報400と同一である。
図8は、第二の実施形態における先読み効果予測処理の手順例を示したフロー図である。
先読み効果予測処理800は、前述したようにDBMSアクセス履歴管理情報を検索して、該当先読みI/O情報400で先読みされるデータにDBMSがアクセスしているかどうかを判定する(ステップ802)。
ステップ802において、DBMS未アクセスの場合には、先読み効果あり(先読みが間に合う)と判定し(ステップ804)、DBMSアクセス済みの場合には、先読み効果なし(先読みが間に合わない)と判定する(ステップ806)。
以上の手順により、第一の実施形態よりも少ない処理で先読み効果の判定が可能となり、プリフェッチサーバのCPUリソースの消費も少なくて済む。但し、DBMSがアクセスしたかどうかの判定によって先読み効果を判定するため、先読みが間に合うと判定して先読みを実施しても、先読みが完了する前にDBMSがアクセスするケースも考えられるため、先読み効果予測の精度は第一の実施形態よりも若干低くなる。
第一、第二の実施形態ともI/O完了時間をプリフェッチサーバ130上で算出しているが、新たにインタフェースを設けてストレージ装置150から直接取得しても良い。また、クエリの多重度等によって、第一の実施形態の方式と第二の実施形態の方式を切り替えても良い。
また、プリフェッチサーバがストレージ装置のパラメータをチェックして、既述の先読み効果が得られる場合であっても、ストレージ装置がビジー状態などの場合には、プリフェッチサーバは先読みをキャンセルしてもよい。
システム構成例を示した図である。 I/O完了時間情報の構成例を示した図である。 DBMSアクセス履歴管理情報の構成例を示した図である。 先読みデータ管理情報の構成例を示した図である。 先読みI/O発行処理の手順例を示したフロー図である。 先読み効果予測処理の手順例を示したフロー図である。 第二の実施形態における先読みデータ管理情報の構成例を示した図である。 第二の実施形態における先読み効果予測処理の構成例を示した図である。
符号の説明
100…DBサーバ、102…I/F(A)、104…CPU、106…入出力装置、108…メモリ、110…OS、114…DBMS、118…DB情報取得送信プログラム、120…I/F(B)、130…プリフェッチサーバ、132…I/F(A)、134…CPU、136…入出力装置、138…メモリ、140…OS、142…プリフェッチプログラム、146…I/F(B)、150…ストレージ装置、152…I/F、154…CPU、156…メモリ、158…制御プログラム、162…キャッシュメモリ、164ディスク、170…DBクライアント、172…CPU、174…入出力装置、176…メモリ、178…OS、180…DBフロントエンドプログラム、182…I/F、190、192…ネットワーク。

Claims (10)

  1. データベース管理プログラムを備える計算機と、
    前記データベース管理プログラムがアクセス可能なデータベースを備える、ストレージ装置と、
    前記データベース管理プログラムが前記データベースにある目的データにアクセスする前に、前記ストレージ装置が当該目的データを前記データベースから先読みするためのコマンドを生成する第1の回路部と、さらに、
    前記コマンドの有効性を判定し、この判定が肯定された当該コマンドを前記ストレージ装置に供給する第2の回路部と、
    を備える、計算機システム。
  2. 前記第2の回路部は、前記データベース管理プログラムが前記目的データにアクセスする前に、前記ストレージ装置が当該目的データを先読みできるか否かを判定する、請求項1記載の計算機システム。
  3. 前記第2の回路部が、前記データベース管理プログラムが前記目的データにアクセスする前に、前記ストレージ装置が当該目的データを先読みできない場合、前記コマンドを前記ストレージ装置に発行しない、請求項2記載の計算機システム。
  4. データベース管理プログラムを備える第1の計算機と、
    前記データベース管理プログラムがアクセス可能なデータベースを備え、前記第1の計算機と接続されるストレージ装置と、
    前記第1の計算機及び前記ストレージ装置に接続される第2の計算機であって、前記データベースのデータを前記データベース管理プログラムよりも先読みする指示を前記ストレージ装置に発行し、このコマンドを受けた前記ストレージ装置が当該先読みしたデータを前記第1の計算機に供給するようにした、第2の計算機と、
    を備え、
    前記第2の計算機は、
    前記データベースのデータに前記第1の計算機がアクセス際に、当該アクセスに関する情報に基づいて、前記ストレージ装置に前記データベースに格納されたデータの先読みを指示する第1の回路部と、
    前記先読みを指示する際に、先読みの効果が得られるかどうかを判定し、先読みの効果が得られる場合に当該先読みの指示を前記ストレージ装置に与える第2の回路部と、を備える計算機システム。
  5. 前記第2の回路部は、前記先読みの対象となるデータの先読みが完了するまでの第1の所要時間と、前記データベース管理プログラムが当該先読み対象となるデータにアクセスするまでの第2所要時間と、を予測し、
    前記第1の所要時間と前記第2の所要時間とを比較して、前記先読みの効果を判定する、請求項4記載の計算機システム。
  6. 前記第2回路部は、前記第1の所要時間が前記第2の所要時間を超える場合、前記第2の計算機は前記先読みの指示を前記ストレージ装置に与えない、請求項5記載の計算機システム。
  7. 前記第2回路部は、
    前記データベース管理プログラムの前記データベースへのアクセス履歴に関する情報と、
    前記先読み対象となったデータの現在の状態に関する情報と、
    前記先読みが完了するまでの所要時間に関する情報と、を
    前記データベース管理プログラムが前記先読み対象となるデータにアクセスするまでの前記第1所要時間の予測に用いる請求項5記載の計算機システム。
  8. 前記第2の回路部は、
    前記先読み対象となったデータの状態に関する情報と、
    前記先読みが完了する所要時間に関する情報と、を、
    前記先読みの対象となるデータの先読みが完了するまでの前記第2所要時間の予測に用いる、請求項7記載の計算機システム。
  9. 前記第1の回路部は、前記先読みの対象となったデータを特定した際、 前記データベース管理プログラムがアクセスする順番とは逆順で前記先読みを指示し、
    前記第2の回路部は、前記データベース管理プログラムが該当のデータにアクセスしたかどうかで前記先読み効果を判定することを特徴とする請求項4記載の計算機システム。
  10. データベース管理プログラムを備える計算機と、前記データベース管理プログラムがアクセス可能なデータベースを備える、ストレージ装置と、を備える計算機システムを用いたデータベース管理方法において、
    前記データベース管理プログラムが前記データベースにある目的データにアクセスする前に、前記ストレージ装置が当該目的データを前記データベースから先読みするためのコマンドを生成する第1の工程と、
    前記コマンドの有効性を判定し、この判定が肯定された当該コマンドを前記ストレージ装置に供給する第2の工程と、
    を備える、計算機システムを用いたデータベース管理方法。
JP2007146168A 2007-05-31 2007-05-31 計算機システム、データベース管理方法及びプログラム Expired - Fee Related JP5147296B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007146168A JP5147296B2 (ja) 2007-05-31 2007-05-31 計算機システム、データベース管理方法及びプログラム
US11/968,681 US7865514B2 (en) 2007-05-31 2008-01-03 Computer system and database management method using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007146168A JP5147296B2 (ja) 2007-05-31 2007-05-31 計算機システム、データベース管理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2008299672A true JP2008299672A (ja) 2008-12-11
JP5147296B2 JP5147296B2 (ja) 2013-02-20

Family

ID=40089442

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007146168A Expired - Fee Related JP5147296B2 (ja) 2007-05-31 2007-05-31 計算機システム、データベース管理方法及びプログラム

Country Status (2)

Country Link
US (1) US7865514B2 (ja)
JP (1) JP5147296B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533392B2 (en) * 2009-03-04 2013-09-10 Hewlett-Packard Development Company, L.P. Cache hit management
CN102857483B (zh) * 2011-06-30 2016-06-29 国际商业机器公司 预取数据的方法、设备和装置
CN102521260B (zh) 2011-11-18 2014-04-02 华为技术有限公司 数据预热方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331793A (ja) * 2000-05-22 2001-11-30 Fuji Xerox Co Ltd 画像処理装置及びキャッシュメモリ
JP2004164144A (ja) * 2002-11-12 2004-06-10 Hitachi Ltd ディスク装置
JP2004310630A (ja) * 2003-04-10 2004-11-04 Mitsubishi Electric Corp キャッシュ制御装置
JP2005258735A (ja) * 2004-03-11 2005-09-22 Hitachi Ltd Db連携プリフェッチシステム
JP2006260067A (ja) * 2005-03-16 2006-09-28 Internatl Business Mach Corp <Ibm> 先読み装置、先読み方法、および先読みプログラム
JP2007011523A (ja) * 2005-06-29 2007-01-18 Hitachi Ltd データの先読み方法及び計算機システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860142A (en) * 1996-12-27 1999-01-12 Compaq Computer Corporation Method and apparatus for mapping the memory system of a computer for maximizing memory usage
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
JP4116413B2 (ja) 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
US7284014B2 (en) * 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331793A (ja) * 2000-05-22 2001-11-30 Fuji Xerox Co Ltd 画像処理装置及びキャッシュメモリ
JP2004164144A (ja) * 2002-11-12 2004-06-10 Hitachi Ltd ディスク装置
JP2004310630A (ja) * 2003-04-10 2004-11-04 Mitsubishi Electric Corp キャッシュ制御装置
JP2005258735A (ja) * 2004-03-11 2005-09-22 Hitachi Ltd Db連携プリフェッチシステム
JP2006260067A (ja) * 2005-03-16 2006-09-28 Internatl Business Mach Corp <Ibm> 先読み装置、先読み方法、および先読みプログラム
JP2007011523A (ja) * 2005-06-29 2007-01-18 Hitachi Ltd データの先読み方法及び計算機システム

Also Published As

Publication number Publication date
JP5147296B2 (ja) 2013-02-20
US20080301151A1 (en) 2008-12-04
US7865514B2 (en) 2011-01-04

Similar Documents

Publication Publication Date Title
JP4116413B2 (ja) プリフェッチアプライアンスサーバ
US7827167B2 (en) Database management system and method including a query executor for generating multiple tasks
JP4162184B2 (ja) データベース管理システムの実行情報を取得する手段を有する記憶装置
US7958316B2 (en) Dynamic adjustment of prefetch stream priority
US8370584B2 (en) Predictive ownership control of shared memory computing system data
JP4288978B2 (ja) データ先読み方法
US20080120469A1 (en) Systems and Arrangements for Cache Management
EP2541423B1 (en) Replacement policy for resource container
JP2007034414A5 (ja)
US6578065B1 (en) Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory
US9727469B2 (en) Performance-driven cache line memory access
CN103198025A (zh) 用于近邻数据高速缓存共享的方法和系统
US20080235696A1 (en) Access control apparatus and access control method
US7792819B2 (en) Priority reduction for fast partitions during query execution
JP4219106B2 (ja) 動的優先順位外部トランザクション・システム
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
US20090320022A1 (en) File System Object Node Management
JP5697195B2 (ja) アクセス予測に基づいてテーブルのミラーリングを制御する管理システム、プログラムおよび方法
JP5147296B2 (ja) 計算機システム、データベース管理方法及びプログラム
JP5261809B2 (ja) 計算機システム及びデータベース管理システムプログラム
US20090157621A1 (en) Search device, search method and search program
US20080189305A1 (en) Predictive Database Pool Preparation
US7284014B2 (en) Pre-fetch computer system
An et al. Your read is our priority in flash storage
JP3793682B2 (ja) コマンドキューイングの機能を持つ記憶装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120822

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121127

R150 Certificate of patent or registration of utility model

Ref document number: 5147296

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees