説明

データベース管理システム、同システムにおけるページ配置最適化方法及びデータベース管理プログラム

【課題】データ格納手段におけるページ再配置が、再配置の効果の大きいページについて、システムに最適となるように行えるようにする。
【解決手段】ミスヒットテーブル261の各行及び各列には、データベース10内の全ページのうちの、例えばバッファミスヒットの頻度が高い上位一定数のページの各々が対応付けられる。ミスヒットテーブル更新部264はバッファミスヒット時に、ミスヒットテーブル261の、直前にバッファミスヒットしたページに対応する例えば行と、今回バッファミスヒットしたページに対応する例えば列とで決まる、当該テーブル261の配列要素の値をインクリメントする。ページ配置最適化部27は、テーブル261内の各配列要素のうち、例えば閾値を超える配列要素の、行及び列にそれぞれ対応付けられたページのデータがデータベース10内で連続するようにページを再配置する。

【発明の詳細な説明】
【技術分野】
【0001】
記憶領域が固定長のページに区切って使用されるデータ格納手段を管理するデータベース管理システムに係り、特にデータ格納手段に格納されたページデータをアクセスする際のアクセス効率を向上するのに好適な、データベース管理システム、同システムにおけるページ配置最適化方法及びデータベース管理プログラムに関する。
【背景技術】
【0002】
一般に、データベース管理システム(DBMS:Data Base Management System)では、アプリケーションから与えられたデータと、データを高速に検索するために必要な索引等の情報とを、データ格納手段としてのディスク装置上に格納する。ディスク装置の記憶領域(ディスク領域)はページ(またはブロック)と呼ばれる固定長の領域に分割され、個々のページ(領域)に上記の情報が分割して格納される。
【0003】
DBMS(データベース管理システム)は、ユーザからの要求に応じてアプリケーションから与えられた問い合わせ(クエリ)を処理する場合、ディスク装置に格納された情報のうちクエリの処理に必要な一連の情報を、当該ディスク装置から(例えばメモリ上に確保された)入出力バッファに読み込む。DBMSは、入出力バッファ上でクエリの処理を行う。多くの場合、このディスクアクセスを伴う、入出力バッファへの情報の読み込みに要する時間の、クエリ処理時間に占める割合が大きい。
【0004】
そこで、ディスク装置から入出力バッファへの情報読み込みの回数を減らす工夫、即ち目的の情報が当該バッファに存在する確率を高める工夫が、従来からなされている(例えば、特許文献1参照)。ここでは、ディスク装置の物理的な領域単位に統計情報が採取される。この統計情報は、対応する領域がアクセスされた際に入出力バッファ(キャッシュメモリ)に当該領域のデータが存在するキャッシュヒットまたは当該領域のデータが存在しないキャッシュミスとなった回数(キャッシュヒット/ミス回数)を含む。ディスク制御装置は、上位装置よりアクセス要求があり、且つアクセス対象データがキャッシュ内に存在しない場合には、上記統計情報をもとに、当該データをキャッシュにロードした場合にヒットの可能性があるかを判定する。そしてディスク制御装置は、ヒットの可能性がある場合に、アクセス対象データをキャッシュにロードする。
【特許文献1】特開平6−119244号公報(段落0013,0029及び0030)
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記した従来技術においては、アクセス頻度の高いページの情報が入出力バッファに存在する確率を高めることができるものの、アクセス頻度の高くないページの情報が入出力バッファに存在する確率を高めることは難しい。即ち、アクセス頻度の高くないページの情報、特にアクセス頻度が中程度のページについては、ディスク装置から入出力バッファへの情報読み込みの回数を減らすことは難しい。したがって、アクセス頻度の高くないページの情報に関しては、ディスクアクセスに要する時間がクエリの応答性能を決めることになる。
【0006】
一般に、ディスク装置のアクセス性能は、ディスク上に連続に配置されたデータを順次読み出す場合と、ランダムに配置されたデータを読み出す場合とで大きく異なり、前者の方が後者より1桁以上応答性能が良い。このためクエリの処理に必要な一連の情報が、ディスク上の連続した領域、つまり連続したページに配置されるように工夫するならば、ディスクアクセスの効率を上げてクエリの応答性能を高速化することが可能となる。
【0007】
そこで、情報の種別(ページ種別)によって、それぞれの情報がどのようにアクセスされるかを推定して、それぞれの情報を格納するページを決定することで、ディスクアクセスがシーケンシャルになるようにページの再配置を行うことが考えられる。例えば、データの全検索(フルスキャン)が発生する場合は、フルスキャンの対象となる一連のデータをその単位で連続になるように再配置するならば、ディスクアクセス効率を向上することが期待される。また、B木の索引を持っていてB木を使用した大小比較を行うような場合は、B木の葉ページを昇順または降順に連続になるように再配置するならば、ディスクアクセス効率を向上することが期待される。
【0008】
しかし、情報の種別を手掛かりにしてページの再配置を行うだけでは、多種多様なクエリが様々なタイミングで発生する実際のシステムにおいては、必ずしもそれが最適な配置になるとは限らない。つまりクエリ処理のためのページのアクセス順は、アプリケーションが実行するクエリとその実行順序に大きく依存しており、事前にそれを予測するのが難しい。更にクエリによっては、上述のページ再配置では最適にならないケースもある。例えばB木を用いた検索を考えると、B木を用いた一致検索のクエリが多量に行われる場合は、B木のルートページから葉ページに向かった縦方向のアクセスになり、この縦方向のページ群のうち頻繁にアクセスされるページを連続または近傍に配置することが効果的になる。また、連続的に配置してもその部分はバッファ上に長期間存在していて、ディスクアクセスが殆ど発生しないケースもある。更に、どのページをどのように配置するのが効果的なのか、ページ再配置の優先順位を判別するのが困難である。
【0009】
本発明は上記事情を考慮してなされたものでその目的は、データ格納手段におけるページ再配置が、当該データ格納手段を利用するシステムがどのようなものであっても、再配置の効果の大きいページについて、そのシステムに最適となるように行える、データベース管理システム、同システムにおけるページ配置最適化方法及びデータベース管理プログラムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の1つの観点によれば、記憶領域が固定長のページに区切って使用されるデータ格納手段を管理するデータベース管理システムが提供される。このデータベース管理システムは、外部からの要求を処理するクエリ処理手段と、上記データ格納手段に格納された一部のページデータを保持する入出力バッファと、このクエリ処理手段によって要求されたページデータが上記入出力バッファ上に存在するかを判定し、存在すれば当該入出力バッファ上のページデータを上記クエリ処理手段に返し、存在しなければバッファミスヒットとして上記要求されたページデータを上記データ格納手段から読み出して上記入出力バッファに配置すると共に当該ページデータを上記クエリ処理手段に返す入出力バッファ管理手段と、行数と列数とが同数の論理的に2次元のカウンタの配列から構成されるミスヒットテーブルであって、上記データ格納手段内の全ページのうちの少なくともバッファミスヒットの頻度が一定レベルより高いページ、またはバッファミスヒットの頻度が高い上位一定数のページの各々が上記配列の各行及び各列に対応付けられたミスヒットテーブルと、上記入出力バッファ管理手段によってバッファミスヒットが判定された場合、上記ミスヒットテーブルの、直前にバッファミスヒットしたページに対応する行または列と、今回バッファミスヒットしたページに対応する列または行とで決まる、上記ミスヒットテーブルの配列要素の値をインクリメントするミスヒットテーブル更新手段と、上記ミスヒットテーブルの各配列要素のうち、閾値を超える配列要素または値が大きい上位一定数の配列要素の、行及び列にそれぞれ対応付けられたページのデータが上記データ格納手段内で連続するようにページを再配置するページ配置最適化手段とを備える。
【0011】
このような構成において、ミスヒットテーブル(論理的に2次元のカウンタの配列)には、ミスヒットテーブル更新手段のインクリメント操作により、バッファミスヒットしたページの順序関係を表す統計情報が採取される。ページ配置最適化手段は、この統計情報をもとに、即ちミスヒットテーブルの各配列要素の値をもとに、その配列要素のうち、閾値を超える配列要素または値が大きい上位一定数の配列要素の、行及び列にそれぞれ対応付けられたページのデータがデータ格納手段内で連続するように、ページを再配置する。
【0012】
このように、上記の構成においては、連続してバッファミスヒットする頻度の高いページ順序に従ってページが再配置されることにより、バッファミスヒットが発生しても、データ格納手段内では、連続配置されたページデータへのシーケンシャルアクセスとして処理されて、アクセス効率を上げることができ、結果としてクエリの応答性能を向上することができる。しかも、ミスヒットテーブルに採取される統計情報は、データ格納手段の利用状況を動的に反映している。このため、データ格納手段を利用するシステムがどのようなものであっても、再配置の効果の大きいページについて、そのシステムに最適となるページ再配置を実現できる。また、ミスヒットテーブルに採取される統計情報から、ページ配置の最適化の効果に基く再配置の優先順位を判別することも可能である。
【0013】
上記の構成は、データ格納手段に対するデータの追加削除が繰り返し多数行われるシステムや、障害回復の一方式であるシャドウページ方式を採用するデータベース管理システムなど、データ格納手段内の情報が断片化(フラグメント)しやすいケースで特に有効である。更に、データ格納手段が大規模化して、例えばディスク領域を多量に使用するようなシステムでは、ディスクのシーク時間が増加することで断片化のペナルティが大きくなるが、そのような場合に特に有効である。
【0014】
また、上記の構成においては、通常のページ再配置による最適化がデータの種別のみを手掛かりにするのに比較して、データの種別だけでは判別できないような、システム固有の隠れたページアクセスの規則性を統計的に見出して手掛かりとするため、仮に既にデータの種別による最適化が行われた後であっても、更にシステム性能を向上するような最適化を行うことができる。よって、上記の構成におけるページ再配置の最適化は、ページ種別に基く最適化よりも効果が大きい。
【0015】
また、上記の構成に、1次元のカウンタの配列から構成されるミスヒットカウンタアレイであって、上記データ格納手段内の各ページが上記配列のそれぞれの配列要素に対応付けられたミスヒットカウンタアレイと、上記入出力バッファ管理手段によってバッファミスヒットが判定された場合、当該バッファミスヒットしたページに対応する上記ミスヒットカウンタアレイの配列要素の値をインクリメントするミスヒットカウンタアレイ更新手段と、上記ミスヒットカウンタアレイの配列要素の値に基づいて、バッファミスヒットの頻度が一定レベルより高いページ、またはバッファミスヒットの頻度が高い上位一定数のページを、上記ミスヒットテーブルの各行及び列の要素として抽出するミスヒットテーブル要素抽出手段と、このミスヒットテーブル要素抽出手段によって抽出された各ページを上記ミスヒットテーブルを構成する配列の各行及び各列に対応付けるミスヒットテーブル構築手段とを追加すると良い。
【0016】
このような構成においては、データ格納手段内の全ページの各々について、バッファミスヒットの頻度が、ミスヒットカウンタアレイ(1次元のカウンタの配列)に採取され、その採取結果をもとにバッファミスヒットの頻度の高いページが、ミスヒットテーブルの各行及び列の要素として抽出される。これにより、ミスヒットテーブルのサイズが巨大化するのを効果的に防ぐことができる。
【0017】
また、上記入出力バッファ管理手段によってバッファミスヒットが判定された場合に、当該バッファミスヒットに先行してミスヒットした最大X個(Xは2以上の整数)のページと、今回ミスヒットと判定されたページとの各々のページ対にそれぞれ対応する、上記ミスヒットテーブルの配列要素の値が、上記ミスヒットテーブル更新手段によってインクリメントされる構成としても良い。
【0018】
このような構成においては、バッファミスヒットの順序にアクセスの明確な順序性を見出すことができるほどの統計的な規則性がなく、連続してバッファミスヒットとなるページ対のみに着目したのでは、ミスヒットテーブルの各配列要素の値が均一になってしまうような場合であっても、時間的に比較的ゆるやかなページアクセス順の因果関係があれば、それらの関係を見い出して、それらのページが互いに近くに配置される。これによりデータ格納手段がディスク装置を用いて実現されるシステムでは、ディスクのシーク時間を減らしてディスクアクセスの効率を向上し、結果としてクエリの応答性能を向上することができる。
【発明の効果】
【0019】
本発明によれば、バッファミスヒットしたページの順序関係を表す統計情報を採取し、その統計情報をもとに、再配置の効果の大きいページについて、データ格納手段を利用するシステムに最適となるように、ページ再配置を行うことができるため、当該システムがどのようなものであっても、当該システムに適合した最適なページ再配置を実現できる。
【発明を実施するための最良の形態】
【0020】
以下、本発明の一実施形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るデータベース管理システムを備えた計算機システムの構成を示すブロック図である。同図において、データベース10は、複数のファイルを格納するデータ格納手段であり、磁気ディスクドライブ等のディスク装置に置かれる。データベース10の領域は、ページ(またはブロック)と呼ばれる固定長の領域に分割されて管理される。このページのサイズは、例えばユーザの操作によってシステム毎に設定可能であり、本実施形態では、2KB,4KB,8KB及び16KBの中から選択可能である。各ページには、例えばデータベース10の領域内のオフセット位置が領域の開始位置に近い方から順に、シリアルのページ番号Pid(Pid=1,2,…,n)が割り当てられている。データベース10内では、各ファイルのデータと、当該データを高速に検索するために必要な索引等の情報がページ単位に分割されて、個々のページに格納される。
【0021】
データベース管理システム(DBMS)20は、データベース10を管理する。データベース管理システム20は、ユーザインタフェース21と、クエリ処理部22と、入出力バッファ23と、バッファ管理部24と、1次統計採取部25と、2次統計採取部26と、ページ配置最適化部27とから構成される。
【0022】
ユーザインタフェース21は、ユーザ(アプリケーション)とのインタフェースをなす。ユーザーインタフェース21は、ユーザの入力操作に応じてアプリケーションから与えられるクエリ(query: 問い合わせ、例えば検索要求)の受け付け、及び当該クエリに対する応答の出力等を行う。クエリ処理部22は、ユーザーインタフェース21によって受け付けられたクエリを当該インタフェース21から受け取ると、処理に必要な情報が格納されたページを順次バッファ管理部24に要求し、ユーザ(アプリケーション)からのクエリを処理する。
【0023】
入出力バッファ23は、データベース10に格納されている一部のページデータを保持するキャッシュである。入出力バッファ23は計算機システムのメモリ(図示せぬ)上に配置される。バッファ管理部24は、入出力バッファ23を管理する。即ちバッファ管理部24は、クエリ処理部22から要求されるページデータが既に入出力バッファ23上に存在すれば、当該入出力バッファ23上の要求されたページデータを、要求に対する応答としてクエリ処理部22に返す。バッファ管理部24はまた、クエリ処理部22から要求されるページデータが入出力バッファ23上に存在しなければ、バッファミスヒットを判定する。この場合、バッファ管理部24は、従来からよく知られているLRU(Least Recently Used)制御に基いて入出力バッファ23上に空きページを確保する。そしてバッファ管理部24は、要求されたページデータをデータベース10から読み出して、入出力バッファ23上に確保された空きページに配置すると共に、その配置されたページデータをクエリ処理部22に返す。
【0024】
1次統計採取部25は、上述のバッファミスヒットしたページの統計情報(1次統計情報)を採取する。1次統計採取部25は、ミスヒットカウンタアレイ251と、ミスヒットカウンタアレイ更新部252と、ミスヒットカウンタアレイ再構築部253とを含む。
【0025】
ミスヒットカウンタアレイ251は、複数のカウンタ(例えばソフトウェアカウンタ)の1次元の配列から構成される。ミスヒットカウンタアレイ251は計算機システムの上記メモリ上に配置される。ミスヒットカウンタアレイ251中の各カウンタは、データベース10内の全ページの各々(または一部の各ページ)と対応付けられており、対応するページのミスヒットの回数をカウントするのに用いられる。
【0026】
ミスヒットカウンタアレイ更新部252は、バッファミスヒットしたページに対応する、ミスヒットカウンタアレイ251内のカウンタの値を1インクリメントする。ミスヒットカウンタアレイ再構築部253は、バッファミスヒットしたページの1回目の統計情報採取の後に、その採取結果に基づいて、バッファミスヒットの発生頻度の比較的高いページ(例えば、上位の一定数のページ)を、2回目の統計情報採取の候補として抽出する。ミスヒットカウンタアレイ再構築部253は、抽出された各ページのミスヒットの回数をカウント可能とするために、ミスヒットカウンタアレイ251を再構築する。
【0027】
図2は再構築前のミスヒットカウンタアレイ251と再構築後のミスヒットカウンタアレイ251の一例を示す。本実施形態において、再構築前のミスヒットカウンタアレイ251は、データベース10のページ数をnとすると、図2(a)に示すように、全ページ分(ここでは、nページ分)のカウンタの1次元配列から構成される。このnページ用のミスヒットカウンタアレイ251内の各カウンタは、それぞれデータベース10内の各ページのページ番号Pidと対応付けられている。図2(a)に示すミスヒットカウンタアレイ251内の各カウンタの長さをL1とする。一方、再構築後のミスヒットカウンタアレイ251は、データベース10の全ページの中から2回目の統計情報採取の候補として抽出されたページの数をm(m<n)とすると、図2(b)に示すように、mページ分のカウンタの1次元配列から構成される。この図2(b)に示す、mページ用のミスヒットカウンタアレイ251内の各カウンタの長さをL2(L2>L1)とする。
【0028】
2次統計採取部26は、バッファミスヒットしたページのアクセス順序関係に関する統計情報(2次統計情報)を採取する。2次統計採取部26は、ミスヒットテーブル261と、ミスヒットテーブル要素抽出部262と、ミスヒットテーブル構築部263と、ミスヒットテーブル更新部264とを含む。
【0029】
ミスヒットテーブル261は、複数のカウンタ(例えばソフトウェアカウンタ)を計算機システムのメモリ上に論理的にM行×M列の2次元に配列することで構成される。ミスヒットテーブル261の各行i及び列i(i=1,2,…,M)の対には、ミスヒットテーブル要素抽出部262によって抽出されたM個のページの各々が、そのページ番号Pidに対応付けて割り当てられる。図3は、このミスヒットテーブル261のデータ構造例を示す。図3では、作図の都合上、M=7のミスヒットテーブル261が示されているが、実際にはMは例えば10,000など、十分大きい値である。
【0030】
ミスヒットテーブル要素抽出部262は、ミスヒットカウンタアレイ251の各カウンタによって示される、ページ毎のバッファミスヒットの回数(つまり頻度)をもとに、上位Mページ(ミスヒットの発生頻度の高い上位Mページ)を、ミスヒットテーブル261の各行及び列の要素として抽出する。
【0031】
ミスヒットテーブル構築部263は、ミスヒットテーブル要素抽出部262によって抽出されたMページのページ番号Pidをもとに、ミスヒットテーブル261を構築する。ミスヒットテーブル更新部264は、ミスヒットテーブル261と対応付けられているページの1つがバッファミスヒットし、その直後に別のページがバッファミスヒットした場合に、その連続してミスヒットした2つのページに対応するミスヒットテーブル261内の配列要素(フィールド)の値(カウンタ値)を1インクリメントする。
【0032】
ページ配置最適化部27は、バッファミスヒットが連続して発生する頻度の高い各ページ対がそれぞれデータベース10上で連続するように再配置する。ページ配置最適化部27は、ページ再配置候補抽出部271と、ページ入れ替え部272とを含む。
【0033】
ページ再配置候補抽出部271は、ミスヒットテーブル261の各フィールドの値をもとに、バッファミスヒットが連続して発生する頻度の高いページ対を頻度順に抽出する。ページ入れ替え部272は、ページ再配置候補抽出部271によって抽出された各ページ対がそれぞれデータベース10上で連続するように、ページの内容の入れ替えを行う。
【0034】
データベース管理システム20内の入出力バッファ23、ミスヒットカウンタアレイ251及びミスヒットテーブル261を除く各要素は、計算機システムにインストールされたデータベース管理のためのソフトウェアプログラム(データベース管理プログラム)を当該計算機システム(内のCPU)が読み取って実行することにより実現される。このプログラムは、コンピュータで読み取り可能な記憶媒体(フロッピー(登録商標)ディスクに代表される磁気ディスク、CD−ROM、DVDに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等)に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード(頒布)されても構わない。
【0035】
次に、図1の計算機システム内のデータベース管理システム20の動作について、データベース10内のページの配置の最適化のための処理を例に説明する。
まず、このページの配置の最適化のための処理の概略手順について、図4のフローチャートを参照して説明する。まず、1次統計採取部25は、1次統計情報採取処理(ステップS1)を実行する。この1次統計情報採取処理により、バッファミスヒットしたページの統計情報(1次統計情報)が採取される。その後、2次統計採取部26に制御が移る。2次統計採取部26は、2次統計情報採取処理(ステップS2)を実行する。この2次統計情報採取処理では、1次統計採取部25によって採取された1次統計情報をもとに、バッファミスヒットの頻度の高い上位Mページが抽出される。そして抽出されたMページの全てのページ対Pi,Pj(i=1,2,…,M,j=1,2,…,M)の組み合わせ毎に、ページPiがバッファミスヒットした直後にページPjがバッファミスヒットする回数を表す統計情報(2次統計情報)が採取される。その後、ページ配置最適化部27に制御が移る。ページ配置最適化部27は、2次統計採取部26による2次統計情報採取結果をもとに、ページ配置最適化処理(ステップS3)を実行する。このページ配置最適化処理では、続けてバッファミスヒットを発生する頻度の高いページ対が、ページ再配置の候補として抽出され、その抽出された各ページ対がそれぞれデータベース10上で連続するように、ページの内容が入れ替えられる。
【0036】
次に、1次統計情報採取処理(ステップS1)の詳細な手順について、図5のフローチャートを参照して説明する。なお、1次統計情報採取処理の前には、ミスヒットカウンタアレイ251の各カウンタの値が0に初期化される。この初期化のタイミングは、例えばデータベース管理システム20の起動時など、1次統計情報採取処理が開始されるまでの任意の時点で良い。また、初期化のタイミングが、外部からユーザインタフェース21を介して与えられる構成であっても良い。
【0037】
まず、1次統計採取部25は、ミスヒットカウンタアレイ251を用いて、データベース10内の全ページ(ここでは、ページ番号1(Pid=1)乃至n(Pid=n)のnページ)を対象に、バッファミスヒットを発生したページの統計情報を採取する(ステップS11)。このステップS11において、1次統計採取部25のミスヒットカウンタアレイ更新部252は、バッファ管理部24でバッファミスヒットが判定される都度、ミスヒットしたページのページ番号Pidに対応付けられた、図2(a)に示すnページ用のミスヒットカウンタアレイ251のカウンタを1インクリメントする。但し、インクリメント対象のカウンタの値が、カウント可能な最大値となっている場合には、当該カウンタの値は最大値に保持される。
【0038】
ステップS11が開始されてから、例えば一定期間が経過すると、ミスヒットカウンタアレイ再構築部253に制御が移る。ミスヒットカウンタアレイ再構築部253は、ミスヒットページ(のページ番号)を、対応するミスヒットカウンタアレイ251のカウンタの値の大きい順、つまりミスヒットの頻度の高い順(降順)にソートする(ステップS12)。なお、ステップS11が開始されてから発生したバッファミスヒットの総数が一定値を超えた場合に、ステップS12が実行される構成としても良い。この他に、ミスヒットカウンタアレイ251内の任意のカウンタのカウント値がカウント可能な最大値となった場合に、ステップS12が実行される構成としても良い。
【0039】
次にミスヒットカウンタアレイ再構築部253は、ソート後のミスヒットページから、上位のm(m<n)ページ(のページ番号)を、ミスヒットカウンタアレイ再構築後の統計情報の採取候補として抽出する(ステップS13)。抽出されたmページのページ番号はメモリ上に記録される。次に、ミスヒットカウンタアレイ再構築部253は、ミスヒットカウンタアレイ251を図2(b)に示すmページ用に再構築する(ステップS14)。このとき、ミスヒットカウンタアレイ251内の各カウンタ(フィールド)は0に初期化される。すると、再びミスヒットカウンタアレイ更新部252に制御が移る。
【0040】
ミスヒットカウンタアレイ更新部252は、図2(b)に示すmページ用のミスヒットカウンタアレイ251を用いて、ミスヒットカウンタアレイ再構築部253によって決定されたmページだけを対象に、バッファミスヒットを発生したページの統計情報を採取する(ステップS15)。このステップS15において、ミスヒットカウンタアレイ更新部252は、上記抽出されたmページのうちのいずれかがバッファミスヒットした場合だけ、そのミスヒットしたページのページ番号Pidに対応付けられた、図2(b)に示すmページ用のミスヒットカウンタアレイ251のカウンタを1インクリメントする。ステップS15は、例えば一定期間実行される。このステップS15の実行が終了した時点の、図2(b)に示すmページ用のミスヒットカウンタアレイ251の各カウンタの値が、目的の1次統計情報を表す。ここで、図2(b)に示すmページ用のミスヒットカウンタアレイ251の各カウンタの長さL2は、図2(a)に示すnページ用のミスヒットカウンタアレイ251の各カウンタの長さL1より大きい。したがって、図2(b)に示すmページ用のミスヒットカウンタアレイ251には、ミスヒットの頻度が比較的高い上位mページの精度の高い統計情報が、1次統計情報として採取されることになる。
【0041】
ここで、1次統計採取部25において、2ステップで統計情報を採取する理由について説明する。まず、データベース10内の全ページ(nページ)についてバッファミスヒットの精度の高い統計情報を1ステップで採取するには、長さがL2(例えば4バイト)のn個のカウンタの配列をメモリ上に配置する必要があるものとする。本実施形態では、データベース10のサイズ(つまりデータベース10のページ数n)が極めて大きく、カウンタ長をL2(4バイト)とすると、n個のカウンタの配列をメモリ上に確保できないものとする。そこで本実施形態では、L2より短い、長さがL1(例えばL2の1/8の長さである4ビット)のn個のカウンタの配列を、図2(a)に示すnページ用のミスヒットカウンタアレイ25としてメモリ上に用意することで、第1のステップで、データベース10内の全ページ(nページ)についてバッファミスヒットの大まかな統計情報を比較的短時間で採取する(ステップS11)。そして、この大まかな統計情報をもとにミスヒットの頻度の高い上位mページを抽出すると共に、長さL2(4バイト)のm個のカウンタの配列を、図2(b)に示すmページ用のミスヒットカウンタアレイ25としてメモリ上に用意することで、第2のステップで、当該上位mページについてバッファミスヒットの精度の高い統計情報(1次統計情報)を、第1のステップに比べて十分時間をかけて採取する。
【0042】
なお、データベース10を複数の区画に分けて、各区画毎に順番に1次統計情報を採取することも可能である。この場合、長さL2のカウンタを1区画のページ数分だけ用意すれば良い。勿論、長さL2のn個のカウンタの配列をメモリ上に用意できるならば、データベース10内の全ページ(nページ)について、1ステップで1次統計情報を採取できる。
【0043】
さて、1次統計情報採取処理(ステップS1)で採取された1次統計情報をもとに、m個のページのページ番号Pidを、そのページのバッファミスヒットの頻度順(頻度の降順)に水平軸方向に並べ、垂直軸方向に頻度を表すと、図6のようなグラフが得られる。このグラフ上で、バッファミスヒットの頻度が高い上位M個のページは、中程度のアクセス頻度を持ち、次の理由により再配置の最適化の効果が大きいページである。
【0044】
(1)アクセス頻度の高いページはミスヒットしにくいため最適化の効果は小さい。
(2)アクセス頻度の低いページは、アクセスが発生した場合にはミスヒットする確率が高いものの、アクセス自体が希にしか発生しないためにミスヒットの頻度が低く、最適化の効果は小さい。
(3)アクセス頻度が中程度のページはミスヒットの頻度が高く、したがって最適化の効果が大きい。
【0045】
そこで、最適化の効果が大きいミスヒットの頻度の高いページを、どの順に配置すれば最適化できるかを決定するのに必要な、2次統計情報採取処理(ステップS2)の詳細な手順について、図7のフローチャートを参照して説明する。
【0046】
まず、1次統計採取部25の1次統計情報採取処理(ステップS1)により、mビット用のミスヒットカウンタアレイ251内に1次統計情報が採取されると、2次統計採取部26内のミスヒットテーブル要素抽出部262に制御が移る。ミスヒットテーブル要素抽出部262は、mビット用のミスヒットカウンタアレイ251内に採取された1次統計情報をもとに、m個のページのページ番号Pidを、カウンタの値の大きい順、即ちバッファミスヒットの頻度順(頻度の降順)にソートする(ステップS21)。
【0047】
次にミスヒットテーブル要素抽出部262は、ステップS21でのソート結果をもとに、バッファミスヒットの頻度の高い上位M個(M<m)のページを、ミスヒットページのアクセス順序関係の統計情報(つまり2次統計情報)の採取候補として抽出する(ステップS22)。なお、Mを一定値とせずに、一定のミスヒット発生頻度を超えるページ(ページ数をMとする)を、2次統計情報の採取候補として抽出するようにしても良い。
【0048】
ミスヒットテーブル構築部263は、ミスヒットテーブル要素抽出部262によって抽出されたM個のページのページ番号Pidをもとに、ミスヒットテーブル261を構築する(ステップS23)。即ちミスヒットテーブル構築部263は、抽出されたM個のページのページ番号Pidに対応付けられた行要素及び列要素を持つ、論理的にM行×M列の2次元のカウンタ配列から構成されるミスヒットテーブル261をメモリ上に構築する。但し、行i及び列i(i=1,2,…,M)で指定される配列要素位置(i,i)のカウンタ(ミスヒットテーブル261内フィールド)は不要である。このとき、ミスヒットテーブル261内の各カウンタ(フィールド)は0に初期化される。なお、Mが一定値で、且つメモリの容量に余裕がある場合には、データベース管理システム20の起動時にミスヒットテーブル261が構築されても構わない。
【0049】
ミスヒットテーブル構築部263によってミスヒットテーブル261が構築されると、ミスヒットテーブル更新部264に制御が移る。すると、ミスヒットテーブル更新部264は、ミスヒットテーブル261を更新するミスヒットテーブル更新処理(ステップS24)を例えば一定期間実行する。即ち、ミスヒットテーブル更新部264は、一定期間の間に、ミスヒットテーブル261と対応付けられているページの1つ(ページ番号をPidpとする)がバッファミスヒットし、その直後に別のページ(ページ番号をPidcとする)がバッファミスヒットする毎に、ミスヒットテーブル261内の、(Pidpと対応付けられた行,Pidcと対応付けられた列)で指定される配列要素(フィールド)の値(カウンタ値)を1インクリメントする。
【0050】
次に、上記ミスヒットテーブル更新処理(ステップS24)の詳細な手順について、図8のフローチャートを参照して説明する。
ミスヒットテーブル更新部264は、クエリ処理部22からバッファ管理部24に要求されたページデータについて、バッファ管理部24でバッファヒットまたはバッファミスヒットのいずれが判定されたかを監視する(ステップS31)。もし、バッファミスヒットである場合、ミスヒットテーブル更新部264は、バッファミスヒットしたページは、ミスヒットテーブル261の配列要素に対応付けられているかを判定する(ステップS32)。このステップS32の判定がYESの場合、ミスヒットテーブル更新部264は、前回のバッファミスヒットの該当ページは、ミスヒットテーブル261の配列要素に対応付けられているかを判定する(ステップS33)。
【0051】
ステップS33の判定がYESの場合、つまりミスヒットテーブル261の配列要素に対応付けられている2つのページがバッファミスヒットした場合、ミスヒットテーブル更新部264はステップS34に進む。これに対し、ステップS31乃至S33のいずれかの判定がNOの場合、つまりミスヒットテーブル261の配列要素に対応付けられている2つのページの少なくとも一方はバッファミスヒットしていない場合、ミスヒットテーブル更新部264はステップS31に戻る。
【0052】
ステップS34において、ミスヒットテーブル更新部264は、前回バッファミスヒットしたページのページ番号をPidpとして設定すると共に、今回バッファミスヒットしたページのページ番号をPidcとして設定する。そしてミスヒットテーブル更新部264は、ミスヒットテーブル261内の、(Pidp,Pidc)で指定されるフィールドの値を1インクリメントする(ステップS35)。このように本実施形態では、ページ番号がPidp,Pidcの両ページが、ミスヒット頻度の高い上記M個のページに含まれていて、且つページ番号がPidpのページがバッファミスヒットした直後に、ページ番号がPidcのページがバッファミスヒットした場合に、ミスヒットテーブル261が更新される。具体的には、ミスヒットテーブル261内の、Pidpに対応付けられている行位置と、Pidcに対応付けられている列位置とで指定されるフィールドの値が1インクリメントされる。
【0053】
ミスヒットテーブル更新部264はステップS35を実行すると、ミスヒットテーブル更新処理の開始時から一定期間が経過したかを判定する(ステップS36)。もし、一定期間が経過していないならば、ミスヒットテーブル更新部264はステップS31に戻る。これに対し、一定期間が経過しているならば、ミスヒットテーブル更新部264はミスヒットテーブル更新処理を終了する。この結果、バッファミスヒットが連続して発生したページの順序と回数が、バッファミスヒットしたページのアクセス順序関係に関する統計情報(2次統計情報)として、ミスヒットテーブル261に記録される。これにより、2次統計採取部26による2次統計情報採取処理(ステップS2)が終了する。
【0054】
なお、メモリに余裕がある場合には、ミスヒットテーブル261を、データベース10の全ページに対応付けるようにしても構わない。この場合、1次統計採取部25と、ミスヒットテーブル要素抽出部262と、ミスヒットテーブル構築部263とが不要となる。
【0055】
さて、2次統計採取部26の2次統計情報採取処理(ステップS2)により、ミスヒットテーブル261内に2次統計情報が採取されると、ページ配置最適化部27に制御が移る。以下、このページ配置最適化部27によるページ配置最適化処理(ステップS3)の詳細な手順について、図9乃至図11のフローチャートを参照して説明する。
【0056】
まず、ページ配置最適化部27のページ再配置候補抽出部271は、現在ミスヒットテーブル261上で最大の値を持つフィールドを探す(ステップS41)。次にページ再配置候補抽出部271は、ミスヒットテーブル261上の最大の値が閾値より大きいかを判定する(ステップS42)。
【0057】
図12は、ミスヒットテーブル261の一例を示す。通常、ミスヒットテーブル261の行及び列の数、つまりMの値は例えば10,000程度である。しかし、図12では、作図の都合で、M=5の場合が示されている。ここでは、ミスヒットの発生頻度の高い上位M(=5)個のページとして、P10,P20,P30,P40,P50の各ページが抽出されているものとする。なお、以降の説明では、表現の簡略化のために、P10,P20,P30,P40,P50がページではなくて、ページ番号またはページデータとして扱われることもある。図12の例では、ミスヒットテーブル261上の最大の値は、ページP40に対応する行位置と、ページP30に対応する列位置とで指定されるフィールド、つまり(P40,P30)で指定されるフィールドの値で“98”である。ここで、ステップS42で用いられる閾値が“40”であるものとする。この場合、“98”は閾値より大きい。
【0058】
ページ再配置候補抽出部271は、ミスヒットテーブル261上の現在の最大の値が閾値より大きい場合(ステップS42)、ミスヒットテーブル261上の該当するフィールドの行位置に対応するページ番号をAに、当該フィールドの列位置に対応するページ番号をBに、それぞれ設定する(ステップS43)。ここでは、A=P40,B=P30が設定される。次にページ再配置候補抽出部271は、ページ番号がA,Bの両ページ(つまり、P40,P30)をページ再配置の候補として抽出する(ステップS44)。この抽出された、ページ番号がA,Bの両ページ、即ちページP40及びP30は、P40→P30の順にアクセスされた場合に、最も多くミスヒットしている。したがって、両ページP40及びP30のデータ(ページデータ)をデータベース10(が置かれる例えば磁気ディスクドライブ)内で連続するように再配置すれば、シーケンシャルアクセスとなって、ミスヒットした場合にも高速アクセスが可能となる。
【0059】
そこでページ再配置候補抽出部271は、抽出した両ページのページ番号A,Bの対を、配置フラグと組にして、図13に示すページ再配置リスト273に記録する(ステップS45)。このページ再配置リスト273は、計算機システムのメモリ上に確保される。ここで、ページ番号A,Bの対と組をなす配置フラグは、ページ番号がA,Bの両ページのデータが、データベース10内で連続的に再配置されているか否かを示す。この配置フラグは、ページ再配置リスト273に記録される際には、OFF状態(0)に初期設定される。
【0060】
さて、P40,P30の対を再配置の候補として抽出することは、当該P40及びP30のデータが、ページ入れ替え部272によってデータベース10内でP40→P30の順に連続的に再配置されることを表す。つまり、P40(のページデータ)の直後にP30(のページデータ)以外が配置されることはない。また、P30(のページデータ)の直前にP40(のページデータ)以外が配置されることもない。更に、P30(のページデータ)の直後にP40(のページデータ)が配置されることもない。
【0061】
そこでページ再配置候補抽出部271は、ページ番号A,Bの対と配置フラグ(OFF)との組をページ再配置リスト273に記録すると(ステップS45)、次のステップS46乃至S48を実行する。即ち、ページ再配置候補抽出部271は、ミスヒットテーブル261上の、ページ番号Aに対応する行(A行)に属する全フィールドを0に初期化する(ステップS46)。また、ページ再配置候補抽出部271は、ミスヒットテーブル261上の、ページ番号Bに対応する列(B列)に属する全フィールドを0に初期化する(ステップS47)。更に、ページ再配置候補抽出部271は、ミスヒットテーブル261上の、B行A列の位置、つまり(B,A)の位置のフィールドを0に初期化する(ステップS48)。これにより、ステップS45において、P40,P30のページ番号がページ番号A,Bの対としてページ再配置リスト273に記録された上記の例では、ミスヒットテーブル261上の、P40の行に属する全フィールドと、P30の列に属する全フィールドと、(P30,P40)の位置のフィールドとが、いずれも0に初期化される。
【0062】
ページ再配置候補抽出部271は、ステップS46乃至S48を実行すると、上記ステップS41から始まる処理を再び実行する。この時点において、ミスヒットテーブル261上で最大の値は、(P50,P10)の位置のフィールドの値で“51”であり、閾値“40”より大きい。この場合、ステップS41乃至S44を経て、P50,P10のページ番号がページ番号A,Bの対としてページ再配置リスト273に記録される(ステップS45)。
【0063】
その後、ページ再配置候補抽出部271は、ステップS46乃至S48を経て、ステップS41に戻る。この時点において、ミスヒットテーブル261上で最大の値は、(P30,P20)の位置のフィールドの値で“41”であり、閾値“40”より大きい。この場合、ステップS41乃至S44を経て、P30,P20のページ番号がページ番号A,Bの対としてページ再配置リスト273に記録される(ステップS45)。その後、ページ再配置候補抽出部271は、ステップS46乃至S48を経て、ステップS41に戻る。この時点において、ミスヒットテーブル261上で最大の値は、(P40,P10)の位置のフィールドの値で“38”である。このように、ミスヒットテーブル261上の現在の最大の値が閾値以下の場合(ステップS42)、ページ再配置候補抽出部271からページ入れ替え部272に制御が渡される。図13のページ再配置リスト273は、このときの状態を表している。つまり、ページ再配置リスト273には、(P40,P30),(P50,P10)及び(P30,P20)の3つのページ番号対が、連続してミスヒットする頻度の高いページの順序関係を表す情報で、且つ対応するページをその順番の並びとなるように再配置するならばページ配置の最適化の効果が高い情報として記録されている。なお、ミスヒットテーブル261上で値が大きい方から一定数のフィールドを抽出し、その一定数のフィールドの各々にそれぞれ対応するページ番号対のページを、ページ再配置の候補として抽出するようにしても良い。
【0064】
さて、ページ入れ替え部272はページ再配置候補抽出部271から制御を渡されると、ページ再配置リスト273にページ番号対が存在するかを判定する(ステップS49)。もし、ページ再配置リスト273にページ番号対が存在しないならば、ページ入れ替え部272はページ入れ替えを行わずに、処理を終了する。
【0065】
これに対し、本実施形態のように、ページ再配置リスト273にページ番号対が存在するならば、ページ入れ替え部272は、ページ再配置リスト273内のページ番号対の位置を示すポインタkを初期値1に設定する(ステップS50)。次にページ入れ替え部272は、ページ再配置リスト273上のk番目のページ番号対と配置フラグとの組を参照する(ステップS51)。次にページ入れ替え部272は、この配置フラグがON状態にあるかを判定する(ステップS52)。もし、本実施形態とは異なって、配置フラグがON状態にあるならば、ページ入れ替え部272は後述するステップS60に進む。
【0066】
一方、本実施形態のように、配置フラグがON状態にないならば、ページ入れ替え部272は、k番目のページ番号対の示すページをPi,Pjとして設定する(ステップS53)。そしてページ入れ替え部272は、ページPiの次のページPinとページPjとを入れ替える(ステップS54)。更に詳細に述べるならば、ページ入れ替え部272はステップS54において、ページPiの次のページPinのページデータとページPjのページデータとを入れ替える。この入れ替えにより、データベース10内でのページPi,Pjのページ配置に関し、Pi→Pjの順に連続する順序関係が実現できる。なお、ページPjの前のページPjpとページPiとを入れ替えるようにしても、Pi→Pjの順に連続する順序関係が実現できる。
【0067】
さて、k=1の場合、k番目のページ番号対の示すページは、P40,P30、つまりPi=P40,Pj=P30である。このとき、データベース10の状態が図14(a)のようになっているものとすると、P40の次のページはP41である。この場合、図14(a)に示すように、P41とP30との入れ替え141が行われる。これにより、データベース10は図14(b)に示す状態に遷移する。この図14(b)から明らかなように、k=1番目のページ番号対の示すページP40,P30のページ配置に関し、P40→P30の順に連続する順序関係が実現できる。
【0068】
ページ入れ替え部272は、ステップS54を実行すると、ページ再配置リスト273内でk(=1)番目のページ番号対に対応している配置フラグをONする(ステップS55)。次に、ページ入れ替え部272は、ページ再配置リスト273内にPin(=P41)を要素とするページ番号対が存在するかを調べる(ステップS56)。本実施形態のように、Pin(=P41)を要素とするページ番号対が存在しないならば、ページ入れ替え部272はステップS60に進む。
【0069】
これに対し、本実施形態とは異なって、Pinを要素とするページ番号対が存在するならば、ページ入れ替え部272は、そのページ番号対の示す両ページがデータベース10内で順序関係を保っているかを判定する(ステップS57)。もし、Pinを要素とするページ番号対の示す両ページが順序関係を保っていないならば、ページ入れ替え部272は、ページ再配置リスト273内の対応する配置フラグを現在の状態に無関係にOFF状態にする(ステップS58)。このような状態は、(1)Pinを要素とするページ番号対の示す両ページの入れ替えが未だ実行されていない場合、または(2)一旦入れ替えが実行されて当該両ページの順序関係が保たれた状態で、PinとPjとの入れ替えが行われた結果、この順序関係が保たれなくなった場合に生じる。これに対し、PinとPjとの入れ替えが行われた結果、上記両ページが順序関係を保つようになったならば、ページ入れ替え部272は、ページ再配置リスト273内の対応する配置フラグをON状態にする(ステップS59)。ページ入れ替え部272は、ステップS58またはステップS59を実行すると、ステップS60に進む。
【0070】
ステップS60において、ページ入れ替え部272は、ページ再配置リスト273内の全ての配置フラグがON状態にあるかを判定する。もし、OFF状態の配置フラグが1つでもあるならば、ページ入れ替え部272は、k番目のページ番号対がページ再配置リスト273の最後のページ番号対であるかを判定する(ステップS61)。もし、最後のページ番号対でないならば、ページ入れ替え部272はkを1インクリメントして(ステップS62)、ステップS51に戻る。これに対し、最後のページ番号対であるならば、ページ入れ替え部272はステップS50に戻って、kを初期値1に設定する。
【0071】
本実施形態では、kが1から2にインクリメントされ、k=2番目のページ番号対と配置フラグとの組が参照される(ステップS51)。k=2番目のページ番号対の示すページは、P50,P10である。この場合、図14(b)に示すように、P50の次のP51とP10との入れ替え142が行われる(ステップS54)。これにより、データベース10は図14(cb)に示す状態に遷移する。この図14(c)から明らかなように、k=2番目のページ番号対の示すページP50,P10のページ配置に関し、P50→P10の順に連続する順序関係が実現できる。そこで、ページ再配置リスト273内でk=2番目のページ番号対に対応している配置フラグがONされる(ステップS55)。
【0072】
同様にして、kが2から3にインクリメントされ、k=3番目のページ番号対と配置フラグとの組が参照される(ステップS51)。k=3番目のページ番号対の示すページは、P30,P20である。この場合、図14(c)に示すように、P30(つまりP41と入れ替えられたP30)の次のP42とP20との入れ替え143が行われる。これにより、データベース10は図14(d)に示す状態に遷移する。この図14(d)から明らかなように、k=3番目のページ番号対の示すページP30,P20のページ配置に関し、P30→P20の順に連続する順序関係が実現できる。この状態では、既に再配置されたP40→P30及びP50→P10の順序関係も維持されている。ここで、P40及びP30が続けてミスヒットする頻度、P50及びP10が続けてミスヒットする頻度、そしてP30及びP20が続けてミスヒットする頻度は閾値より高い。したがって、図14(d)に示されているように、P40→P30、P50→P10及びP30→P20の順の並びに再配置されたことで、たとえ続けてミスヒットしたとしても、P40→P30、P50→P10及びP30→P20のように、それぞれシーケンシャルにアクセスされることから、高速アクセスが可能となる。
【0073】
次に、上記ステップS1乃至S3の適用例を簡単に説明する。まず、ステップS1を、ある1日の業務中に行って、1次統計情報をミスヒットカウンタアレイ251に採取する。次に、翌日の業務開始までの間に、例えば翌日の業務開始直前にステップS2を開始して、ミスヒットカウンタアレイ251に採取された1次統計情報の示すページ毎のミスヒットの頻度を集計し、ミスヒット頻度が高い上位1万個(M=10,000)のページを抽出する。しかる後に業務を開始し、この1万個のページに対して残りのステップS2を継続することで、2次統計情報をミスヒットテーブル261に採取する。次に、翌々日の業務開始までの間にステップS3を実行する。これにより、ミスヒットテーブル261に採取された2次統計情報の示す、1万個のページにおける順序を考慮した全てのページ対の組み合わせ毎の、連続してミスヒットする頻度を集計し、連続してミスヒットする頻度が閾値より高い全てのページ対について、データベース10内でその順序関係を実現するような再配置が行われる。ここで、閾値には、ミスヒットテーブル261中の、値が0でないフィールドの平均値を用いると良い。
【0074】
[変形例]
次に、上記実施形態の変形例について説明する。
上記実施形態では、Pidp(の示すページ)がミスヒットした直後にPidc(の示すページ)がミスヒットした場合だけ、ミスヒットテーブル261内の(Pidp,Pidc)の位置のフィールドの値がインクリメントされる。しかし、Pidp(の示すページ)がミスヒットした後の、X回のミスヒットのうちにPidc(の示すページ)のミスヒットが含まれている場合に、ミスヒットテーブル261内の(Pidp,Pidc)の位置のフィールドの値がインクリメントされる構成としても良い。
【0075】
そこで、上記実施形態の変形例では、図15に示すようなX段のFIFO(First IN First Out)265が、2次統計採取部26内に用意される。このFIFO265は、最近ミスヒットした最大X個のページのページ番号をミスヒット順に保持するためのミスヒットページ履歴バッファである。この変形例では、ミスヒットテーブル更新部264は、ミスヒットが発生した場合に、FIFO265を参照し、当該FIFO265に保持されている最大X個のページ番号と今回ミスヒットとなったページのページ番号との各々のページ対にそれぞれ対応する、ミスヒットテーブル261内のフィールドの値をインクリメントする。そして、ミスヒットテーブル更新部264は、今回ミスヒットが発生したページのページ番号をFIFO265に保持する。これにより、その時点で最も以前に保持されたページ番号がFIFO265から棄てられる。
【0076】
上記変形例において、ミスヒットテーブル261に採取された2次統計情報に基づく、ページ配置最適化部27によるページ配置最適化処理自体は、上記実施形態と同様に行われる。但し、このミスヒットテーブル261に採取された2次統計情報に基づくページの入れ替えにより、時間的に近いタイミングでミスヒットを発生するページ群がデータベース10内のある領域に集中配置(ニアアロケーション)される。これにより、ディスク装置のシーク時間を減らしてディスクアクセス効率を向上することができる。
【0077】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【0078】
【図1】発明の一実施形態に係るデータベース管理システムを備えた計算機システムの構成を示すブロック図。
【図2】同実施形態で適用される、再構築前のミスヒットカウンタアレイ251と再構築後のミスヒットカウンタアレイ251の一例を示す図。
【図3】図1中のミスヒットテーブル261のデータ構造例を示す図。
【図4】同実施形態におけるページ配置の最適化のための処理の概要手順を示すフローチャート。
【図5】図4中の1次統計情報採取処理(ステップS1)の詳細な手順を示すフローチャート。
【図6】採取された1次統計情報をもとに、m個のページのページ番号Pidを、そのページのバッファミスヒットの頻度順に水平軸方向に並べて、垂直軸方向に頻度を表したグラフの一例を示す図。
【図7】図4中の2次統計情報採取処理(ステップS2)の詳細な手順を示すフローチャート。
【図8】図7中のミスヒットテーブル更新処理(ステップS24)の詳細な手順を示すフローチャート。
【図9】図4中のページ配置最適化処理(ステップS3)の詳細な手順を示すフローチャートの一部を示す図。
【図10】図4中のページ配置最適化処理(ステップS3)の詳細な手順を示すフローチャートの他の一部を示す図。
【図11】図4中のページ配置最適化処理(ステップS3)の詳細な手順を示すフローチャートの残りを示す図。
【図12】2次統計情報が採取されたミスヒットテーブル261の一例を示す図。
【図13】ページ再配置リスト273の一例を示す図。
【図14】ページ配置最適化処理におけるデータベース10の状態の変化を示す図。
【図15】上記実施形態の変形例で適用されるFIFO(ミスヒットページ履歴バッファ)265の一例を示す図。
【符号の説明】
【0079】
10…データベース(データ格納手段)、20…データベース管理システム、21ユーザインタフェース、22…クエリ処理部、23…入出力バッファ、24…バッファ管理部、25…1次統計採取部、26…2次統計採取部、27…ページ配置最適化部、251…ミスヒットカウンタアレイ、252…ミスヒットカウンタアレイ更新部、253…ミスヒットカウンタアレイ再構築部、261…ミスヒットテーブル、262…ミスヒットテーブル要素抽出部、263…ミスヒットテーブル構築部、264…ミスヒットテーブル更新部、265…FIFO、271…ページ再配置候補抽出部、272…ページ入れ替え部、273…ページ再配置リスト。

