(57)【特許請求の範囲】
【請求項１】
レコード型と、前記レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、参照されたデータが属する実参照ページの数である実参照ページ数を取得するページ数取得部と、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、現在および過去に参照されたデータのレコード長の平均値を求めるとともに前記現在および過去に参照されたデータのカラム長の平均値を求める平均算出部と、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、前記記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される予測参照ページ数を求める見積もり部と、
前記実参照ページ数と前記予測参照ページ数とにもとづいて、前記記憶装置のフォーマットを前記他方のフォーマットに変更するか否かを判定する変更判定部と、
前記変更判定部の判定結果に応じて前記記憶装置のフォーマットを前記他方のフォーマットに変更するフォーマット部と、
を備え、
前記見積もり部は、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、（ａ）前記記憶装置のフォーマットが前記レコード型であり前記他方のフォーマットが前記カラム分割型である場合は、前記レコード長の平均値、前記カラム長の平均値および全ページ数に応じた数の配列をカラムごとに用意し、前記実参照ページに対応する配列の数を求めることにより、このアクセスによって参照されると予測される前記予測参照ページ数を求める、または（ｂ）前記記憶装置のフォーマットが前記カラム分割型であり前記他方のフォーマットが前記レコード型である場合は、各カラムを前記レコード長の平均値および前記カラム長の平均値に応じて分割し、この分割したカラムごとに配列を用意し、前記実参照ページに対応する配列の数を求めることにより、このアクセスによって参照されると予測される前記予測参照ページ数を求める、
データベース装置。
【請求項２】
前記変更判定部は、
前記ページ数取得部により取得されたページ数が前記見積もり部により求められた前記予測参照ページ数よりも多く、かつ互いの差が所定の閾値以上であると、前記記憶装置のフォーマットを前記他方のフォーマットに変更すると判定する、
請求項１記載のデータベース装置。
【請求項３】
前記フォーマット部は、
前記変更判定部により前記記憶装置のフォーマットを前記他方のフォーマットに変更すると判定された後、前記変更判定部によりフォーマットの変更を実行するよう指示されるまで前記記憶装置のフォーマットの変更を待機する、
請求項１または２に記載のデータベース装置。
【請求項４】
レコード型と、前記レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、参照されたデータが属する実参照ページの数である実参照ページ数を取得するステップと、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、現在および過去に参照されたデータのレコード長の平均値を求めるとともに前記現在および過去に参照されたデータのカラム長の平均値を求めるステップと、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、前記記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される予測参照ページ数を求めるステップと、
前記実参照ページ数と前記予測参照ページ数とにもとづいて、前記記憶装置のフォーマットを前記他方のフォーマットに変更するか否かを判定するステップと、
前記他方のフォーマットに変更すると判定されると、前記記憶装置のフォーマットを前記他方のフォーマットに変更するステップと、
を有し、
前記予測参照ページ数を求めるステップは、
前記記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、（ａ）前記記憶装置のフォーマットが前記レコード型であり前記他方のフォーマットが前記カラム分割型である場合は、前記レコード長の平均値、前記カラム長の平均値および全ページ数に応じた数の配列をカラムごとに用意し、前記実参照ページに対応する配列の数を求めることにより、このアクセスによって参照されると予測される前記予測参照ページ数を求めるステップである、または（ｂ）前記記憶装置のフォーマットが前記カラム分割型であり前記他方のフォーマットが前記レコード型である場合は、各カラムを前記レコード長の平均値および前記カラム長の平均値に応じて分割し、この分割したカラムごとに配列を用意し、前記実参照ページに対応する配列の数を求めることにより、このアクセスによって参照されると予測される前記予測参照ページ数を求めるステップである、
データベース装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース装置およびデータベース装置の制御方法に関する。
【背景技術】
【０００２】
記憶装置を有するデータベース装置は、記憶装置の記憶容量の削減や高速性能を求められる。このため、たとえば記憶装置に記憶されたデータへのアクセス速度を向上させるための種々の技術が開発されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２００９−４８４９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来のこの種の技術は、記憶装置のデータへのアクセス速度を向上させるために、記憶装置の内容を別の記憶装置にコピーしておくようになっており、複数のボリュームが必要となってしまう。
【０００５】
また、記憶装置のフォーマットには、レコード型や、レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型などがある。レコード型フォーマットおよびカラム分割型フォーマットのいずれのフォーマットがデータへのアクセス速度に優れているかは、ユーザのデータ利用方法によって異なる。ユーザが同一レコードのデータに対するアクセスを多く行う場合はレコード型のほうが優れている一方、ユーザが同一カラムのデータに対するアクセスを多く行う場合はカラム分割型のほうが優れているといえる。
【０００６】
しかし、レコード型フォーマットとカラム分割型フォーマットのいずれのフォーマットを採用するかは、記憶装置を使用する前に決定しておかなければならない。にもかかわらず、記憶装置が使用されてデータの記録が進むと、データの内容によっては当初決定したフォーマットが必ずしも現状に適したフォーマットであるとはいえなくなる場合がある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係るデータベース装置は、上述した課題を解決するために、ページ数取得部と、平均算出部と、見積もり部と、変更判定部と、フォーマット部とを備える。ページ数取得部は、レコード型と、レコード型の各レコードを構成する複数のカラムごとにページ分割するカラム分割型と、のいずれか一方のフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、参照されたデータが属する実参照ページの数である実参照ページ数を取得する。平均算出部は、記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、現在および過去に参照されたデータのレコード長の平均値を求めるとともに現在および過去に参照されたデータのカラム長の平均値を求める。見積もり部は、記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、記憶装置のフォーマットを他方のフォーマットとした場合においてこのアクセスによって参照されると予測される予測参照ページ数を求める。変更判定部は、実参照ページ数と予測参照ページ数とにもとづいて、記憶装置のフォーマットを他方のフォーマットに変更するか否かを判定する。フォーマット部は、変更判定部の判定結果に応じて記憶装置のフォーマットを他方のフォーマットに変更する。また、見積もり部は、記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、（ａ）記憶装置のフォーマットがレコード型であり他方のフォーマットがカラム分割型である場合は、レコード長の平均値、カラム長の平均値および全ページ数に応じた数の配列をカラムごとに用意し、実参照ページに対応する配列の数を求めることにより、このアクセスによって参照されると予測される予測参照ページ数を求める、または（ｂ）記憶装置のフォーマットがカラム分割型であり他方のフォーマットがレコード型である場合は、各カラムをレコード長の平均値およびカラム長の平均値に応じて分割し、この分割したカラムごとに配列を用意し、実参照ページに対応する配列の数を求めることにより、このアクセスによって参照されると予測される予測参照ページ数を求める。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係るデータベース装置の一例を示す全体構成図。
【図２】レコード型フォーマットおよびカラム分割型フォーマットの１ファイルの論理構造の一例を示す説明図。
【図３】レコード型フォーマットおよびカラム分割型フォーマットのファイルを構成するデータに対するアクセスの様子の一例を示す説明図。
【図４】レコード型フォーマットのファイルを構成するレコードのＩＤとカラム分割型フォーマットのファイルを構成するカラムのＩＤとの関係の一例を示す説明図。
【図５】データベースエンジンの詳細な構成の一例を示すブロック図。
【図６】図１に示すデータベース装置のＣＰＵにより、主記憶装置の使用が開始された後に、主記憶装置のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャート。
【図７】レコード型フォーマットにおけるページ、レコードおよびカラムの関係の一例を示す説明図。
【図８】（ａ）は図７に示すデータのカラム分割型フォーマットにおけるカラムａのページとカラムの関係の一例を示す説明図、（ｂ）はカラムｂのページとカラムの関係の一例を示す説明図。
【図９】現在のフォーマットがカラム分割型である場合にレコード型における予測参照ページ数を求める際に、同時に複数のカラムに対してアクセス要求があるものの、全てのカラムについて同一の配列結果が得られる場合の例について示す説明図。
【図１０】カラム分割型フォーマットからレコード型フォーマットへ段階的にフォーマット変更を行う場合において、ＩＤ１〜ＩＤ９０のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図。
【図１１】図１０に示す例のあと、さらにＩＤ１２０のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図。
【発明を実施するための形態】
【０００９】
本発明に係るデータベース装置およびデータベース装置の制御方法の実施の形態について、添付図面を参照して説明する。
【００１０】
図１は、本発明の一実施形態に係るデータベース装置１０の一例を示す全体構成図である。
【００１１】
データベース装置１０は、図１に示すように、データベースエンジン１１、表示部１２および入力部１３および主記憶装置１４を有する。
【００１２】
データベースエンジン１１は、主制御部２１と、レコード型エンジン２２と、カラム分割型エンジン２３とを有する。
【００１３】
主制御部２１は、ＣＰＵ３１および記憶部３２を有する。記憶部３２は、キャッシュメモリ３３と、不揮発性の記憶媒体により構成された不揮発性記憶部３４を有する。
【００１４】
レコード型エンジン２２およびカラム分割型エンジン２３は、いわゆるストレージエンジンである。レコード型エンジン２２およびカラム分割型エンジン２３は、たとえば、それぞれ主制御部２１のＣＰＵ３１が不揮発性記憶部３４に記憶されたプログラムを実行することにより実現される機能実現部として構成されてもよいし、それぞれＣＰＵ、ＲＡＭ、ＲＯＭなどを有するいわゆるワンチップマイクロコントローラにより構成されてもよい。なお、ＣＰＵ３１の機能実現部として構成される場合、見積もり式５１、６１は、たとえば記憶部３２に記憶されていればよい。
【００１５】
表示部１２は、たとえば液晶ディスプレイやＯＬＥＤ（Organic Light Emitting Diode）ディスプレイなどの一般的な表示出力装置により構成され、主制御部２１の制御に従って各種情報を表示する。
【００１６】
入力部１３は、たとえばキーボード、タッチパネル、テンキーなどの一般的な入力装置により構成され、ユーザの操作に対応した操作入力信号を主制御部２１に出力する。
【００１７】
主記憶装置１４は、磁気的もしくは光学的記録媒体または半導体メモリなどのＣＰＵ３１により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【００１８】
主記憶装置１４は、データベースエンジン１１によりレコード型フォーマットおよびカラム分割型フォーマットのいずれか１つのフォーマットでデータを記録される。
【００１９】
図２は、レコード型フォーマットおよびカラム分割型フォーマットの１ファイルの論理構造の一例を示す説明図である。
【００２０】
レコード型フォーマット（以下、レコード型という）およびカラム分割型フォーマット（以下、カラム分割型という）とも、１ファイルは、複数のページによって構成されるとともに、各ページは一定のサイズを有する。換言すれば、この一定のページサイズとページ数とを乗じることで、各ファイルのサイズを得ることができる。
【００２１】
図２に示すように、レコード型において、各ページは複数のレコードで構成され、各レコードは複数のカラムにより構成される。カラム分割型において、各ページは同一のカラムで構成される。なお、各カラムは、同一のカラムごとに固定長か可変長かを選択することができる。したがって、同一のカラムごとにカラム長が異なる場合がある。
【００２２】
データベースエンジン１１は、ページ単位でフォーマットを管理する。このページ単位のフォーマットの情報は、テーブルヘッダに記録されている。データベースエンジン１１は、ページにアクセスする際に、まずテーブルヘッダから各ページのフォーマットの情報を取得する。
【００２３】
図３は、レコード型フォーマットおよびカラム分割型フォーマットのファイルを構成するデータに対するアクセスの様子の一例を示す説明図である。また、図４は、レコード型フォーマットのファイルを構成するレコードのＩＤとカラム分割型フォーマットのファイルを構成するカラムのＩＤとの関係の一例を示す説明図である。
【００２４】
図４に示すように、レコード型のファイルを構成する各レコードにはＩＤが付加されるとよい。また、レコードを構成する各カラムにも、レコードのＩＤと同一のＩＤが付加されるとよい。図２−４に示す例では、レコード型においては１つのレコードは１つの行を構成するため、レコードのＩＤは行のＩＤ（rowid）と同一となる。
【００２５】
各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部１００は、データベース装置１０に対し、主記憶装置１４に記憶されたデータに対するアクセス要求を行う。アクセス部１００は、たとえばデータベース装置１０を内包するパーソナルコンピュータなどの情報処理装置のＣＰＵが各種アプリケーションプログラムを実行することにより実現されてもよいし、データベース装置１０にネットワークを介して接続された外部のパーソナルコンピュータなどの情報処理装置のＣＰＵが各種アプリケーションプログラムを実行することにより実現されてもよい。
【００２６】
たとえば、図２に示す例において、アクセス要求が“SELECT * FROM table where rowid=2”である場合を考える。この場合、図３に示すように、レコード型のファイルでは２行目のレコードが抽出される。このとき参照されるページ数は１ページである。一方、カラム分割型のファイルでは参照されるページ数は３ページである。
【００２７】
他方、図２に示す例において、アクセス要求が“SELECT name FROM table”である場合を考える。この場合、図３に示すように、レコード型のファイルでは１列目のレコードが抽出され、このとき参照されるページ数は３ページである。一方、カラム分割型のファイルでは参照されるページ数は１ページである。
【００２８】
参照されるページ数が少ないほうが、データアクセス速度が速いといえる。しかし、図３に示すように、レコード型フォーマットおよびカラム分割型フォーマットのいずれのフォーマットがデータへのアクセス速度に優れているか、すなわちいずれのフォーマットが少ない参照ページ数ですむかは、アクセス内容に応じて異なる。このため、いずれのフォーマットが少ない参照ページ数ですむかは、ユーザのデータの利用傾向に応じて異なると考えられる。
【００２９】
そこで、本実施形態に係るデータベース装置１０は、現在のフォーマットにおいて実際に参照されたページの数である実参照ページ数を蓄積するとともに、他のフォーマットであった場合に同一のアクセスで参照されていたと予測されるページの数である予測参照ページ数を蓄積することで、主記憶装置１４へのデータの蓄積やデータの更新が進んだ後でも、ユーザの利用傾向を反映しつつデータへのアクセス速度を向上させるために最も適したフォーマットに主記憶装置１４の各ページのフォーマットを変更する。
【００３０】
図５は、データベースエンジン１１の詳細な構成の一例を示すブロック図である。
【００３１】
主制御部２１のＣＰＵ３１は、不揮発性記憶部３４に記憶されたプログラムおよびこのプログラムの実行のために必要なデータをキャッシュメモリ３３へロードし、このプログラムに従って、主記憶装置１４の使用が開始された後に、主記憶装置１４のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する処理を実行する。
【００３２】
キャッシュメモリ３３は、ＣＰＵ３１が実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。また、キャッシュメモリ３３は、主記憶装置１４に記憶されたデータの一部を一時的に記憶する。
【００３３】
不揮発性記憶部３４は、データベース装置１０の起動プログラムや、プログラムを実行するために必要な各種データを記憶する。
【００３４】
なお、不揮発性記憶部３４は、磁気的もしくは光学的記録媒体または半導体メモリなどの、ＣＰＵ３１により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【００３５】
ＣＰＵ３１は、プログラムによって、少なくともアクセス内容解析部４１、読み書き部４２、ページ数取得部４３、平均算出部４４、見積もり部４５および変更判定部４６として機能する。この各部４１〜４６は、キャッシュメモリ３３の所要のワークエリアをデータの一時的な格納場所として利用する。
【００３６】
レコード型エンジン２２は、見積もり式５１を記憶しているとともに、フォーマット部５２を有する。
【００３７】
見積もり式５１は、主記憶装置１４のフォーマットがカラム分割型である場合に、主記憶装置１４のフォーマットをレコード型とした場合における予測参照ページ数を算出するための式である。
【００３８】
フォーマット部５２は、変更判定部４６により制御されて、主記憶装置１４のフォーマットをページごとにレコード型フォーマットに変更する機能を有する。
【００３９】
カラム分割型エンジン２３は、見積もり式６１を記憶しているとともに、フォーマット部６２を有する。
【００４０】
見積もり式６１は、主記憶装置１４のフォーマットがレコード型である場合に、主記憶装置１４のフォーマットをカラム分割型とした場合における予測参照ページ数を算出するための式である。
【００４１】
フォーマット部６２は、変更判定部４６により制御されて、主記憶装置１４のフォーマットをページごとにカラム分割型フォーマットに変更する機能を有する。
【００４２】
アクセス内容解析部４１は、各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部１００から主記憶装置１４に記憶されたデータに対するアクセス要求を受けるごとに（アクセスがあるごとに）、アクセス内容を解析する。たとえばアクセスがＳＱＬ文を用いて行われる場合、アクセス内容解析部４１は、ＳＱＬ文からアクセス内容を解析する。
【００４３】
読み書き部４２は、アクセス内容に応じて主記憶装置１４に対してデータの読み書きを行うとともに、必要に応じてデータをキャッシュメモリ３３に格納する。
【００４４】
ページ数取得部４３は、アクセスがあるごとに、アクセス内容解析部４１により解析されたアクセス内容から今回アクセスされるページ数である実参照ページ数の情報を取得する。そして、ページ数取得部４３は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４から実参照ページ数の積算値を読み出し、この今回のアクセスでの実参照ページ数をさらに積算して新たな積算値とし、記憶部３２に記憶させる。
【００４５】
また、ページ数取得部４３は、アクセスがあるごとに、アクセス内容解析部４１により解析されたアクセス内容から今回アクセスされるデータのレコード長およびカラムのカラム長を取得して平均算出部４４に与える。たとえば、アクセスがＳＱＬ文を用いて行われる場合、アクセス内容解析部４１は、ＳＱＬ文にもとづいて今回のアクセスにおける実参照ページ数、レコード長およびカラム長の情報を抽出する。このとき、ＳＱＬ文そのものを平均算出部４４に与える必要はない。
【００４６】
平均算出部４４は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４に記憶されたこれまでのアクセスにおけるレコード長の平均値の情報を読みだす。そして、ページ数取得部４３から受けた今回アクセスされるデータのレコード長とこれまでのアクセスにおけるレコード長の平均値とを平均して新たに現在の平均値を算出して記憶部３２の平均値を更新する。
【００４７】
また、平均算出部４４は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４に記憶されたこれまでのアクセスにおけるカラム長の平均値の情報を読みだす。そして、ページ数取得部４３から受けた今回アクセスされるデータのカラム長とこれまでのアクセスにおけるカラム長の平均値とを平均して新たに現在の平均値を算出して記憶部３２の平均値を更新する。
【００４８】
見積もり部４５は、記憶部３２からレコード長の現在の平均値およびカラム長の現在の平均値の情報を取得する。そして、現在のフォーマット（たとえばレコード型フォーマット）とは異なる他方のフォーマット（たとえばカラム分割型フォーマット）の見積もり式（たとえば見積もり式６１）を用いて、レコード長の現在の平均値およびカラム長の現在の平均値にもとづいて、主記憶装置１４のフォーマットを現在のフォーマットとは異なる他方のフォーマットとした場合における、今回のアクセスでの予測参照ページ数を求める。そして、見積もり部４５は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４から予測参照ページ数の積算値を読出し、この今回のアクセスでの予測参照ページ数をさらに積算して新たな積算値とし、記憶部３２に記憶させる。
【００４９】
変更判定部４６は、記憶部３２に記憶された実参照ページ数の積算値と予測参照ページ数の積算値とにもとづいて、主記憶装置１４のフォーマットをどちらのフォーマットにすると利便性が高いかを判定する。判定結果のフォーマットが現在のフォーマットと異なる場合は、変更判定部４６は、主記憶装置１４のフォーマットを判定結果のフォーマットに変更するようフォーマット部５２および６２のいずれかに指示する。
【００５０】
なお、主記憶装置１４に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合には、変更判定部４６は、主記憶装置１４のフォーマットを変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を一旦記憶部３２に格納しておくとよい。この場合、変更判定部４６は、たとえばあらかじめ定めた所定のタイミング（たとえば主記憶装置１４の断片化を解消するための再編成を実行するタイミングなど）やユーザによる入力部１３を介したフォーマット変更指示をうけたタイミングで、記憶部３２にフォーマットを変更すべき旨の情報が格納されているか否かを確認し、格納されていれば、およびどのフォーマットに変更するかを示す情報に応じてフォーマット部５２および６２のいずれかに主記憶装置１４のフォーマットを変更するよう指示するとよい。
【００５１】
次に、本実施形態に係るデータベース装置およびデータベース装置の制御方法の動作の一例について説明する。
【００５２】
図６は、図１に示すデータベース装置１０のＣＰＵ３１により、主記憶装置１４の使用が開始された後に、主記憶装置１４のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャートである。図６において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００５３】
この手順は、アクセス部１００から主記憶装置１４に記憶されたデータに対するアクセス要求を受けた時点でスタートとなる。
【００５４】
まず、ステップＳ１において、アクセス内容解析部４１は、アクセス部１００から主記憶装置１４に記憶されたデータに対するアクセス要求を受け、アクセス内容を解析する。
【００５５】
次に、ステップＳ２において、ページ数取得部４３は、アクセス内容解析部４１により解析されたアクセス内容から今回アクセスされるページ数である実参照ページ数の情報を取得する。そして、ページ数取得部４３は、記憶部３２から実参照ページ数の積算値を読み出し、この今回のアクセスでの実参照ページ数をさらに積算して新たな積算値とし、記憶部３２に記憶させる。また、ページ数取得部４３は、アクセス内容解析部４１により解析されたアクセス内容から今回アクセスされるデータのレコード長およびカラムのカラム長を取得して平均算出部４４に与える。
【００５６】
次に、ステップＳ３において、平均算出部４４は、記憶部３２に記憶されたこれまでのアクセスにおけるレコード長の平均値の情報を読みだす。そして、ページ数取得部４３から受けた今回アクセスされるデータのレコード長とこれまでのアクセスにおけるレコード長の平均値とを平均して新たに現在の平均値を算出して記憶部３２の平均値を更新する。
【００５７】
次に、ステップＳ４において、平均算出部４４は、記憶部３２に記憶されたこれまでのアクセスにおけるカラム長の平均値の情報を読みだす。そして、ページ数取得部４３から受けた今回アクセスされるデータのカラム長とこれまでのアクセスにおけるカラム長の平均値とを平均して新たに現在の平均値を算出して記憶部３２の平均値を更新する。
【００５８】
次に、ステップＳ５において、見積もり部４５は、記憶部３２からレコード長の現在の平均値の情報を取得するとともに、カラム長の現在の平均値の情報を取得し、現在のフォーマットとは異なる他方のフォーマットの見積もり式を用いて、主記憶装置１４のフォーマットを現在のフォーマットとは異なる他方のフォーマットとした場合における、今回のアクセスでの予測参照ページ数を求める。そして、見積もり部４５は、記憶部３２から予測参照ページ数の積算値を読出し、この今回のアクセスでの予測参照ページ数をさらに積算して新たな積算値とし、記憶部３２に記憶させる。
【００５９】
次に、ステップＳ６において、変更判定部４６は、記憶部３２に記憶された実参照ページ数の積算値と予測参照ページ数の積算値とにもとづいて、主記憶装置１４のフォーマットをどちらのフォーマットにすると利便性が高いかを判定する。そして、判定結果のフォーマットが現在のフォーマットと異なるか否かをもって、主記憶装置１４のフォーマットを判定結果のフォーマットに変更すべきか否かを判定する。
【００６０】
フォーマットを変更すべき場合は、変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を記憶部３２に格納する（ステップＳ７）。その後、所定のタイミングで記憶部３２にフォーマットを変更すべき旨の情報が格納されていることを確認し、どのフォーマットに変更するかを示す情報に応じてフォーマット部５２および６２のいずれかに主記憶装置１４のフォーマットを変更するよう指示し、フォーマット部５２および６２のいずれかによって主記憶装置１４のフォーマットが変更される（ステップＳ８）。一方、フォーマットを変更すべきでない場合（ステップＳ６のＮＯ）、すなわち現在のフォーマットが最も利便性が高い場合は、一連の手順は終了となる。
【００６１】
なお、ステップＳ７は、主記憶装置１４に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合に実行されるとよいが、実行されずともよい。ステップＳ７を実行しない場合は、変更判定部４６は、主記憶装置１４のフォーマットを変更すべきと判定すると、速やかにフォーマット部５２および６２のいずれかにフォーマットを変更するよう指示し、ステップＳ８に移行する。
【００６２】
以上の手順により、主記憶装置１４の使用が開始された後に、主記憶装置１４のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【００６３】
ここで、図６のステップＳ５で見積もり部４５により実行される予測参照ページ数の算出方法について説明する。
【００６４】
図７は、レコード型フォーマットにおけるページ、レコードおよびカラムの関係の一例を示す説明図である。図７には、１レコードの平均長Ｘが２０、レコード数が１００、１ページの大きさが１０００であり、各レコードが４つのカラムａ、ｂ、ｃ、ｄで構成され、カラムａ、ｂ、ｃ、ｄの平均長Ｙａ、Ｙｂ、Ｙｃ、Ｙｄがそれぞれ４、５、３、８である場合の例について示した。
【００６５】
また、図８（ａ）は、図７に示すデータのカラム分割型フォーマットにおけるカラムａのページとカラムの関係の一例を示す説明図、（ｂ）はカラムｂのページとカラムの関係の一例を示す説明図である。
【００６６】
図７に示すように、１レコードの平均長Ｘが２０、１ページの大きさが１０００である場合、レコード型では、１ページには５０件のレコードが格納される。ＩＤｎのレコードを構成するカラムをそれぞれａｎ、ｂｎ、ｃｎ、ｄｎとすると、たとえば１ページ目にはａ１〜ｄ１で構成されるレコードからａ５０〜ｄ５０で構成されるレコードまでが格納される。
【００６７】
一方、図８（ａ）に示すように、カラム平均長Ｙａが４のカラムａは、カラム分割型では１ページに２５０件が格納され、たとえば１ページ目にはａ１〜ａ２５０が格納される。また、図８（ｂ）に示すように、カラム平均長Ｙｂが５のカラムｂは、カラム分割型では１ページに２００件が格納され、たとえば１ページ目にはｂ１〜ｂ２００が格納される。
【００６８】
まず、現在のフォーマットがレコード型である場合に、カラム分割型における予測参照ページ数を求める方法について説明する。
【００６９】
図７および８に示す例において、現在のフォーマットがレコード型である場合に、アクセス要求が“SELECT a, b FROM table”である場合を考える。このアクセス要求はカラムａ１〜１０００とカラムｂ１〜１０００を抽出する要求であるため、レコード型の１行目および２行目が抽出され、このアクセスにおける実参照ページ数は２０である（図７参照）。一方、主記憶装置１４のフォーマットがカラム分割型であると仮定すると、図８のようなデータ構造となる。このため、このアクセス要求における予測参照ページ数は、カラムａについて４ページ（図８（ａ）参照）、カラムｂについて５ページ（図８（ｂ）参照）の合計９ページである。
【００７０】
カラム分割型のカラムａの全５ページ中の１ページ目には、ａ１〜ａ２５０が格納される。一方、レコード型では、ａ１〜ａ２５０は全２０ページ中の１ページ目から５ページ目にかけて５０件ずつ格納される。このため、たとえばレコード型で全２０ページ中の１ページ目から５ページ目が参照された場合は、カラム分割型では全５ページ中の１ページ目が参照されることが予測できる。よって、レコード型でＮページ目を開いた場合は、カラム分割型では（Ｎ／５）＋１ページ目（整数部分のみ）が参照されると予測できる。
【００７１】
したがって、カラムごとに（「カラムの平均長Ｙ」／「レコードの平均長Ｘ」）・「レコード型のページ数」の数の配列を用意し、Ｎページ目が参照された場合はＮ／（（Ｘ／Ｙ）＋１）番目の配列に１を立てればよい。そして、カラムごとに１が立っている配列の数を取得し、すべてのカラムについて加算することで、カラム分割型であると仮定した場合における予測参照ページ数を求めることができる。
【００７２】
たとえば図７および図８に示す例では、カラムａについては（Ｙａ／Ｘ）・ページ数＝（４／２０）・２０＝４つの配列を用意し、ｎ番目の配列にページ型の１＋（Ｘ／Ｙａ）（ｎ−１）ページ目から（Ｘ／Ｙａ）・ｎページ目、すなわち１＋５（ｎ−１）ページ目から５ｎページ目を割り当てればよく（ｎ＝１〜４）、カラムｂについては、（Ｙｂ／Ｘ）・ページ数＝（５／２０）・２０＝５つの配列を用意し、ｍ番目の配列にページ型の１＋（Ｘ／Ｙｂ）（ｍ−１）ページ目から（Ｘ／Ｙｂ）・ｍページ目、すなわち１＋４（ｍ−１）ページ目から４ｍページ目を割り当てればよい（ｍ＝１〜５）。
【００７３】
次に、現在のフォーマットがカラム分割型である場合に、レコード型における予測参照ページ数を求める方法について説明する。
【００７４】
図７および８に示す例において、カラムａの１ページ目はレコード型の１〜５ページ目に対応する。また、カラムｂの１ページ目はレコード型の１〜４ページ目に対応する。
【００７５】
このため、各カラムを（レコード平均長Ｘ／カラム平均長Ｙ）で分割し、分割カラムごとに配列を用意し、参照された分割カラムの配列に１を立てればよい。そして、１が立っている配列の数を加算することで、レコード型であると仮定した場合における予測参照ページ数を求めることができる。
【００７６】
図９は、現在のフォーマットがカラム分割型である場合にレコード型における予測参照ページ数を求める際に、同時に複数のカラムに対してアクセス要求があるものの、全てのカラムについて同一の配列結果が得られる場合の例について示す説明図である。
【００７７】
たとえば、“SELECT a, b FROM table where 条件”などのアクセスでは、同時に複数のカラムに対してアクセス要求があるものの、全てのカラムについて同一の配列結果が得られる（図９参照）。この場合、いずれか１つのカラムにのみ注目すればよい。
【００７８】
このようにして予測参照ページ数を求めた後、図６のステップＳ６で変更判定部４６により主記憶装置１４のフォーマットをどちらのフォーマットにすると利便性が高いかを判定する処理が実行される。このとき、変更判定部４６は、簡単には、記憶部３２に記憶された実参照ページ数の積算値が予測参照ページ数の積算値より大きいとフォーマットを変更すべきと判定すればよい。
【００７９】
また、変更判定部４６は、実参照ページ数の積算値が予測参照ページ数の積算値より大きく、かつ互いの積算値の差が所定の閾値よりも大きい場合にフォーマットを変更すべきと判定してもよい。所定の閾値を用いる場合、互いの積算値の差が小さい場合に頻繁に大小が入れ替わることによりフォーマット変更が繰り返されてしまう弊害を未然に防ぐことができる。また、互いの積算値の差に代えて、たとえば実参照ページ数の積算値に所定の数値（たとえば０．６など）を乗じた数が予測参照ページ数の積算値よりも大きい場合に、主記憶装置１４のフォーマットを変更すべきと判定してもよい。
【００８０】
図１０は、カラム分割型フォーマットからレコード型フォーマットへ段階的にフォーマット変更を行う場合において、ＩＤ１〜ＩＤ９０のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図である。また、図１１は、図１０に示す例のあと、さらにＩＤ１２０のデータまでレコード型フォーマットへの変更が終了した様子の一例を示す説明図である。
【００８１】
フォーマット部５２および６２は、変更判定部４６に制御されて主記憶装置１４のフォーマットを変更する。このとき、フォーマットの変更は、図１０および図１１に示すように段階的に実行されてもよい。
【００８２】
たとえば、現在のフォーマットがカラム分割型フォーマットであり、変更判定部４６からフォーマット部５２に対してレコード型フォーマットに変更するよう指示された場合を考える。この場合、フォーマット部５２は、たとえばレコード型フォーマットのページ単位で段階的にフォーマットの変更を行う。
【００８３】
たとえば、図１０に示すように、レコード型フォーマットの１ページあたりのデータ数が３０であり、ＩＤ１〜９０のデータまでレコード型フォーマットへの変更が終了した場合、フォーマット部５２は、テーブルヘッダにその旨の情報を格納する。このため、たとえばアクセス部１００からＩＤ８０のデータに対するアクセス要求があると、読み書き部４２はテーブルヘッダを確認し、レコード型フォーマットで主記憶装置１４に記憶されたＩＤ８０のデータへアクセスする。一方、アクセス部１００からＩＤ１２０のデータに対するアクセス要求があると、読み書き部４２はテーブルヘッダを確認し、カラム分割型フォーマットで主記憶装置１４に記憶されたＩＤ１２０のデータへアクセスする。
【００８４】
次に、ＩＤ９１〜１２０のデータで構成されるページのレコード型フォーマットへの変更が終了すると、図１１に示すように、フォーマット部５２は、テーブルヘッダにその旨の情報を格納する。このとき、カラム分割型フォーマット側のページのうち、ページを構成する全てのデータがレコード型フォーマットに変更されたページについては、削除してかまわない。
【００８５】
このように、フォーマット部５２および６２は、現在のフォーマットとは異なる他方のフォーマットのページ単位で段階的にフォーマットの変更を行ってもよい。
【００８６】
本実施形態に係るデータベース装置１０によれば、主記憶装置１４の使用が開始された後であっても、データの使用履歴にもとづいて他方のフォーマットでの予測参照ページ数を求めることができ、主記憶装置１４のデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【００８７】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００８８】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【００８９】
１０  データベース装置
１１  データベースエンジン
１４  主記憶装置
２２  レコード型エンジン
２３  カラム分割型エンジン
３２  記憶部
３３  キャッシュメモリ
４１  アクセス内容解析部
４３  ページ数取得部
４４  平均算出部
４５  見積もり部
４６  変更判定部
５１、６１  見積もり式
５２、６２  フォーマット部
【図１】
0005813458.tif 000002
【図２】
0005813458.tif 000003
【図３】
0005813458.tif 000004
【図４】
0005813458.tif 000005
【図５】
0005813458.tif 000006
【図６】
0005813458.tif 000007
【図７】
0005813458.tif 000008
【図８】
0005813458.tif 000009
【図９】
0005813458.tif 000010
【図１０】
0005813458.tif 000011
【図１１】
0005813458.tif 000012