(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおける、Ｂ木の最適化についての方法において、前記Ｂ木は複数の固定サイズのページを備え、ある量のデータが前記Ｂ木の各ページに記憶される方法であって、
前記コンピュータシステムが前記Ｂ木の活動統計を提供する段階であって、前記活動統計はある時間期間にわたりＢ木において発生した少なくとも活動の量を表すものである段階と、
前記活動統計が、一定のしきい値より少ない活動が前記Ｂ木内に発生したことを指示する場合、前記コンピュータシステムが前記Ｂ木を静的として分類する段階と、
前記活動統計が、一定のしきい値より多い活動が前記Ｂ木内に発生したことを指示する場合、前記コンピュータシステムが前記Ｂ木を動的として分類する段階と、
前記コンピュータシステムが、前記Ｂ木が静的として分類されるかまたは動的として分類されるかに応じて前記Ｂ木を再編成すべきか否かを決定する段階と、
前記コンピュータシステムにより前記Ｂ木を再編成すべきことが決定された場合には、前記コンピュータシステムが、前記Ｂ木の各ページに記憶させるべきデータの量を示す最適充填率を計算し、該計算された量のデータを前記Ｂ木の各ページに記憶させることによって前記コンピュータシステムが前記Ｂ木を再編成する段階とを備え、
前記Ｂ木を再編成すべきか否かを決定する段階は、
静的なＢ木の各ページに記憶させるデータの量である第１の値を決定する段階と、
動的なＢ木の各ページに記憶させるデータの量である第２の値を決定する段階と、
前記Ｂ木が静的として分類され、前記Ｂ木の各ページに少なくとも前記第１の値より少ない量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する段階と、
前記Ｂ木が動的として分類され、前記Ｂ木の各ページに少なくとも前記第２の値より多い量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する段階と
を含むことを特徴とする方法。
【請求項２】
前記コンピュータシステムが前記Ｂ木を再編成すべきか否かを決定する段階は、
Ｂ木内のページの合計数を決定する段階と、
ある時間内にＢ木に付加されたページの合計数を決定する段階と、
上記時間内にＢ木から削除されたページの合計数を決定する段階と、
Ｂ木内のページの合計数が所定の最小数より多く、かつ
上記時間内に前記Ｂ木に付加されたページの合計数に付加係数を乗じた値と、上記時間内にＢ木から削除されたページの合計数に削除係数を乗じた値との合計が、ページの合計数よりも大きい
場合にはその前記Ｂ木を再編成すべきであると決定する段階と
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンピュータシステムが前記Ｂ木を再編成すべきか否かを決定する段階は、
前記Ｂ木内のページの合計数を決定する段階と、
ある時間内にＢ木から削除されたキー値の個数の合計を決定する段階であって、前記キー値はＢ木の各ページに記憶されるデータを索引付けるものである段階と、
最後の再編成以降の時間量が所定の最小時間量よりも大きく、かつ上記時間内に前記Ｂ木から削除されたキー値の個数の合計を前記Ｂ木内のページの合計数で除した値が所定のデータ削除係数よりも大きい場合にはそのＢ木を再編成すべきであると決定する段階と
を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記Ｂ木が以前に再編成されている場合における、前記コンピュータシステムが前記Ｂ木を再編成すべきか否かを決定する段階は、
先の再編成以降の経過時間量を決定する段階と、
先の再編成時に前記Ｂ木の各ページに記憶されたデータの量を決定する段階と、
前記Ｂ木の各ページに記憶させるべきデータの量を決定する段階と、
最後の再編成以降の経過時間量が所定の最小時間量よりも大きく、かつ
Ｂ木の各ページに記憶させるべきデータの量が先の再編成時にＢ木の各ページに記憶されたデータの量よりも多い
場合にはそのＢ木を再編成すべきであると決定する段階と
を含むことを特徴とする請求項１に記載の方法。
【請求項５】
コンピュータシステムにおける、Ｂ木の最適化についての方法において、前記Ｂ木は複数の固定サイズのページを備え、ある量のデータが前記Ｂ木の各ページに記憶される方法であって、
前記コンピュータシステムが前記Ｂ木の活動統計を提供する段階であって、前記活動統計は前記Ｂ木が静的であるか、すなわち、一定のしきい値より少ない活動が前記Ｂ木内に発生したか、もしくは前記Ｂ木が動的であるか、すなわち、前記一定のしきい値より多い活動が前記Ｂ木内に発生したかを指示するものである段階と、
前記コンピュータシステムは前記活動統計により指示される前記Ｂ木が静的であるかもしくは動的であるかに応じて前記Ｂ木を再編成すべきか否かを決定する段階と、
前記コンピュータシステムにより前記Ｂ木を再編成すべきであることが決定された場合、前記コンピュータシステムは、前記Ｂ木の各ページに記憶させるべきデータの量を示す最適充填率を計算し、前記計算された量のデータを前記Ｂ木の各ページに記憶させることによって前記Ｂ木を再編成する段階とを備え、
前記Ｂ木を再編成すべきか否かを決定する段階は、
静的なＢ木の各ページに記憶させるデータの量である第１の値を決定する段階と、
動的なＢ木の各ページに記憶させるデータの量である第２の値を決定する段階と、
前記Ｂ木が静的として分類され、前記Ｂ木の各ページに少なくとも前記第１の値より少ない量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する段階と、
前記Ｂ木が動的として分類され、前記Ｂ木の各ページに少なくとも前記第２の値より多い量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する段階と
を含むことを特徴とする方法。
【請求項６】
Ｂ木の最適化用のコンピュータシステムであって、前記Ｂ木は複数の固定サイズのページを備え、ある量のデータが前記Ｂ木の各ページに記憶され、前記コンピュータシステムは、
前記Ｂ木の活動統計を提供する監視機構であって、前記活動統計は前記Ｂ木が静的であるか、すなわち、一定のしきい値より少ない活動が前記Ｂ木内に発生したか、もしくは前記Ｂ木が動的であるか、すなわち、前記一定のしきい値より多い活動が前記Ｂ木内に発生したか、を指示するものである監視機構と、
前記活動統計により指示される前記Ｂ木が静的であるかもしくは動的であるかに応じて前記Ｂ木を再編成すべきか否かを決定する最適化機構と、
前記最適化機構により前記Ｂ木を再編成すべきであることが決定された場合、前記Ｂ木の各ページに記憶させるべきデータの量を示す最適充填率を計算し、前記計算された量のデータを前記Ｂ木の各ページに記憶させることによって前記Ｂ木を再編成する再編成機構とを備え、
前記Ｂ木を再編成すべきか否かを決定する最適化機構は、
静的なＢ木の各ページに記憶させるデータの量である第１の値を決定する機構と、
動的なＢ木の各ページに記憶させるデータの量である第２の値を決定する機構と、
前記Ｂ木が静的として分類され、前記Ｂ木の各ページに少なくとも前記第１の値より少ない量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する機構と、
前記Ｂ木が動的として分類され、前記Ｂ木の各ページに少なくとも前記第２の値より多い量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する機構と
を含むことを特徴とするコンピュータシステム。
【請求項７】
Ｂ木の最適化用のコンピュータシステムであって、前記Ｂ木は複数の固定サイズのページを備え、ある量のデータが前記Ｂ木の各ページに記憶され、前記コンピュータ装置は、
前記Ｂ木の活動統計を提供する監視機構であって、前記活動統計はある時間期間にわたりＢ木において発生した少なくとも活動の量を表すものである監視機構と、
前記活動統計が、一定のしきい値より少ない活動が前記Ｂ木内に発生したことを指示する場合、前記Ｂ木を静的として分類し、前記活動統計が、前記一定のしきい値より多い活動が前記Ｂ木内に発生したことを指示する場合、前記Ｂ木を動的として分類する分類機構と、
前記分類機構により前記Ｂ木が静的として分類されるかまたは動的として分類されるかに応じて前記Ｂ木を再編成すべきか決定する最適化機構と、
前記最適化機構が前記Ｂ木を再編成すべきであることを決定した場合には、前記Ｂ木の各ページに記憶させるべきデータの量を示す最適充填率を計算し、前記計算された量のデータを前記Ｂ木の各ページに記憶させることによって前記Ｂ木を再編成する再編成機構とを備え、
前記Ｂ木を再編成すべきか決定する最適化機構は、
静的なＢ木の各ページに記憶させるデータの量である第１の値を決定する機構と、
動的なＢ木の各ページに記憶させるデータの量である第２の値を決定する機構と、
前記Ｂ木が静的として分類され、前記Ｂ木の各ページに少なくとも前記第１の値より少ない量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する機構と、
前記Ｂ木が動的として分類され、前記Ｂ木の各ページに少なくとも前記第２の値より多い量のデータが記憶されている場合には、該Ｂ木を再編成すべきであると決定する機構と
を含むことを特徴とするコンピュータシステム。
【請求項８】
前記活動の量は、最後の再編成以降に付加されたページの数を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記活動の量は、最後の再編成以降に削除されたページの数を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記活動の量は、最後の再編成以降に削除されたキー値の数を含むことを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般的にはデータを記憶するためのコンピュータ方法及び装置に関し、具体的にはＢ木（即ち、平衡多方向探索樹）を最適化するためのコンピュータ方法及び装置に関する。
【０００２】
【従来の技術】
補助記憶装置に記憶されているデータの特定のユニット（例えば、データベース内のデータレコード、もしくは登録簿（ディレクトリ）内のファイル）を迅速に捜し出すために、公知のＢ木のような普通の記憶装置構造が使用される。Ｂ木はデータのユニットを指し示すポインタをクラスタ化した手段を構成しているので、ユニットを迅速に捜し出すことができる。
図１は、データベース索引を記憶する普通のＢ木１００のブロック線図である。Ｂ木１００は根ノード１０１と、内部ノード１０２、１０３、１０４と、葉ノード１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２及び１１３とを有している。根ノード１０１は樹木１００の頂上にあるノードであり、葉ノード１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２及び１１３は樹木の底にあるノードであり、そして内部ノード１０２、１０３及び１０４は全て、根ノードと葉ノードとの間にあるノードである。
根ノード１０１は、１またはそれ以上のキー値と、内部ノード１０２、１０３及び１０４を指し示す２またはそれ以上のポインタとを含んでいる。各内部ノード１０２、１０３及び１０４は、１またはそれ以上のキー値と、下位レベルの内部ノード、もしくは葉ノード１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２及び１１３を指し示す２またはそれ以上のポインタとを含んでいる。各葉ノード１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２及び１１３は複数のキー値と、これらのキー値によって索引付けられたデータのユニットを指し示す複数のポインタとを含んでいる。例えば、葉ノード１０７はキー値“４０”と、このキー値“４０”に対応するデータレコード１１９ポインタ１１８とを含む。
【０００３】
ノードは、それらの次に下位のレベルのノード（子ノードと考えられる）に対する親ノードと考えられる。葉ノードは子ノードを有していない。例えば、内部ノード１０２は根ノード１０１に対しては子ノードであるが、葉ノード１０５、１０６、１０７に対しては親ノードである。
Ｂ木内においてどのように探索が遂行されるかは、一つの例を考えると理解し易い。図１のＢ木があるデータベースのための索引であり、各ノード内のキー値は、データベースファイルのデータレコードにファイルされているキー値に対応するものとする。“４０”のキー値を有するデータレコードを捜し出すためには、探索ルーチンはポインタ１１４を根ノード１０１から内部ノード１０２まで辿る。次に、探索ルーチンはポインタ１１７を内部ノード１０２から葉ノード１０７まで辿る。次いで探索ルーチンは、キー値“４０”を見出すまで葉ノード１０７内のキー値をあまねく探索する。最後に、探索ルーチンはポインタ１１８を葉ノード１０７からデータレコード１１９まで辿る。
Ｂ木及びＢ木保守アルゴリズムの包括的な説明に関しては、Cormen, Introduction to Algorithms ( The MIT Press 1991 ), pp. 381-399 を参照されたい。
【０００４】
Ｂ木は補助記憶装置内に記憶され、データは典型的には補助記憶装置から主メモリへ一時に１ページずつ転送されるから、一般的な最適化とは、Ｂ木内の各ノードが１つのページを占めるようにすることである。これにより、あるノード内の全てのキー値を読み取るのに補助記憶装置アクセスを１回だけ遂行すればよいことになる。
あるノードが１つのページ全体を占めることを許容される場合には、ノード及びページが一杯になるまで、即ちそのページ内に使用可能な空間が無くなるまでキー値及びポインタをそのノードに付加する。一杯になったノードにキー値を付加するためには、そのノードを２つのノードに分割し（各ノードがキー値及びポインタの半分を含む）、Ｂ木に付加的なページを割り当て、そして２つのノードの一方を新しいぺージに記憶させる。他方のノードは付加的なページに記憶させる。キー値及び他方のノードを指し示すポインタは、分割されたノードの親ノードに付加される。親ノードが一杯になると、その親ノードも同一の技術を使用して分割される。分割は根ノードまで伝播することができ、根ノードが分割されるとそのＢ木内に新しいレベルが作られる。一杯になったノードに１つのキー値を付加しようとすると、あるページが分割されてＢ木には半分が空の２つのページが残される。
【０００５】
Ｂ木の通常の活動は、キー値の付加及び削除を含む。前述したように、キー値を付加することによってＢ木に付加的なページがもたらされることがあり得る。これらの付加的なページは常に最大可能な数のキー値を含んでいないので、貴重な記憶空間が浪費されることになる。更に、キー値の削除によって、最適数よりも少ない数のキー値が記憶されているページが残され得る。
【０００６】
【発明の概要】
本発明によれば、命令を実行する中央処理装置と、情報を記憶する記憶装置とを有するコンピュータシステムにおいてある方法が実行される。本発明のこの方法によれば、Ｂ木オプティマイザのための規約が提供される。Ｂ木オプティマイザはＢ木内で発生する活動を監視する。この活動は、キー値のＢ木への付加及びＢ木からの削除を含む。Ｂ木オプティマイザはＢ木内において発生する活動の量及び型を監視した後に、そのＢ木を再編成すべきか否かを決定する。そのＢ木を再編成すべきであることが決定されると、Ｂ木オプティマイザはそのＢ木のページのための最適充填率を計算する。最適充填率は、Ｂ木内において先に検出された活動の量及び型に依存してＢ木内の各ページを充填すべき百分率である。最適充填率を計算した後に、Ｂ木オプティマイザはＢ木を再編成する。
Ｂ木オプティマイザは、Ｂ木を再編成すべきか否かを決定するのに幾つかの方法を使用する。一つの方法は、Ｂ木が最小数のページからなり、且つ所与の時間中にＢ木内において実質的な量のページ付加及びページ削除が発生した時に、そのＢ木は再編成すべきであると決定することを含む。別の方法は、最後の再編成以降の時間量が所定の最小時間量よりも大きく、且つ実質的な数のキー値削除が発生した時に、そのＢ木は再編成すべきであると決定することを含む。更に別の方法は、Ｂ木のための最適充填率を計算し、次いで最後の再編成以降の時間量が所定の最小時間量よりも大きく、且つ実際の充填率が先に決定された充填率よりも大きい時に、そのＢ木は再編成すべきであると決定することを含む。
【０００７】
【実施例】
本発明の好ましい実施例は、Ｂ木内で発生する活動の量及び型（例えばキー値及びページの付加及び削除）に従ってＢ木を自動的に再編成するＢ木オプティマイザ機構を提供する。Ｂ木オプティマイザはある時間中のＢ木内の活動の量及び型に基づいて、ページ分割を行う前にＢ木内のページを充填すべき最適量を決定し、次いで各ページが決定された最適量で充填されるようにＢ木を再編成する。各ページが充填される量をそのＢ木の充填率と言う。
図２は、本発明の好ましい実施例を実現するコンピュータシステム２００の好ましい実施例のブロック線図である。このコンピュータシステム２００は単なる例示に過ぎず、本発明を限定するものではないことを理解されたい。当業者ならば本発明を実現する他の適当なコンピュータシステム構成を知っていよう。コンピュータシステム２００は、補助記憶装置２０１、ランダムアクセスメモリ（ＲＡＭ）装置２０２、中央処理装置（ＣＰＵ）２０３、入力装置２０４、及び出力装置２０５を備えている。本発明により提供されるＢ木オプティマイザは、呼び出されるとＲＡＭ装置２０２内へロードされる。補助記憶装置２０１はある種のディスクシステムであることが好ましい。
【０００８】
ある時間中のＢ木内の活動の量は、そのＢ木が“静的”であるのか、もしくは“動的”であるのかを決定する。静的Ｂ木は、その時間中に多くのキー値が付加もしくは削除されなかった樹木であり、一方動的Ｂ木はその時間中に多くのキー値が付加もしくは削除された樹木である。静的Ｂ木ではページ分割は殆ど発生しないから、最適化とは静的Ｂ木内の各ページにできる限り多くのキー値を含ませることである。各ページにできる限り多くのキー値を記憶させることによって、静的Ｂ木の記憶空間は少なくてよくなる。反対に、動的Ｂ木では多くのキー値の付加及び削除が発生するので、最適化とは動的Ｂ木内の各ページに丁度充分なキー値を含ませ、ページを過度に屡々分割させることなく新しいキー値を付加できるようにすることである。
本発明の好ましい実施例によって提供されるＢ木オプティマイザは、最適充填率を計算する時にＢ木が静的であるか、もしくは動的であるかを配慮する。Ｂ木が静的であるのか、もしくは動的であるのかを決定するために、Ｂ木オプティマイザはＢ木内において発生する活動の量及び型に関する活動統計へのアクセスを有していなければならない。好ましい実施例では、以下の表Ａにリストしてあるような活動統計をＢ木保守アルゴリズムが提供する。これらの活動統計はＢ木の根ノード内の特別なブロックに記憶されている。Ｂ木オプティマイザは呼び出されると活動統計を含むこの特別なブロックを指し示すポインタを辿る。
【０００９】
表  Ａ
１．  Ｂ木内のページの数。
２．  最後の再編成以降に付加されたページの数。
３．  最後の再編成以降に削除されたページの数。
４．  最後の再編成の時点。
５．  最後の再編成以降に削除されたキー値の数。
６．  最後の再編成時の充填率。
表Ａにリストされている活動統計はカウンタ変数を使用して入手することができる。即ち、新しいページがＢ木に付加される度に、ページカウンタが増数（インクリメント）される。当業者ならば、他の方法を使用して活動統計を取得できることが理解されよう。
好ましい実施例では、キー値がＢ木に付加されるか、もしくはＢ木から削除されるとＢ木オプティマイザが呼び出される。当業者ならば、他の事象によってＢ木オプティマイザをトリガできることが理解されよう。
Ｂ木オプティマイザは、図３に示す流れ図の諸段階を遂行することによってＢ木を最適化する。段階３０２においてＢ木オプティマイザは、Ｂ木に関する活動統計を調べる。前述したようにＢ木オプティマイザは、呼び出されるとＢ木の根ノード内に記憶されている活動統計を指し示すポインタを辿る。Ｂ木に関する活動統計を調べた後に、段階３０４においてＢ木オプティマイザは、そのＢ木を再編成すべきか否かを決定する。当業者ならば、Ｂ木を再編成すべきか否かを決定するために種々の方法を使用することができることが理解されよう。好ましい実施例において使用されている再編成すべきか否かを決定する方法に関しては図４及び図５を参照して後述する。もしＢ木オプティマイザがそのＢ木を再編成すべきではないと決定すればプロセスは終了し、Ｂ木オプティマイザは再度呼び出されるまで待機する。
【００１０】
段階３０４において、もしＢ木オプティマイザがそのＢ木を再編成すべきであると決定すれば、段階３０６においてＢ木オプティマイザは、樹木内で発生した活動の量及び型に基づいてそのＢ木内のページに充填すべき最適量を計算する。この量は百分率で表され、充填率と称される。好ましい実施例において使用している最適充填率を計算する方法に関しては図６を参照して後述する。段階３０６において最適充填率を決定した後に段階３０８においてＢ木オプティマイザは、計算された最適充填率に従ってそのＢ木を再編成する。Ｂ木を再編成する好ましい実施例で使用している方法に関しては、図７を参照して後述する。
Ｂ木を再編成すべきか否かを決定するためにＢ木オプティマイザが遂行する諸段階を説明する。図４及び５の流れ図は、Ｂ木を再編成すべきか否かを決定するために好ましい実施例が使用している諸段階を表している。この方法は、Ｂ木が１ページより多くのページを含むか否かを決定するありふれた試験から開始され、次いでＢ木が静的かもしくは動的かを配慮する、より本質的な試験が続く。
【００１１】
最初の段階４０２においてＢ木オプティマイザは、そのＢ木の根ノードが葉ノードでもあるか否かを（即ち、そのＢ木が１ページだけを含んでいるのか否かを）決定し、もし葉ノードでもあればＢ木オプティマイザはそのＢ木の再編成は必要ないと決定する。この決定はそのＢ木内で発生する活動に配慮することなくなされる。各ノードは、そのノードが葉ノードであるか否かを指示するためにセットされるフラグを有しているので、Ｂ木オプティマイザはその根ノードが葉ノードであるか否かを迅速に決定することができる。もしＢ木の根ノードが葉ノードでなければ、Ｂ木オプティマイザはそのＢ木を再編成すべきか否かを決定するための一連の試験を遂行する。
好ましい実施例において使用される第１の試験は、Ｂ木内のページの数及び最後の再編成以降にＢ木内で発生した活動の量に基づいて、そのＢ木を再編成すべきか否かを決定することである。段階４０６においてＢ木オプティマイザは、Ｂ木内のページの合計数を決定する。この情報は、Ｂ木の根ノード内に記憶されている活動統計から入手することができる。
段階４０８においてＢ木オプティマイザは、最後の再編成以降にＢ木へ付加された、及びＢ木から削除されたページ数を決定する。この情報は、Ｂ木の根ノード内に記憶されている活動統計から入手することが好ましい。付加された、もしくは削除されたページ数を測定する時に使用される時間は、最後の再編成以降の経過時間以外の時間とすることもできる。
【００１２】
段階４１０においてＢ木オプティマイザは、Ｂ木内のページの合計数がある最小しきい値よりも大きいか否かを決定する。この最小しきい値の値はどのような定数であってもよいが、本発明の好ましい実施例においてはこの最小しきい値は５ページである。この値は、小さいＢ木の性能がＢ木オプティマイザによって影響を受けないように選択されている。もしページの合計数が最小しきい値より大きければ、段階４１２においてＢ木オプティマイザは、最後の再編成以降に実質的な数のページの付加もしくは削除が発生したか否かを決定する。
好ましい実施例においては、もしページの合計数が、〔（ページ削除係数×削除ページ数）＋（ページ付加係数×付加ページ数）〕よりも小さければ、実質的な数のページの付加もしくは削除が発生したと判断する。ページ削除係数及びページ付加係数は、Ｂ木の構造に対する重大な変化を反映している。好ましい実施例においては、ページ削除係数は“２”に、またページ付加係数は“１”に選択されている。これらの係数は、ページ削除のほうがページ付加よりも重要であると考えていることを表しており、これはページ削除がＢ木を空にすることを意味しているからである。もし段階４１０においてＢ木内のページの合計数が最小しきい値よりも大きいと判断され、段階４１２において実質的な量のページ付加もしくは削除が発生したと判断されれば、段階４１４においてＢ木オプティマイザはそのＢ木は再編成の要があると決定する。
【００１３】
Ｂ木内のページの合計数が最小しきい値よりも小さいか（段階４１０）、もしくは実質的な量のページ付加または削除が発生しなければ（段階４１２）、Ｂ木オプティマイザは、Ｂ木を再編成すべきか否かを決定するための第２の試験を遂行する。好ましい実施例において使用されているこの第２の試験は、最後の再編成以降にＢ木から削除されたキー値の数と、最後の再編成以降の経過時間量とに依存している。
図５を参照する。段階４１６においてＢ木オプティマイザは、最後の再編成以降にＢ木から削除されたキー値の数を決定する。この情報は、Ｂ木の根ノード内に記憶されている活動統計から入手することが好ましい。次いでＢ木オプティマイザは各ページから削除されたキー値の平均数（キー値削除数÷ページ数）を決定する。段階４１８においてＢ木オプティマイザは、最後の再編成以降の経過時間量を決定する。最後の再編成の時点はＢ木の根ノード内に他の活動統計と共に記憶させることが好ましい。段階４２０においてＢ木オプティマイザは、最後の再編成以降の経過時間量がある最小時間量より大きいか否かを判断する。この最小時間量は、管理入力に依存して大幅に変化し得る。もしコンピュータシステムのユーザが、再編成の結果としての休止によって影響を受けるようであれば、この最小時間量は複数日とすべきである。もし最後の再編成以降の経過時間量が最小時間量より大きくなければ、段階４２２においてＢ木オプティマイザは、そのＢ木の再編成の要はないことを決定する。
【００１４】
もし最後の再編成以降に最小時間量が経過していれば（段階４２０）、段階４２４においてＢ木オプティマイザは、最後の再編成以降に削除されたページ当たりのキー値の平均数がキー値削除しきい値より大きいか否かを決定する。好ましい実施例では、キー値削除しきい値は、合計ページサイズの約 10 ％− 15 ％を表すように“５”を選択している。もし最後の再編成以降に削除されたページ当たりのキー値の平均数がキー値削除しきい値より大きければ（即ち、ページの10 ％− 15 ％以上が自由空間であれば）、Ｂ木オプティマイザはこのＢ木は再編成の要ありと決定する（段階４３４）。
もし最後の再編成以降に削除されたページ当たりのキー値の平均数がキー値削除しきい値より小さければ、Ｂ木オプティマイザはＢ木を再編成すべきか否かを決定するための第３の試験を遂行する。好ましい実施例の第３の試験は、最後の再編成時の充填率と最適充填率との差、及び最後の再編成以降の経過時間量に依存する。段階４２８においてＢ木オプティマイザは、最後の再編成以降の経過時間量が最小時間量より大きいか否かを決定する。充填率はＢ木内の活動が変化した後に限って変化するから、好ましい実施例ではこの最小時間量を極めて大きい数（約 14 − 30 日）に選択してある。例えば、Ｂ木が最初に作成された後にそのＢ木内にかなりな量の活動が存在し、後になって少なくなることがあり得る。 14 − 30 日の時間を選択しておけば、このような移り変わりも反映することができよう。もし最後の再編成以降の経過時間量が最小時間量よりも小さければ、段階４２２においてＢ木オプティマイザは、Ｂ木は再編成の要なしと決定する。もし最後の再編成以降の経過時間量が最小時間量よりも大きければ、段階４３０においてＢ木オプティマイザは、Ｂ木ページに充填されるべき最適量（即ち、最適充填率）を計算する。段階４３２においてＢ木オプティマイザは、最適充填率が最後の再編成時の充填率より大きいか否かを決定する。もし否であれば、段階４２２においてＢ木オプティマイザはＢ木は再編成すべきではないと決定する。もし諾であれば、段階４３４においてＢ木オプティマイザは、Ｂ木は再編成の要ありと決定する。
【００１５】
このＢ木は再編成の要ありと決定（図３の段階３０４）すると、Ｂ木オプティマイザはＢ木のページのための最適充填率を計算する（図３の段階３０６）。好ましい実施例における最適充填率は、最後の再編成以降に分割されたページの百分率に基づき、線形尺度を使用して最小充填率から最大充填率まで変化する。最適充填率を決定するために種々の方法を使用することができるが、本発明の好ましい実施例において使用されている方法を、図６を参照して以下に説明する。
段階５０２（図６）においてＢ木オプティマイザは、最後の再編成以降にＢ木に付加されたページの合計数を決定する。この情報は、Ｂ木の根ノード内に記憶されている活動統計から入手することが好ましい。次に、段階５０４においてＢ木オプティマイザは、最後の再編成以降に発生したページ分割の数を計算する。この数は、Ｂ木内のページの合計数に分割係数を乗じて計算される。好ましい実施例ではこの分割係数は“２”にしてある。それは、分割の結果として付加される全てのページに関して、２ページが半分満たされるからである。従って、もしＢ木内のページの中の半分のページが分割されるならば、各ページは半分満たされていることになる。
【００１６】
次いで段階５０６においてＢ木オプティマイザは、ページ分割の数がＢ木内のページの合計数より大きいか否かを決定する。もし諾であればＢ木オプティマイザは非分割ページの数を表す変数を０にセットする（段階５０８）。もしページ分割の数がＢ木内のページの合計数よりも小さければ（段階５０６）、段階５１０においてＢ木オプティマイザは、非分割ページ数が〔ページの合計数−分割ページ数〕に等しいことを表す変数をセットする。
段階５１２においてＢ木オプティマイザは最適充填率を計算する。好ましい実施例においては、最適充填率（ＦＦ）を計算するために次の計算式を使用している。
FF ＝ FF min ＋｛( FFmax −FFmin ) ×非分割ページ数／ページの合計数｝
最小充填率（ＦＦmin ）の値は、Ｂ木が再編成される時に望ましい最小充填率を表すように選択すべきである。最悪の場合には、Ｂ木オプティマイザは 50％の充填率を生成することになろう。充填率は 50 ％以上であるように選択すべきであるが、高過ぎて動的Ｂ木を過充填することがないようにすべきである。好ましい実施例においては、最小充填率の値を 55 ％− 65 ％に選択してある。次のキー値がＢ木に付加された時に、直ちに分割が発生しないようにするために各ページに少量の空間を残すようにすることが望ましいから、最大充填率（ＦＦmax ）は 100％より僅かに小さくすべきである。好ましい実施例においては、最大充填率の値は 80 ％− 90 ％に選択されている。
【００１７】
Ｂ木の最適充填率を計算した後にＢ木オプティマイザはＢ木を再編成する（図３の段階３０８）。Ｂ木の再編成は、新しいＢ木を作成し、古いＢ木内に含まれていた全てのキー値及びポインタを新しいＢ木へ移動することを含む。好ましい実施例においては、Ｂ木を再編成するためにＢ木オプティマイザは図７に示す流れ図の諸段階を遂行する。
段階６０２においてＢ木オプティマイザは、新しいＢ木に必要な記憶空間の量を計算する。必要な空間の量は、現存Ｂ木を走査し、Ｂ木内の各〔キー値、ポインタ〕対のサイズを合計することによって計算される。以前に計算された最適充填率（図３の段階３０６）と、Ｂ木内の全ての〔キー値、ポインタ〕対の合計サイズとに基づいて、Ｂ木オプティマイザは新しいＢ木に必要なサイズを計算する。好ましい実施例においては、動作を成功させる（即ち、新しい樹木のための空間が充分に存在する）ように、また新しいＢ木に割り当てられる空間が多分補助記憶装置上に画定されるように、新しいＢ木は前以て計算されている。
新しいＢ木に必要なサイズを計算した後に、段階６０４においてＢ木オプティマイザは新しいＢ木のために充分な空間を割り当てる。次いでＢ木オプティマイザは段階６０６において新しいＢ木を作成する。新しいＢ木は、現存Ｂ木を走査し、〔キー値、ポインタ〕対を新しいＢ木に付加することによって作成する。好ましい実施例においては、Ｂ木オプティマイザは、新しいＢ木の異なるレベルを表すページのスタック（例えば、現葉ページ、現第１レベル非葉ページ、現第２レベル非葉ページ、・・・、根ページ）を維持する。Ｂ木オプティマイザが新しいＢ木内の各ページを充填すると、Ｂ木オプティマイザは葉ページを補助記憶装置へ書き込み、〔キー値、ポインタ〕対を第１レベル非葉ページへ付加する。Ｂ木オプティマイザは再帰的アルゴリズムを使用するので、非葉ページが充填されると、非葉ページが補助記憶装置へ書き込まれ、非葉ページ上の第１のキー値が親ページに付加される。このようにして、各葉及び非葉ページを厳密に一時に書き込むことによってＢ木が作成される。全ての〔キー値、ポインタ〕対が新しいＢ木へ書き込まれた後に、部分的にしか充填されていない葉及び非葉ページが根ページと共に補助記憶装置へ書き込まれる。当業者ならば、新しいＢ木を作成するための他の方法が使用できることは理解されよう。
【００１８】
以上に好ましい実施例に関連して本発明の方法及び装置を説明したが、本発明はこの実施例に限定されるものではない。本発明の思想内で多くの変更が可能であることは当業者には明白であろう。従って本発明の範囲は特許請求の範囲によってのみ限定されるものである。
【図面の簡単な説明】
【図１】  普通のＢ木のブロック線図である。
【図２】  本発明の好ましい実施例を実現するためのコンピュータシステムの好ましい実施例のブロック線図である。
【図３】  Ｂ木を最適化するための好ましい実施例によって使用されている方法の総合的な流れ図である。
【図４】  Ｂ木を再編成すべきか否かを決定するために好ましい実施例によって使用されている方法の詳細な流れ図の前半部分である。
【図５】  図４に示す流れ図の後半部分である。
【図６】  Ｂ木のための最適充填率を決定するために好ましい実施例によって使用されている方法の詳細な流れ図である。
【図７】  最適充填率に従ってＢ木を再編成するために好ましい実施例によって使用されている方法の詳細な流れ図である。
【符号の説明】
１００  Ｂ木
１０１  根ノード
１０２−１０４  内部ノード
１０５−１１３  葉ノード
１１４−１１８  ポインタ
１１９  データレコード
２００  コンピュータシステム
２０１  補助記憶装置
２０２  ＲＡＭ
２０３  ＣＰＵ
２０４  入力装置
２０５  出力装置
【図１】
0003953537.tif 000002
【図２】
0003953537.tif 000003
【図３】
0003953537.tif 000004
【図４】
0003953537.tif 000005
【図５】
0003953537.tif 000006
【図６】
0003953537.tif 000007
【図７】
0003953537.tif 000008