【特許請求の範囲】
【請求項1】
記憶領域が固定長のページに区切って使用されるデータ格納手段を管理するデータベース管理システムにおいて、
外部からの要求を処理するクエリ処理手段と、
前記データ格納手段に格納された一部のページデータを保持する入出力バッファと、
前記クエリ処理手段によって要求されたページデータが前記入出力バッファ上に存在するかを判定し、存在すれば当該入出力バッファ上のページデータを前記クエリ処理手段に返し、存在しなければバッファミスヒットとして前記要求されたページデータを前記データ格納手段から読み出して前記入出力バッファに配置すると共に当該ページデータを前記クエリ処理手段に返す入出力バッファ管理手段と、
行数と列数とが同数の論理的に2次元のカウンタの配列から構成されるミスヒットテーブルであって、前記データ格納手段内の全ページのうちの少なくともバッファミスヒットの頻度が一定レベルより高いページ、またはバッファミスヒットの頻度が高い上位一定数のページの各々が前記配列の各行及び各列に対応付けられたミスヒットテーブルと、
前記入出力バッファ管理手段によってバッファミスヒットが判定された場合、前記ミスヒットテーブルの、直前にバッファミスヒットしたページに対応する行または列と、今回バッファミスヒットしたページに対応する列または行とで決まる、前記ミスヒットテーブルの配列要素の値をインクリメントするミスヒットテーブル更新手段と、
前記ミスヒットテーブルの各配列要素のうち、閾値を超える配列要素または値が大きい上位一定数の配列要素の、行及び列にそれぞれ対応付けられたページのデータが前記データ格納手段内で連続するようにページを再配置するページ配置最適化手段と
を具備することを特徴とするデータベース管理システム。
【請求項2】
前記ページ配置最適化手段は、
前記ミスヒットテーブルの各配列要素のうち、閾値を超える配列要素または値が大きい上位一定数の配列要素の、行及び列にそれぞれ対応付けられたページ対をページ再配置候補として抽出するページ再配置候補抽出手段と、
前記ページ再配置候補抽出手段によって抽出されたページ対毎に、アクセス順が前側のページの次のページとアクセス順が後側のページ、またはアクセス順が後側のページに先行するページとアクセス順が前側のページのデータを入れ替えるページ入れ替え手段と
を含むことを特徴とする請求項1記載のデータベース管理システム。
【請求項3】
1次元のカウンタの配列から構成されるミスヒットカウンタアレイであって、前記データ格納手段内の各ページが前記配列のそれぞれの配列要素に対応付けられたミスヒットカウンタアレイと、
前記入出力バッファ管理手段によってバッファミスヒットが判定された場合、当該バッファミスヒットしたページに対応する前記ミスヒットカウンタアレイの配列要素の値をインクリメントするミスヒットカウンタアレイ更新手段と、
前記ミスヒットカウンタアレイの配列要素の値に基づいて、バッファミスヒットの頻度が一定レベルより高いページ、またはバッファミスヒットの頻度が高い上位一定数のページを、前記ミスヒットテーブルの各行及び列の要素として抽出するミスヒットテーブル要素抽出手段と、
前記ミスヒットテーブル要素抽出手段によって抽出された各ページを前記ミスヒットテーブルを構成する前記配列の各行及び各列に対応付けるミスヒットテーブル構築手段と
を更に具備することを特徴とする請求項1記載のデータベース管理システム。
【請求項4】
前記ミスヒットテーブル更新手段は、前記入出力バッファ管理手段によってバッファミスヒットが判定された場合、当該バッファミスヒットに先行してミスヒットした最大X個(Xは2以上の整数)のページと、今回ミスヒットと判定されたページとの各々のページ対にそれぞれ対応する、前記ミスヒットテーブルの配列要素の値をインクリメントすることを特徴とする請求項1記載のデータベース管理システム。
【請求項5】
記憶領域が固定長のページに区切って使用されるデータ格納手段を管理するデータベース管理システムであって、外部からの要求を処理するクエリ処理手段と、前記データ格納手段に格納された一部のページデータを保持する入出力バッファと、前記クエリ処理手段によって要求されたページデータが前記入出力バッファ上に存在するかを判定し、存在すれば当該入出力バッファ上のページデータを前記クエリ処理手段に返し、存在しなければバッファミスヒットとして前記要求されたページデータを前記データ格納手段から読み出して前記入出力バッファに配置すると共に当該ページデータを前記クエリ処理手段に返す入出力バッファ管理手段とを含むデータベース管理システムにおけるページ配置最適化方法において、
前記入出力バッファ管理手段によってバッファミスヒットが判定された場合、行数と列数とが同数の論理的に2次元のカウンタの配列から構成されるミスヒットテーブルであって、前記データ格納手段内の全ページのうちの少なくともバッファミスヒットの頻度が一定レベルより高いページ、またはバッファミスヒットの頻度が高い上位一定数のページの各々が前記配列の各行及び各列に対応付けられたミスヒットテーブルの、直前にバッファミスヒットしたページに対応する行または列と、今回バッファミスヒットしたページに対応する列または行とで決まる、前記ミスヒットテーブルの配列要素の値をインクリメントするステップと、
前記ミスヒットテーブルの各配列要素のうち、閾値を超える配列要素または値が大きい上位一定数の配列要素の、行及び列にそれぞれ対応付けられたページのデータが前記データ格納手段内で連続するようにページを再配置するステップと
を具備することを特徴とするページ配置最適化方法。
【請求項6】
記憶領域が固定長のページに区切って使用されるデータ格納手段を管理するためのデータベース管理プログラムであって、
計算機を、
外部からの要求を処理するクエリ処理手段と、
前記クエリ処理手段によって要求されたページデータが入出力バッファ上に存在するかを判定し、存在すれば当該入出力バッファ上のページデータを前記クエリ処理手段に返し、存在しなければバッファミスヒットとして前記要求されたページデータを前記データ格納手段から読み出して前記入出力バッファに配置すると共に当該ページデータを前記クエリ処理手段に返す入出力バッファ管理手段と、
前記入出力バッファ管理手段によってバッファミスヒットが判定された場合、行数と列数とが同数の論理的に2次元のカウンタの配列から構成されるミスヒットテーブルであって、前記データ格納手段内の全ページのうちの少なくともバッファミスヒットの頻度が一定レベルより高いページ、またはバッファミスヒットの頻度が高い上位一定数のページの各々が前記配列の各行及び各列に対応付けられたミスヒットテーブルの、直前にバッファミスヒットしたページに対応する行または列と、今回バッファミスヒットしたページに対応する列または行とで決まる、前記ミスヒットテーブルの配列要素の値をインクリメントするミスヒットテーブル更新手段と、
前記ミスヒットテーブルの各配列要素のうち、閾値を超える配列要素または値が大きい上位一定数の配列要素の、行及び列にそれぞれ対応付けられたページのデータが前記データ格納手段内で連続するようにページを再配置するページ配置最適化手段と
して機能させるためのデータベース管理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2006−106895(P2006−106895A)
【公開日】平成18年4月20日(2006.4.20)
【国際特許分類】
【出願番号】特願2004−289279(P2004−289279)
【出願日】平成16年9月30日(2004.9.30)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】