説明

データベース装置およびデータベース装置の制御方法

【課題】記憶装置の使用が開始された後に、記憶装置のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する。
【解決手段】データベース装置10は、ページ数取得部と、見積もり部と、変更判定部と、フォーマット部とを備える。ページ数取得部は、レコード型と、カラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、実参照ページ数を取得する。見積もり部は、記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、記憶装置のフォーマットを他方のフォーマットとした場合において参照されると予測される予測参照ページ数を求める。変更判定部は、実参照ページ数と予測参照ページ数とにもとづいて、記憶装置のフォーマットを他方のフォーマットに変更するか否かを判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、データベース装置およびデータベース装置の制御方法に関する。
【背景技術】
【0002】
記憶装置を有するデータベース装置は、記憶装置の記憶容量の削減や高速性能を求められる。このため、たとえば記憶装置に記憶されたデータへのアクセス速度を向上させるための種々の技術が開発されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特願2009−48497号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、従来のこの種の技術は、記憶装置のデータへのアクセス速度を向上させるために、記憶装置の内容を別の記憶装置にコピーしておくようになっており、複数のボリュームが必要となってしまう。
【0005】
また、記憶装置のフォーマットには、レコード型や、レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型などがある。レコード型フォーマットおよびカラム分割型フォーマットのいずれのフォーマットがデータへのアクセス速度に優れているかは、ユーザのデータ利用方法によって異なる。ユーザが同一レコードのデータに対するアクセスを多く行う場合はレコード型のほうが優れている一方、ユーザが同一カラムのデータに対するアクセスを多く行う場合はカラム分割型のほうが優れているといえる。
【0006】
しかし、レコード型フォーマットとカラム分割型フォーマットのいずれのフォーマットを採用するかは、記憶装置を使用する前に決定しておかなければならない。にもかかわらず、記憶装置が使用されてデータの記録が進むと、データの内容によっては当初決定したフォーマットが必ずしも現状に適したフォーマットであるとはいえなくなる場合がある。
【課題を解決するための手段】
【0007】
本発明の一実施形態に係るデータベース装置は、上述した課題を解決するために、ページ数取得部と、見積もり部と、変更判定部と、フォーマット部とを備える。ページ数取得部は、レコード型と、レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、参照されたデータが属するページ数である実参照ページ数を取得する。見積もり部は、記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される予測参照ページ数を求める。変更判定部は、実参照ページ数と予測参照ページ数とにもとづいて、記憶装置のフォーマットを他方のフォーマットに変更するか否かを判定する。フォーマット部は、変更判定部の判定結果に応じて記憶装置のフォーマットを他方のフォーマットに変更する。
【図面の簡単な説明】
【0008】
【図1】本発明の一実施形態に係るデータベース装置の一例を示す全体構成図。
【図2】レコード型フォーマットおよびカラム分割型フォーマットの1ファイルの論理構造の一例を示す説明図。
【図3】レコード型フォーマットおよびカラム分割型フォーマットのファイルを構成するデータに対するアクセスの様子の一例を示す説明図。
【図4】レコード型フォーマットのファイルを構成するレコードのIDとカラム分割型フォーマットのファイルを構成するカラムのIDとの関係の一例を示す説明図。
【図5】データベースエンジンの詳細な構成の一例を示すブロック図。
【図6】図1に示すデータベース装置のCPUにより、主記憶装置の使用が開始された後に、主記憶装置のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャート。
【図7】レコード型フォーマットにおけるページ、レコードおよびカラムの関係の一例を示す説明図。
【図8】(a)は図7に示すデータのカラム分割型フォーマットにおけるカラムaのページとカラムの関係の一例を示す説明図、(b)はカラムbのページとカラムの関係の一例を示す説明図。
【図9】現在のフォーマットがカラム分割型である場合にレコード型における予測参照ページ数を求める際に、同時に複数のカラムに対してアクセス要求があるものの、全てのカラムについて同一の配列結果が得られる場合の例について示す説明図。
【図10】カラム分割型フォーマットからレコード型フォーマットへ段階的にフォーマット変更を行う場合において、ID1〜ID90のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図。
【図11】図10に示す例のあと、さらにID120のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図。
【発明を実施するための形態】
【0009】
本発明に係るデータベース装置およびデータベース装置の制御方法の実施の形態について、添付図面を参照して説明する。
【0010】
図1は、本発明の一実施形態に係るデータベース装置10の一例を示す全体構成図である。
【0011】
データベース装置10は、図1に示すように、データベースエンジン11、表示部12および入力部13および主記憶装置14を有する。
【0012】
データベースエンジン11は、主制御部21と、レコード型エンジン22と、カラム分割型エンジン23とを有する。
【0013】
主制御部21は、CPU31および記憶部32を有する。記憶部32は、キャッシュメモリ33と、不揮発性の記憶媒体により構成された不揮発性記憶部34を有する。
【0014】
レコード型エンジン22およびカラム分割型エンジン23は、いわゆるストレージエンジンである。レコード型エンジン22およびカラム分割型エンジン23は、たとえば、それぞれ主制御部21のCPU31が不揮発性記憶部34に記憶されたプログラムを実行することにより実現される機能実現部として構成されてもよいし、それぞれCPU、RAM、ROMなどを有するいわゆるワンチップマイクロコントローラにより構成されてもよい。なお、CPU31の機能実現部として構成される場合、見積もり式51、61は、たとえば記憶部32に記憶されていればよい。
【0015】
表示部12は、たとえば液晶ディスプレイやOLED(Organic Light Emitting Diode)ディスプレイなどの一般的な表示出力装置により構成され、主制御部21の制御に従って各種情報を表示する。
【0016】
入力部13は、たとえばキーボード、タッチパネル、テンキーなどの一般的な入力装置により構成され、ユーザの操作に対応した操作入力信号を主制御部21に出力する。
【0017】
主記憶装置14は、磁気的もしくは光学的記録媒体または半導体メモリなどのCPU31により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【0018】
主記憶装置14は、データベースエンジン11によりレコード型フォーマットおよびカラム分割型フォーマットのいずれか1つのフォーマットでデータを記録される。
【0019】
図2は、レコード型フォーマットおよびカラム分割型フォーマットの1ファイルの論理構造の一例を示す説明図である。
【0020】
レコード型フォーマット(以下、レコード型という)およびカラム分割型フォーマット(以下、カラム分割型という)とも、1ファイルは、複数のページによって構成されるとともに、各ページは一定のサイズを有する。換言すれば、この一定のページサイズとページ数とを乗じることで、各ファイルのサイズを得ることができる。
【0021】
図2に示すように、レコード型において、各ページは複数のレコードで構成され、各レコードは複数のカラムにより構成される。カラム分割型において、各ページは同一のカラムで構成される。なお、各カラムは、同一のカラムごとに固定長か可変長かを選択することができる。したがって、同一のカラムごとにカラム長が異なる場合がある。
【0022】
データベースエンジン11は、ページ単位でフォーマットを管理する。このページ単位のフォーマットの情報は、テーブルヘッダに記録されている。データベースエンジン11は、ページにアクセスする際に、まずテーブルヘッダから各ページのフォーマットの情報を取得する。
【0023】
図3は、レコード型フォーマットおよびカラム分割型フォーマットのファイルを構成するデータに対するアクセスの様子の一例を示す説明図である。また、図4は、レコード型フォーマットのファイルを構成するレコードのIDとカラム分割型フォーマットのファイルを構成するカラムのIDとの関係の一例を示す説明図である。
【0024】
図4に示すように、レコード型のファイルを構成する各レコードにはIDが付加されるとよい。また、レコードを構成する各カラムにも、レコードのIDと同一のIDが付加されるとよい。図2−4に示す例では、レコード型においては1つのレコードは1つの行を構成するため、レコードのIDは行のID(rowid)と同一となる。
【0025】
各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部100は、データベース装置10に対し、主記憶装置14に記憶されたデータに対するアクセス要求を行う。アクセス部100は、たとえばデータベース装置10を内包するパーソナルコンピュータなどの情報処理装置のCPUが各種アプリケーションプログラムを実行することにより実現されてもよいし、データベース装置10にネットワークを介して接続された外部のパーソナルコンピュータなどの情報処理装置のCPUが各種アプリケーションプログラムを実行することにより実現されてもよい。
【0026】
たとえば、図2に示す例において、アクセス要求が“SELECT * FROM table where rowid=2”である場合を考える。この場合、図3に示すように、レコード型のファイルでは2行目のレコードが抽出される。このとき参照されるページ数は1ページである。一方、カラム分割型のファイルでは参照されるページ数は3ページである。
【0027】
他方、図2に示す例において、アクセス要求が“SELECT name FROM table”である場合を考える。この場合、図3に示すように、レコード型のファイルでは1列目のレコードが抽出され、このとき参照されるページ数は3ページである。一方、カラム分割型のファイルでは参照されるページ数は1ページである。
【0028】
参照されるページ数が少ないほうが、データアクセス速度が速いといえる。しかし、図3に示すように、レコード型フォーマットおよびカラム分割型フォーマットのいずれのフォーマットがデータへのアクセス速度に優れているか、すなわちいずれのフォーマットが少ない参照ページ数ですむかは、アクセス内容に応じて異なる。このため、いずれのフォーマットが少ない参照ページ数ですむかは、ユーザのデータの利用傾向に応じて異なると考えられる。
【0029】
そこで、本実施形態に係るデータベース装置10は、現在のフォーマットにおいて実際に参照されたページの数である実参照ページ数を蓄積するとともに、他のフォーマットであった場合に同一のアクセスで参照されていたと予測されるページの数である予測参照ページ数を蓄積することで、主記憶装置14へのデータの蓄積やデータの更新が進んだ後でも、ユーザの利用傾向を反映しつつデータへのアクセス速度を向上させるために最も適したフォーマットに主記憶装置14の各ページのフォーマットを変更する。
【0030】
図5は、データベースエンジン11の詳細な構成の一例を示すブロック図である。
【0031】
主制御部21のCPU31は、不揮発性記憶部34に記憶されたプログラムおよびこのプログラムの実行のために必要なデータをキャッシュメモリ33へロードし、このプログラムに従って、主記憶装置14の使用が開始された後に、主記憶装置14のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する処理を実行する。
【0032】
キャッシュメモリ33は、CPU31が実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。また、キャッシュメモリ33は、主記憶装置14に記憶されたデータの一部を一時的に記憶する。
【0033】
不揮発性記憶部34は、データベース装置10の起動プログラムや、プログラムを実行するために必要な各種データを記憶する。
【0034】
なお、不揮発性記憶部34は、磁気的もしくは光学的記録媒体または半導体メモリなどの、CPU31により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【0035】
CPU31は、プログラムによって、少なくともアクセス内容解析部41、読み書き部42、ページ数取得部43、平均算出部44、見積もり部45および変更判定部46として機能する。この各部41〜46は、キャッシュメモリ33の所要のワークエリアをデータの一時的な格納場所として利用する。
【0036】
レコード型エンジン22は、見積もり式51を記憶しているとともに、フォーマット部52を有する。
【0037】
見積もり式51は、主記憶装置14のフォーマットがカラム分割型である場合に、主記憶装置14のフォーマットをレコード型とした場合における予測参照ページ数を算出するための式である。
【0038】
フォーマット部52は、変更判定部46により制御されて、主記憶装置14のフォーマットをページごとにレコード型フォーマットに変更する機能を有する。
【0039】
カラム分割型エンジン23は、見積もり式61を記憶しているとともに、フォーマット部62を有する。
【0040】
見積もり式61は、主記憶装置14のフォーマットがレコード型である場合に、主記憶装置14のフォーマットをカラム分割型とした場合における予測参照ページ数を算出するための式である。
【0041】
フォーマット部62は、変更判定部46により制御されて、主記憶装置14のフォーマットをページごとにカラム分割型フォーマットに変更する機能を有する。
【0042】
アクセス内容解析部41は、各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部100から主記憶装置14に記憶されたデータに対するアクセス要求を受けるごとに(アクセスがあるごとに)、アクセス内容を解析する。たとえばアクセスがSQL文を用いて行われる場合、アクセス内容解析部41は、SQL文からアクセス内容を解析する。
【0043】
読み書き部42は、アクセス内容に応じて主記憶装置14に対してデータの読み書きを行うとともに、必要に応じてデータをキャッシュメモリ33に格納する。
【0044】
ページ数取得部43は、アクセスがあるごとに、アクセス内容解析部41により解析されたアクセス内容から今回アクセスされるページ数である実参照ページ数の情報を取得する。そして、ページ数取得部43は、記憶部32のキャッシュメモリ33または不揮発性記憶部34から実参照ページ数の積算値を読み出し、この今回のアクセスでの実参照ページ数をさらに積算して新たな積算値とし、記憶部32に記憶させる。
【0045】
また、ページ数取得部43は、アクセスがあるごとに、アクセス内容解析部41により解析されたアクセス内容から今回アクセスされるデータのレコード長およびカラムのカラム長を取得して平均算出部44に与える。たとえば、アクセスがSQL文を用いて行われる場合、アクセス内容解析部41は、SQL文にもとづいて今回のアクセスにおける実参照ページ数、レコード長およびカラム長の情報を抽出する。このとき、SQL文そのものを平均算出部44に与える必要はない。
【0046】
平均算出部44は、記憶部32のキャッシュメモリ33または不揮発性記憶部34に記憶されたこれまでのアクセスにおけるレコード長の平均値の情報を読みだす。そして、ページ数取得部43から受けた今回アクセスされるデータのレコード長とこれまでのアクセスにおけるレコード長の平均値とを平均して新たに現在の平均値を算出して記憶部32の平均値を更新する。
【0047】
また、平均算出部44は、記憶部32のキャッシュメモリ33または不揮発性記憶部34に記憶されたこれまでのアクセスにおけるカラム長の平均値の情報を読みだす。そして、ページ数取得部43から受けた今回アクセスされるデータのカラム長とこれまでのアクセスにおけるカラム長の平均値とを平均して新たに現在の平均値を算出して記憶部32の平均値を更新する。
【0048】
見積もり部45は、記憶部32からレコード長の現在の平均値およびカラム長の現在の平均値の情報を取得する。そして、現在のフォーマット(たとえばレコード型フォーマット)とは異なる他方のフォーマット(たとえばカラム分割型フォーマット)の見積もり式(たとえば見積もり式61)を用いて、レコード長の現在の平均値およびカラム長の現在の平均値にもとづいて、主記憶装置14のフォーマットを現在のフォーマットとは異なる他方のフォーマットとした場合における、今回のアクセスでの予測参照ページ数を求める。そして、見積もり部45は、記憶部32のキャッシュメモリ33または不揮発性記憶部34から予測参照ページ数の積算値を読出し、この今回のアクセスでの予測参照ページ数をさらに積算して新たな積算値とし、記憶部32に記憶させる。
【0049】
変更判定部46は、記憶部32に記憶された実参照ページ数の積算値と予測参照ページ数の積算値とにもとづいて、主記憶装置14のフォーマットをどちらのフォーマットにすると利便性が高いかを判定する。判定結果のフォーマットが現在のフォーマットと異なる場合は、変更判定部46は、主記憶装置14のフォーマットを判定結果のフォーマットに変更するようフォーマット部52および62のいずれかに指示する。
【0050】
なお、主記憶装置14に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合には、変更判定部46は、主記憶装置14のフォーマットを変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を一旦記憶部32に格納しておくとよい。この場合、変更判定部46は、たとえばあらかじめ定めた所定のタイミング(たとえば主記憶装置14の断片化を解消するための再編成を実行するタイミングなど)やユーザによる入力部13を介したフォーマット変更指示をうけたタイミングで、記憶部32にフォーマットを変更すべき旨の情報が格納されているか否かを確認し、格納されていれば、およびどのフォーマットに変更するかを示す情報に応じてフォーマット部52および62のいずれかに主記憶装置14のフォーマットを変更するよう指示するとよい。
【0051】
次に、本実施形態に係るデータベース装置およびデータベース装置の制御方法の動作の一例について説明する。
【0052】
図6は、図1に示すデータベース装置10のCPU31により、主記憶装置14の使用が開始された後に、主記憶装置14のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャートである。図6において、Sに数字を付した符号は、フローチャートの各ステップを示す。
【0053】
この手順は、アクセス部100から主記憶装置14に記憶されたデータに対するアクセス要求を受けた時点でスタートとなる。
【0054】
まず、ステップS1において、アクセス内容解析部41は、アクセス部100から主記憶装置14に記憶されたデータに対するアクセス要求を受け、アクセス内容を解析する。
【0055】
次に、ステップS2において、ページ数取得部43は、アクセス内容解析部41により解析されたアクセス内容から今回アクセスされるページ数である実参照ページ数の情報を取得する。そして、ページ数取得部43は、記憶部32から実参照ページ数の積算値を読み出し、この今回のアクセスでの実参照ページ数をさらに積算して新たな積算値とし、記憶部32に記憶させる。また、ページ数取得部43は、アクセス内容解析部41により解析されたアクセス内容から今回アクセスされるデータのレコード長およびカラムのカラム長を取得して平均算出部44に与える。
【0056】
次に、ステップS3において、平均算出部44は、記憶部32に記憶されたこれまでのアクセスにおけるレコード長の平均値の情報を読みだす。そして、ページ数取得部43から受けた今回アクセスされるデータのレコード長とこれまでのアクセスにおけるレコード長の平均値とを平均して新たに現在の平均値を算出して記憶部32の平均値を更新する。
【0057】
次に、ステップS4において、平均算出部44は、記憶部32に記憶されたこれまでのアクセスにおけるカラム長の平均値の情報を読みだす。そして、ページ数取得部43から受けた今回アクセスされるデータのカラム長とこれまでのアクセスにおけるカラム長の平均値とを平均して新たに現在の平均値を算出して記憶部32の平均値を更新する。
【0058】
次に、ステップS5において、見積もり部45は、記憶部32からレコード長の現在の平均値の情報を取得するとともに、カラム長の現在の平均値の情報を取得し、現在のフォーマットとは異なる他方のフォーマットの見積もり式を用いて、主記憶装置14のフォーマットを現在のフォーマットとは異なる他方のフォーマットとした場合における、今回のアクセスでの予測参照ページ数を求める。そして、見積もり部45は、記憶部32から予測参照ページ数の積算値を読出し、この今回のアクセスでの予測参照ページ数をさらに積算して新たな積算値とし、記憶部32に記憶させる。
【0059】
次に、ステップS6において、変更判定部46は、記憶部32に記憶された実参照ページ数の積算値と予測参照ページ数の積算値とにもとづいて、主記憶装置14のフォーマットをどちらのフォーマットにすると利便性が高いかを判定する。そして、判定結果のフォーマットが現在のフォーマットと異なるか否かをもって、主記憶装置14のフォーマットを判定結果のフォーマットに変更すべきか否かを判定する。
【0060】
フォーマットを変更すべき場合は、変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を記憶部32に格納する(ステップS7)。その後、所定のタイミングで記憶部32にフォーマットを変更すべき旨の情報が格納されていることを確認し、どのフォーマットに変更するかを示す情報に応じてフォーマット部52および62のいずれかに主記憶装置14のフォーマットを変更するよう指示し、フォーマット部52および62のいずれかによって主記憶装置14のフォーマットが変更される(ステップS8)。一方、フォーマットを変更すべきでない場合(ステップS6のNO)、すなわち現在のフォーマットが最も利便性が高い場合は、一連の手順は終了となる。
【0061】
なお、ステップS7は、主記憶装置14に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合に実行されるとよいが、実行されずともよい。ステップS7を実行しない場合は、変更判定部46は、主記憶装置14のフォーマットを変更すべきと判定すると、速やかにフォーマット部52および62のいずれかにフォーマットを変更するよう指示し、ステップS8に移行する。
【0062】
以上の手順により、主記憶装置14の使用が開始された後に、主記憶装置14のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【0063】
ここで、図6のステップS5で見積もり部45により実行される予測参照ページ数の算出方法について説明する。
【0064】
図7は、レコード型フォーマットにおけるページ、レコードおよびカラムの関係の一例を示す説明図である。図7には、1レコードの平均長Xが20、レコード数が100、1ページの大きさが1000であり、各レコードが4つのカラムa、b、c、dで構成され、カラムa、b、c、dの平均長Ya、Yb、Yc、Ydがそれぞれ4、5、3、8である場合の例について示した。
【0065】
また、図8(a)は、図7に示すデータのカラム分割型フォーマットにおけるカラムaのページとカラムの関係の一例を示す説明図、(b)はカラムbのページとカラムの関係の一例を示す説明図である。
【0066】
図7に示すように、1レコードの平均長Xが20、1ページの大きさが1000である場合、レコード型では、1ページには50件のレコードが格納される。IDnのレコードを構成するカラムをそれぞれan、bn、cn、dnとすると、たとえば1ページ目にはa1〜d1で構成されるレコードからa50〜d50で構成されるレコードまでが格納される。
【0067】
一方、図8(a)に示すように、カラム平均長Yaが4のカラムaは、カラム分割型では1ページに250件が格納され、たとえば1ページ目にはa1〜a250が格納される。また、図8(b)に示すように、カラム平均長Ybが5のカラムbは、カラム分割型では1ページに200件が格納され、たとえば1ページ目にはb1〜b200が格納される。
【0068】
まず、現在のフォーマットがレコード型である場合に、カラム分割型における予測参照ページ数を求める方法について説明する。
【0069】
図7および8に示す例において、現在のフォーマットがレコード型である場合に、アクセス要求が“SELECT a, b FROM table”である場合を考える。このアクセス要求はカラムa1〜1000とカラムb1〜1000を抽出する要求であるため、レコード型の1行目および2行目が抽出され、このアクセスにおける実参照ページ数は20である(図7参照)。一方、主記憶装置14のフォーマットがカラム分割型であると仮定すると、図8のようなデータ構造となる。このため、このアクセス要求における予測参照ページ数は、カラムaについて4ページ(図8(a)参照)、カラムbについて5ページ(図8(b)参照)の合計9ページである。
【0070】
カラム分割型のカラムaの全5ページ中の1ページ目には、a1〜a250が格納される。一方、レコード型では、a1〜a250は全20ページ中の1ページ目から5ページ目にかけて50件ずつ格納される。このため、たとえばレコード型で全20ページ中の1ページ目から5ページ目が参照された場合は、カラム分割型では全5ページ中の1ページ目が参照されることが予測できる。よって、レコード型でNページ目を開いた場合は、カラム分割型では(N/5)+1ページ目(整数部分のみ)が参照されると予測できる。
【0071】
したがって、カラムごとに(「カラムの平均長Y」/「レコードの平均長X」)・「レコード型のページ数」の数の配列を用意し、Nページ目が参照された場合はN/((X/Y)+1)番目の配列に1を立てればよい。そして、カラムごとに1が立っている配列の数を取得し、すべてのカラムについて加算することで、カラム分割型であると仮定した場合における予測参照ページ数を求めることができる。
【0072】
たとえば図7および図8に示す例では、カラムaについては(Ya/X)・ページ数=(4/20)・20=4つの配列を用意し、n番目の配列にページ型の1+(X/Ya)(n−1)ページ目から(X/Ya)・nページ目、すなわち1+5(n−1)ページ目から5nページ目を割り当てればよく(n=1〜4)、カラムbについては、(Yb/X)・ページ数=(5/20)・20=5つの配列を用意し、m番目の配列にページ型の1+(X/Yb)(m−1)ページ目から(X/Yb)・mページ目、すなわち1+4(m−1)ページ目から4mページ目を割り当てればよい(m=1〜5)。
【0073】
次に、現在のフォーマットがカラム分割型である場合に、レコード型における予測参照ページ数を求める方法について説明する。
【0074】
図7および8に示す例において、カラムaの1ページ目はレコード型の1〜5ページ目に対応する。また、カラムbの1ページ目はレコード型の1〜4ページ目に対応する。
【0075】
このため、各カラムを(レコード平均長X/カラム平均長Y)で分割し、分割カラムごとに配列を用意し、参照された分割カラムの配列に1を立てればよい。そして、1が立っている配列の数を加算することで、レコード型であると仮定した場合における予測参照ページ数を求めることができる。
【0076】
図9は、現在のフォーマットがカラム分割型である場合にレコード型における予測参照ページ数を求める際に、同時に複数のカラムに対してアクセス要求があるものの、全てのカラムについて同一の配列結果が得られる場合の例について示す説明図である。
【0077】
たとえば、“SELECT a, b FROM table where 条件”などのアクセスでは、同時に複数のカラムに対してアクセス要求があるものの、全てのカラムについて同一の配列結果が得られる(図9参照)。この場合、いずれか1つのカラムにのみ注目すればよい。
【0078】
このようにして予測参照ページ数を求めた後、図6のステップS6で変更判定部46により主記憶装置14のフォーマットをどちらのフォーマットにすると利便性が高いかを判定する処理が実行される。このとき、変更判定部46は、簡単には、記憶部32に記憶された実参照ページ数の積算値が予測参照ページ数の積算値より大きいとフォーマットを変更すべきと判定すればよい。
【0079】
また、変更判定部46は、実参照ページ数の積算値が予測参照ページ数の積算値より大きく、かつ互いの積算値の差が所定の閾値よりも大きい場合にフォーマットを変更すべきと判定してもよい。所定の閾値を用いる場合、互いの積算値の差が小さい場合に頻繁に大小が入れ替わることによりフォーマット変更が繰り返されてしまう弊害を未然に防ぐことができる。また、互いの積算値の差に代えて、たとえば実参照ページ数の積算値に所定の数値(たとえば0.6など)を乗じた数が予測参照ページ数の積算値よりも大きい場合に、主記憶装置14のフォーマットを変更すべきと判定してもよい。
【0080】
図10は、カラム分割型フォーマットからレコード型フォーマットへ段階的にフォーマット変更を行う場合において、ID1〜ID90のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図である。また、図11は、図10に示す例のあと、さらにID120のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図である。
【0081】
フォーマット部52および62は、変更判定部46に制御されて主記憶装置14のフォーマットを変更する。このとき、フォーマットの変更は、図10および図11に示すように段階的に実行されてもよい。
【0082】
たとえば、現在のフォーマットがカラム分割型フォーマットであり、変更判定部46からフォーマット部52に対してレコード型フォーマットに変更するよう指示された場合を考える。この場合、フォーマット部52は、たとえばレコード型フォーマットのページ単位で段階的にフォーマットの変更を行う。
【0083】
たとえば、図10に示すように、レコード型フォーマットの1ページあたりのデータ数が30であり、ID1〜90のデータまでレコード型フォーマットへの変更が終了した場合、フォーマット部52は、テーブルヘッダにその旨の情報を格納する。このため、たとえばアクセス部100からID80のデータに対するアクセス要求があると、読み書き部42はテーブルヘッダを確認し、レコード型フォーマットで主記憶装置14に記憶されたID80のデータへアクセスする。一方、アクセス部100からID120のデータに対するアクセス要求があると、読み書き部42はテーブルヘッダを確認し、カラム分割型フォーマットで主記憶装置14に記憶されたID120のデータへアクセスする。
【0084】
次に、ID91〜120のデータで構成されるページのレコード型フォーマットへの変更が終了すると、図11に示すように、フォーマット部52は、テーブルヘッダにその旨の情報を格納する。このとき、カラム分割型フォーマット側のページのうち、ページを構成する全てのデータがレコード型フォーマットに変更されたページについては、削除してかまわない。
【0085】
このように、フォーマット部52および62は、現在のフォーマットとは異なる他方のフォーマットのページ単位で段階的にフォーマットの変更を行ってもよい。
【0086】
本実施形態に係るデータベース装置10によれば、主記憶装置14の使用が開始された後であっても、データの使用履歴にもとづいて他方のフォーマットでの予測参照ページ数を求めることができ、主記憶装置14のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【0087】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0088】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【0089】
10 データベース装置
11 データベースエンジン
14 主記憶装置
22 レコード型エンジン
23 カラム分割型エンジン
32 記憶部
33 キャッシュメモリ
41 アクセス内容解析部
43 ページ数取得部
44 平均算出部
45 見積もり部
46 変更判定部
51、61 見積もり式
52、62 フォーマット部

【特許請求の範囲】
【請求項1】
レコード型と、前記レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、参照されたデータが属するページ数である実参照ページ数を取得するページ数取得部と、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、前記記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される予測参照ページ数を求める見積もり部と、
前記実参照ページ数と前記予測参照ページ数とにもとづいて、前記記憶装置のフォーマットを前記他方のフォーマットに変更するか否かを判定する変更判定部と、
前記変更判定部の判定結果に応じて前記記憶装置のフォーマットを前記他方のフォーマットに変更するフォーマット部と、
を備えたデータベース装置。
【請求項2】
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、現在および過去に参照されたデータのレコード長の平均値を求めるとともに前記現在および過去に参照されたデータのカラム長の平均値を求める平均算出部、
をさらに備え、
前記見積もり部は、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、前記レコード長の平均値ならびに前記カラム長の平均値にもとづいて、前記記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される前記予測参照ページ数を求める、
請求項1記載のデータベース装置。
【請求項3】
前記変更判定部は、
前記ページ数取得部により取得されたページ数が前記見積もり部により求められた前記予測参照ページ数よりも多く、かつ互いの差が所定の閾値以上であると、前記記憶装置のフォーマットを前記他方のフォーマットに変更すると判定する、
請求項1または2に記載のデータベース装置。
【請求項4】
前記フォーマット部は、
前記変更判定部により前記記憶装置のフォーマットを前記他方のフォーマットに変更すると判定された後、前記変更判定部によりフォーマットの変更を実行するよう指示されるまで前記記憶装置のフォーマットの変更を待機する、
請求項1ないし3のいずれか1項に記載のデータベース装置。
【請求項5】
レコード型と、前記レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、参照されたデータが属するページ数である実参照ページ数を取得するステップと、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、前記記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される予測参照ページ数を求めるステップと、
前記実参照ページ数と前記予測参照ページ数とにもとづいて、前記記憶装置のフォーマットを前記他方のフォーマットに変更するか否かを判定するステップと、
前記他方のフォーマットに変更すると判定されると、前記記憶装置のフォーマットを前記他方のフォーマットに変更するステップと、
を有するデータベース装置の制御方法。

【図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


【公開番号】特開2013−97389(P2013−97389A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−236386(P2011−236386)
【出願日】平成23年10月27日(2011.10.27)
【出願人】(000003078)株式会社東芝 (54,554)