(57)【要約】【課題】  すべての空ページがファイルの最後にくるようにファイル内のページを操作することによって、データベースファイルの縮小を行う。【解決手段】  ファイルの最後から空でないページがファイルの先頭にある空ページに書き込まれる。このプロセスを適切な回数だけ繰り返した結果として、空ページがすべてファイルの最後に存在するようになる。これが達成された後は、すべての空の廃棄可能ページによって使用されていた領域がファイルシステムに返されるように、ファイルの末端が切り捨てられる。ファイルの切り捨て処理では、空でない最初のページが見つかるまで、ファイルの最後からファイルを逆方向にトラバーサルする。ファイルは、最後の空でないページの後で切り捨てられる。【選択図】  図３
2004362575.tif 000002
【特許請求の範囲】
【請求項１】
ファイルのサイズを調整する方法であって、
（ａ）前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むステップと、
（ｂ）遭遇したページが空である場合、前記遭遇したページをスキップページとして示すステップと、
（ｃ）前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示すステップと、
（ｄ）スキップページにダーティページを加えた合計と、前記ファイル内の空ページの総ページ数とを比較するステップとを含み、
前記合計が前記空ページの総ページ数より少ない場合、前記ファイルを次のページまでトラバーサルしてステップ（ｂ）、（ｃ）、および（ｄ）を実行し、
前記合計が前記空ページの総ページ数以上である場合、前記ダーティページの内容を、前記ファイルのまだトラバーサルされていない空ページに書き込み、
各ダーティページおよび各スキップページを未割り当てページとして示し、
前記未割り当てページを前記ファイルから切り捨てる、
ことを特徴とする方法。
【請求項２】
前記ファイルの総ページ数に対する前記ファイルの空ページの割合が空ページ閾値以上であるか否かを判断するステップと、
前記割合が前記空ページ閾値以上である場合に、前記ファイルの前記トラバーサルを開始するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ファイルの前記最終ページに最も近いダーティページから開始して、前記ファイルの前記最初のページに向かって進み、前記空ページにダーティページを書き込む、ことを特徴とする請求項１に記載の方法。
【請求項４】
前記トラバーサルを開始してから最大実行時間が経過したか否かを判断するステップと、
前記最大実行時間が経過した場合、
前記ダーティページの内容を、まだトラバーサルされていない前記ファイルの空ページに書き込むステップと、
各ダーティページおよび各スキップページを未割り当てページとして示すステップと、
前記未割り当てページを前記ファイルから切り捨てるステップと、をほぼ直ちに開始するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
各ダーティページおよび各スキップページの割り当て状況を示すビットマップを生成するステップと、
各ダーティページおよび各スキップページを未割り当てページとして示す前記ステップに従って前記ビットマップを更新するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ファイル内の総ページ数を判断するステップと、
前記ファイル内の空ページ数を判断するステップと、
前記総ページ数に対する空ページの割合を判断するステップと、
前記割合の値を空ページ閾値と比較するステップと、
前記割合の値が前記空ページ閾値以上である場合、
前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むステップと、
（ａ）遭遇したページが空である場合、前記遭遇したページをスキップページとして示すステップと、
（ｂ）前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示すステップと、
（ｃ）スキップページにダーティページを加えた合計を前記空ページの数と比較するステップと、
前記合計が前記空ページの数より少ない場合、前記ファイルを次のページまでトラバーサルし、ステップ（ａ）、（ｂ）、および（ｃ）を実行するステップと、
前記合計が前記空ページの数以上である場合、
前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込むステップと、
各ダーティページおよび各スキップページを未割り当てページとして示すステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
ファイルのサイズを調整する方法であって、
前記ファイル内の総ページ数を判断するステップと、
前記ファイル内の空ページ数を判断するステップと、
前記総ページ数に対する空ページの割合を判断するステップと、
前記割合の値を空ページ閾値と比較するステップと、
前記割合の値が前記空ページ閾値以上である場合、
前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むステップと、
（ａ）遭遇したページが空である場合、前記遭遇したページをスキップページとして示すステップと、
（ｂ）前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示すステップと、
（ｃ）スキップページにダーティページを加えた合計を前記空ページの数と比較するステップと、
前記合計が前記空ページの数より少ない場合、前記ファイルを次のページまでトラバーサルし、ステップ（ａ）、（ｂ）、および（ｃ）を実行し、
前記合計が前記空ページの数以上である場合、
前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込み、
各ダーティページおよび各スキップページを未割り当てページとして示し、
前記未割り当てページを前記ファイルから切り捨てる、
ことを特徴とする方法。
【請求項８】
コンピュータプロセッサに対してメモリのサイズを調整するよう指示するコンピュータプログラムコードが書き込まれたコンピュータ可読媒体であって、前記プログラムコードは、
前記コンピュータプロセッサに、（ａ）前記メモリのファイルのトラバーサルを前記ファイルの最終ページから開始させ、前記ファイルの最初のページに向かって進ませる開始コードセグメントと、
前記コンピュータプロセッサに、（ｂ）遭遇したページが空である場合、前記遭遇したページをスキップページとして示させるスキップ指示コードセグメントと、
前記コンピュータプロセッサに、（ｃ）前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示させるダーティ指示コードセグメントと、
前記コンピュータプロセッサに、（ｄ）スキップページにダーティページを加えた合計を前記ファイル内の空ページの総数と比較させる比較コードセグメントと、
前記コンピュータプロセッサに、前記合計が前記空ページの総数より少ない場合、前記ファイルを次のページまでトラバーサルさせ、ステップ（ｂ）、（ｃ）、および（ｄ）を実行させる次ページコードセグメントと、
前記コンピュータプロセッサに、前記合計が前記空ページの総数以上である場合、
前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込ませ、
各ダーティページおよび各スキップページを未割り当てページとして示させる、合計大なりコードセグメントと、
前記コンピュータプロセッサに、前記未割り当てページを前記ファイルから切り捨てさせる切り捨てコードセグメントと、
を含むことを特徴とするコンピュータ可読媒体。
【請求項９】
前記コンピュータプロセッサに、前記ファイルの総ページ数に対する前記ファイルの空ページの割合が空ページ閾値以上であるか否かを判断させる割合コードセグメントと、
前記コンピュータプロセッサに、前記割合が前記空ページ閾値以上である場合に前記ファイルの前記トラバーサルを開始させる条件付き開始コードセグメントと、
をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記空ページにダーティページを書き込むことを、前記ファイルの前記最終ページに最も近いダーティページから開始して、前記ファイルの前記最初のページに向かって進む、ことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１１】
前記コンピュータプロセッサに、前記トラバーサルを開始してから最大実行時間が経過したか否かを判断させる最大時間判断コードセグメントと、
前記最大実行時間が経過した場合、前記コンピュータプロセッサに、
前記ダーティページの内容を、まだトラバーサルされていない前記ファイルの空ページに書き込むステップと、
各ダーティページおよび各スキップページを未割り当てページとして示すステップと、
前記未割り当てページを前記ファイルから切り捨てるステップと、
をほぼ直ちに開始させる条件付き開始コードセグメントと、
をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１２】
前記コンピュータプロセッサに、各ダーティページおよび各スキップページの割り当て状況を示すビットマップを生成させるビットマップ生成コードセグメントと、
前記コンピュータプロセッサに、各ダーティページおよび各スキップページを未割り当てページとして示す動作に従って前記ビットマップを更新させる、ビットマップ更新コードセグメントと、
をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１３】
メモリサイズを調整するシステムであって、
複数のページを含むメモリファイルと、
前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むコントローラであって、前記コントローラは、前記トラバーサル中に遭遇した各ページについて、
遭遇したページが空である場合、前記遭遇したページをスキップページとして示す動作と、
前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示す動作と、
スキップページにダーティページを加えた合計を前記ファイル内の空ページ総数と比較する動作と、
前記合計が前記空ページ総数より少ない場合、トラバーサル順に前記ファイル内の次のページから前記トラバーサルを続ける動作と、
前記合計が前記空ページ総数以上である場合、前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込む動作とを含む動作を実行するコントローラと、
各ダーティページおよび各スキップページを未割り当てページとして示す割り当てインジケータと、
前記未割り当てページを前記ファイルから切り捨てる切り捨て部と、
を含むことを特徴とするシステム。
【請求項１４】
前記コントローラはさらに、
前記ファイルの総ページ数に対する前記ファイルの空ページの割合が空ページ閾値以上であるか否かを判断し、
前記割合が前記空ページ閾値以上である場合、前記ファイルの前記トラバーサルを開始する動作を実行する、
ことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記空ページにダーティページを書き込むことを、前記ファイルの前記最終ページに最も近いダーティページから開始して、前記ファイルの前記最初のページに向かって進む、ことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記コントローラは、さらに、
前記トラバーサルを開始してから最大実行時間が経過したか否かを判断し、
前記最大実行時間が経過した場合、
前記ダーティページの内容を、まだトラバーサルされていない前記ファイルの空ページに書き込み、
各ダーティページおよび各スキップページを未割り当てページとして示し、
前記未割り当てページを前記ファイルから切り捨てるステップとをほぼ直ちに開始する動作を実行する、
ことを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記割り当てインジケータは、各ダーティページおよび各スキップページの割り当て状況を示すビットマップを含み、
前記コントローラは、各ダーティページおよび各スキップページを未割り当てページとして示す前記動作に従って前記ビットマップを更新する、
ことを特徴とする請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはデータベースに関し、詳細には、データベースファイルのサイズの自動変更(automatically  resizing)に関する。
【背景技術】
【０００２】
現在、データベースおよびデータベースプロダクトが一般的に使用されている。データベースは、レコード、テーブル、インデックスなどのオブジェクトを記憶することができる。オブジェクトの削除など、データベースに対して行われる様々な操作により、データベース内に空き領域(free  space)（記憶域(memory)）ができることがある。この空き領域は、通例、データベースファイル全体に分散し、したがってデータベースファイルから容易には除去することができない。この空き記憶域(free  memory)は、データベース、特に携帯型(mobile)データベースプロダクトにとって問題になる。携帯型データベースプロダクトは、記憶容量および／または速度が限られた小型の携帯装置で一般的に使用される。したがって、記憶域の効率的な使用は、多くの携帯型データベースプロダクトの目標の１つである。
【０００３】
この空き記憶域(free  memory)をより効率的に使用しようとする現在の試みとして、コンパクティング(compacting)と呼ばれる技法がある。データベースのコンパクティングでは、一般に、新しいデータベースを作成し、次に、元のデータベースから新しいデータベースへすべてのオブジェクトをコピーする必要がある。コンパクティングには、データベースファイルから空のページを除去する効果だけでなく、データベースをデフラグメント化するという効果もある。フラグメント化したデータベースとは、多くの空でないページがあり、それらの空でないページが一部しか一杯になっていないデータベースである。一般に、コンパクティングは（例えば、スケジュールによるかまたは何らかの非ユーザ生成トリガに応答して）自動的に開始されることはない。その理由は、コンパクティング処理が、プロセッサとディスクの両方を多用し、したがって通常、処理の実行中はデータベースが使用不能になるか、または少なくともパフォーマンスへの顕著な影響をユーザが認識するほどデータベースの速度が低下するためである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ユーザが現在行っている作業に関係なく自動的に開始するのに適切であり、ユーザに比較的気付かれないバックグラウンドで実行可能であって、しかも、速度および／または記憶容量が限られた製品上で実施可能なように比較的単純で効率的な、データベースサイズ調整技法があることが望ましい。
【課題を解決するための手段】
【０００５】
本発明は、データベースのサイズを自動的に縮小する(automatically  reducing)機構を提供する。この機構を、「データベース自動縮小(database  autoshrink)」と呼ぶことにするが、これは、データベースファイルのサイズを自動的に調整する(adjust)機能を備える。この自動縮小技法は、マルチユーザ環境内で機能することができる。この技法は、比較的少ないプロセッサ時間(processor  time)と記憶域(memory)を使用し、したがって、手持ち型装置、および／または携帯型データベースプロダクトなど、記憶容量が限られた電子機器に特に適したものとなる。通常、この自動縮小技法(autoshrink  technique)は、すべての空の(empty)ページまたは未割り当て(unllocated)ページがファイルの一端に(at  the  end  of  file)連続して配置(position)されるように、あるファイル内で(within  a  file)ページを移動(move)させる。次に、空の(empty)ページまたは廃棄可能(discardable)ページが切り捨て(truncate)られる。その後、切り捨てられたページ(truncated  page)は、データベースファイルシステムによる使用が可能になる。切り捨てられたページをデータベースファイルシステムに返す(return)ことによって、ファイルシステム空間(file  system  space)が増える。
【０００６】
本発明の自動縮小プロセスを実行するために、データベースファイルが、ファイルの最終ページ(last  page)からファイルの最初のページ(first  page)に向かってトラバーサル(traverse)される。ページに遭遇(encounter)したとき、そのページが空(empty)の場合にはスキップ(skipped)ページとして示(indicate)され、空でない(non-empty)場合には、ダーティ(dirty)ページとして示される。スキップページ(skipped  pages)とダーティページ(dirty  pages)を加えた合計(sum)が、ファイル内の空ページの総ページ数(total  number  of  empty  pages)と比較される。上記合計が当該ファイル内の空ページの総ページ数より少ない(less)場合、ファイル内の次のページ(next  page)からトラバーサル(traversal)を続ける。また、上記合計が空ページの総ページ数以上(greater  than  or  equal)の場合、ダーティページの内容(contents)が、まだトラバーサルされていないファイルの空ページに書き込まれ、各ダーティページ(dirty  page)と各スキップページ(skipped  page)が未割り当て(unallocated)ページとしてマーク(mark)される。次に、未割り当てページ(unallocated  page)がファイルから切り捨て(truncate)られる。
【０００７】
この方法を実施するシステムの一例は、複数のページを有するメモリファイルと、コントローラと、割り当てインジケータ(allocation  indicator)と、切り捨て部(truncator)を備える。このコントローラは、ファイルの最終ページ(last  page  of  the  file)からファイルのトラバーサル(traversal  of  the  file  )を開始し、ファイルの最初のページ(first  page  of  the  file)に向かって進む。遭遇(encounter)したページごとに、コントローラは、そのページが空(empty)の場合にはスキップ(skipped)ページとして示(indicate)し、空でない(non-empty)場合にはダーティ(dirty)ページとして示す。コントローラは、スキップページ(skipped  page)とダーティページ(dirty  page)を加えた合計(sum)を、当該ファイル内の空ページ(empty  page)の総数と比較する。その合計(sum)が空ページの総数より少ない場合には、トラバーサル順(traversal  order)にファイル内の次のページ(next  page)でトラバーサル処理(traversal  process)を続ける。また、その合計(sum)が空ページの総数以上の場合には、ダーティページの内容(contents)が、まだトラバーサルされていないファイル内の空ページに書き込まれる。割り当てインジケータ(allocation indicator)は、各ダーティページおよび各スキップページを未割り当て(unallocated)ページとして示す(indicate)。次に、切り捨て部(truncator)が未割り当てページ(unallocated page)をファイルから切り捨てる。
【発明を実施するための最良の形態】
【０００８】
本発明の特徴および利点は、添付図面と共に以下の説明を検討すれば最もよくわかるであろう。
【０００９】
本発明によるデータベース自動縮小は、データベースファイルのサイズを自動的に調整する機能を持つ。一般に、この自動縮小技法は、空ページがすべてファイルの一端に連続して配置されるように、ファイル内のページを移動する。次に、空のページが切り捨てられる。その後、切り捨てられたページは、データベースファイルシステムによる使用が可能になる。データベースファイルが切り捨てられるため、ファイルシステムに返された領域は、他のアプリケーションのために使用することができるようになる（例えば、ディスクスペースを解放する）。
【００１０】
図１は、メモリページを９ページ含むデータベースファイルを示す図である。図１は、データベース縮小がデータベースファイルに及ぼす作用の一例として示すものである。図１に示すように、ページ２、４、６、および８は空であり、ページ１、３、５、７、および９は空でない（陰影部分）。図示されている空ページ、空でないページ、およびページ数の構成は、例示的なものである。空ページは、データベースのうち、ユーザにとって関心のない情報が格納されているページ、例えば、データが格納されていないページや、データベース管理システムによって割り当て解除されたページである。したがって、空ページは、廃棄されるか、または他者（例えば他のユーザ）によって使用されることができる。空でないページは、データベースのユーザにとって関心のある内容が格納されたページである。図１に示すファイルには、空ページが４ページと、空でないページが５ページ含まれている。図１のファイル内の総ページ数は９ページであるが、関心のあるページは５ページのみである。空の４ページを廃棄すれば、ファイルのサイズをわずか５ページに縮小することができる。
【００１１】
一実施例では、ファイルの一端から空でないページが、ファイルの他端付近の空のページにコピーされる。例えば、（ファイルの右側に近い）空でないページ７および９の内容を、（ファイルの左側に近い）空のページ２および４にコピーすることができる。その結果、不要なページの連続ブロックの一部が、データベースファイルの最後に置かれることになり、ファイルの末端を切り捨てることができる。図２は、空ページに書き込まれるページとして示されているページ７およびページ９を示すデータベースファイルを示す図である。ページをファイルの一端からファイルの他端に書き込む前に、書き込まれるページが識別される。図２に黒い斜線で示すように、ページ７およびページ９は、空ページに書き込まれるページとして識別済みである。ページ７および９が識別された後は、ファイルの他端にある空ページに書き込むことができる。図２に破線の矢印で示すように、ページ７および９がページ２および４に書き込まれる。図２に示すように、ページ７はページ４に書き込まれ、ページ９はページ２に書き込まれる。このパターンは例示的なものである。例えば、ページ７をページ２に書き込み、ページ９をページ４に書き込むこともできる。ページの記憶場所が維持されている限り、内容が格納されている実際のページに関係なく、ページ７および９の内容を取り出すことができる。ページの記憶場所は、論理識別子（ＩＤ）を使用して維持される。論理ＩＤおよび論理ＩＤを使用するページ維持については、以下で詳述する。
【００１２】
コピーされるページが存在するファイルの一端（図２の右側）から開始し、他端に向かってファイルを逆戻りにトラバーサルすることによって、ページ７および９が空ページにコピーされるページとして選択される。この例では、このプロセスは、ページ９から始まり、ページ１に向かって進む。ページに遭遇するたびに、そのページが空であるか否かが判断される。ページが空であるか空でないかの判断は、ページヘッダの解析など、任意の適切な手段によって行うことができる。トラバーサル中にページに遭遇すると、空ページである場合はスキップページとしてマークされ、空でないページの場合にはダーティページとしてマークされる。
【００１３】
図３は、スキップページとしてマークされたページ６および８と、ダーティページとしてマークされたページ７および９を示す、ファイルの図である。この例では、ページ９からトラバーサルを開始し、ページ１に向かって進み、ページ９は空でなく、ダーティページとしてマークされ、ページ８は空であり、スキップページとしてマークされ、ページ７は空でなく、ダーティページとしてマークされ、ページ６は空であり、スキップページとしてマークされる。このトラバーサルプロセスは、この時点で停止し、ページ７および９がページ２および４に書き込まれる。一実施形態では、トラバーサルプロセスはスキップページとダーティページとの合計がファイル内の空ページの数以上になるまで続く。これを以下の数式で示す。
Σ（スキップページ＋ダーティページ）≧＃ファイル内の空ページ数        （１）
【００１４】
ページに遭遇するたびに、式（１）の値が計算され、ダーティページとスキップページとの合計がファイル内の空ページの数より少ない場合、トラバーサルプロセスはトラバーサル順に次のページに進む。ダーティページとスキップページとの合計が、ファイル内の空ページの数以上の場合、トラバーサルプロセスは停止し、まだトラバーサルされていないファイル内の部分に含まれている空ページにダーティページが書き込まれる。図３を参照すると、ファイル内の空ページの総数は４である。ページ９から開始すると、ページ９は空ではなく、したがってダーティページとしてマークされる。これで合計数は１であり、４より少ないため、トラバーサルはページ８に進む。ページ８は空であり、したがってスキップページとしてマークされる。これで合計数は２となり、したがってトラバーサルはページ７に進む。ページ７は、空でなく、したがってダーティページとしてマークされる。これで合計数は３になり、トラバーサルはページ６に進む。ページ６は空であり、したがってスキップとしてマークされる。これで合計は４になり、したがってトラバーサルプロセスは停止される。ここでページ７および９の内容が、ファイルのうちのまだトラバーサルされていない部分にある空ページに書き込まれる。ページ１から５はまだトラバーサルされていない。ページ２および４は、ファイルのうちのまだトラバーサルされていない部分にある空ページである。したがって、ページ７および９は、ページ２および４に書き込まれる。
【００１５】
図４は、自動縮小プロセスの完了時におけるデータベースファイルを示す。空ページとダーティページは除去されている。残りのページは空でないページである。ページ１、３、および５には、自動縮小プロセスの開始前と同じ内容が格納されている。前に空だったページ２および４には、ファイル内の他の記憶場所にあった空でないページの内容が格納されている。
【００１６】
一実施例では、自動縮小プロセスの様々な構成を設定し、制御する様々なコントロールが設けられる。これらのコントロールは、例えばデータベースを開くときなど、任意の適切な時点で与えることができる。このようなコントロールとしては、空ページ閾値、最大実行制限時間、再試行間隔などがある。これらのコントロールは、個別に、または任意に組み合わせて使用することができる。
【００１７】
空ページ閾値(empty  page  threshold)は、ファイル内の総ページに占める割合で表される値である。空ページ閾値は、自動縮小プロセスを開始するために使用することができる。例えば、ファイル内の空ページの割合が空ページ閾値と比較される。ファイル内の空ページの割合が空ページ閾値を超える場合、自動縮小プロセスが開始する。したがって、空ページ閾値がゼロに設定された場合、最初の空ページが存在する時点で自動縮小プロセスが開始されることになる。空ページ閾値が１００％に設定された場合、（空ページの割合が１００になるには、データベース全体にデータがまったく格納されていない必要があるため）自動縮小プロセスは決して開始されない。
【００１８】
最大実行制限時間(maximum  execution  time  limit)は、自動縮小プロセスを実行することができる時間の長さを制限する。一実施形態では、最大実行制限時間は、ミリ秒単位で表される。自動縮小プロセスの実行時間を制限することにより、システムのＣＰＵサイクル数を節約することができる。最大実行制限時間を無限大に設定すると、自動縮小プロセスは完了するまで実行することができ、したがってデータベースファイル内から空ページがすべて除去される。最大実行制限時間がゼロと無限大との間の値に設定され、自動縮小プロセスがその指定された時間より長く実行された場合、自動縮小プロセスは、その実行中に除去することができた空ページの数だけファイルを縮小し、その後、実行を停止する。したがって、最大実行制限時間は、システムを長時間拘束することなく、データベースファイルのサイズを漸進的に縮小することができる機能を持つ。
【００１９】
再試行間隔(retry  interval)は、自動縮小プロセスが実行されてから自動縮小プロセスが再開（例えば再始動）することができるまでの時間の値である。再試行間隔は、自動縮小プロセスを再び開始するまでの待ち時間の長さである。例えば、再試行間隔を使用して、空ページの割合が空ページ閾値を超えるデータベースの縮小を試行し続ける頻度を設定することができる。再試行時間間隔は、最大実行制限時間が制限されていない場合（例えば無限大に設定されている場合）には効力がない。最大実行時間が制限されていない場合、自動縮小プロセスは完了するまで続き、ファイルから空ページをすべて削除し、したがって、自動縮小を再試行する必要がなくなる。
【００２０】
上記の３つのコントロール、すなわち空ページ閾値、最大実行制限時間、および再試行間隔をどのように使用することができるかの例を、以下に示す。トランザクションがコミットされ、ディスクにフラッシュされた後、空ページの割合が、ユーザ指定の空ページ閾値を超えるか否かが判断される。空ページ閾値を超えた場合、自動縮小プロセスが最大実行制限時間の間実行される。最大実行制限時間を超えたために縮小プロセスが終了し、空ページ数がまだ空ページ閾値を超える場合、自動縮小プロセスは、自動縮小再試行間隔が経過すると、再びデータベースファイルの縮小を試みる。
【００２１】
前述のように、空でないページを空のページに書き込むときに、ページの記憶場所が維持される。一般的なデータベースプロダクトは、ファイル内のページの物理アドレスを表すページ識別子を使用する。例えば、典型的なデータベースプロダクトは、データベースファイルの先頭からのページの論理オフセットによって各ページを識別する。しかし、この手法は、ページに対するすべての参照をそのページの新しい記憶場所を反映するように更新しなければならないため、ページをデータベースファイル内の１つの場所から他の場所に移動するのを困難にする。
【００２２】
したがって、本発明の一実施例では、データベースファイル内のページを論理ページ識別子（ＩＤ）によって識別する。データベース内では、ページは論理ＩＤを使用してアクセスされ、追跡される。論理ページＩＤは、物理ページアドレス、すなわち、ファイル内へのページのオフセットにマップされる。このマッピングは、任意の適切な手段によって行うことができる。一実施例では、論理ページＩＤの物理アドレスへのマッピングは、マッピングテーブルを介して行われる。図５は、論理ＩＤ５４を物理アドレス５６にマッピングするためのマッピングテーブル５００の一例を示す図である。マッピングテーブル５００は、データベースファイルに１組のページとして格納することができる。各マッピングテーブル５００は、論理ページＩＤ５４をそれぞれのメモリページの物理ページアドレス５６（記憶場所とも呼ぶ）にマップするエントリ５２を含む。ページがアクセスされると、そのページはその論理アドレスによって識別され、マッピングテーブル５００を使用してその論理アドレスが物理アドレスに変換される。このプロセスは、仮想アドレスシステムがアドレス変換テーブルを使用して仮想アドレスを物理アドレスにマップする方法に似ている。ページの物理ロケーションが変更されると（例えばデータがデータベースにフラッシュされると）、マッピングテーブル５００内の対応するエントリが更新される。そのエントリについて、移動されるページの論理ページＩＤ５４は変化しないが、ページの移動先の物理アドレスが、マッピングテーブル５００内のエントリ５２の物理ロケーション部分５６に入れられる。論理ページＩＤを使用してページを識別する場合、データベースファイル内の１つの場所から他の場所にページを移動する管理上の負担が軽減され、したがって、論理ページＩＤの使用は、多くのページをファイルの最後から先頭に向かって頻繁に移動する自動縮小プロセスを支援することになる。
【００２３】
上記の例（図３参照）を参照すると、ページ７の内容をページ４に書き込むとき、それらの内容に関連づけられた論理ＩＤは変化しない。その論理ＩＤに関連づけられた物理アドレス(physical  location)が、その新しい記憶場所を反映するように更新される。したがって、ページ７の内容に関連づけられた論理ページＩＤは変化せず、その論理ページＩＤに関連づけられた物理アドレスが、ページ７の記憶場所からページ４の記憶場所へと変化する。データベースシステムは、論理ページＩＤによってページにアクセスする。一実施例では、論理ページＩＤには、論理ＩＤの参照先のページのタイプを示す特定の値が割り当てられる。例えば、特定の範囲の論理ページＩＤが、マッピングテーブルページを参照し、別の範囲がデータページ（例えばインデックスやレコードなどのデータベースコンテキストを含むページ）を参照することもできる。
【００２４】
前述のように、本発明の一実施形態による自動縮小プロセスでは、空でないページの内容を空のページに書き込む。このプロセス時に、解放されることになるページと、使用されるようになるページとがある。割り当てインジケータを使用して、ページの割り当て状況(allocation  status)が示される。割り当てインジケータは、論理ＩＤと物理ページの状況（利用可能か利用不能か、空きか使用中か）を示す。状況を示すための任意の適切な手段を使用することができる。一実施例では、ビットマップを使用して論理ＩＤの割り当て状況が示される。論理ＩＤ割り当てビットマップ(logical  ID  allocation  bitmap)は、マッピングテーブル（例えばマッピングテーブル５００）内の各エントリのためのビットを含む。一実施例では、１に設定されたビットは、対応するエントリが割り当て済み（利用不能）であることを示す。０に設定されたビットは、対応するエントリが空いている（利用可能）ことを示す。自動縮小プロセス中に、ビットマップ値０を探索することによって、利用可能ページを探し出すことができる。見つかったページが新たに割り当てられていることを示すために、対応するビットマップエントリが１に変更される。ダーティページの内容が空ページに書き込まれるとき、ダーティページの物理ＩＤが割り当て済み（使用中または利用不能ページとも呼ぶ）としてマークされ、前に空だったページのＩＤは未割り当て（空きまたは利用可能とも呼ぶ）としてマークされる。
【００２５】
一実施例では、論理ＩＤ割り当てビットマップは、データベースファイルに１組のページとして格納される。他の実施形態では、このビットマップは、データベースが開かれると初期設定される。初期設定は、マッピングテーブル内のすべてのエントリを列挙することによって行うことができる。ページエントリにページの有効物理アドレスが入っている場合、そのページエントリに対応するページＩＤが割り当て済みとしてマークされる。すべてのエントリがトラバーサルされると、ビットマップはページＩＤの現在の割り当て状況を示すことになる。
【００２６】
この割り当てビットマップ(allocation  bitmap)は、データベースファイル内に格納することができる。例えば、最大データベースファイルサイズが２３２バイト（４ギガバイト）であり、データベースページサイズが４，０９６バイトである場合、最大２２０個の論理ページＩＤができる。したがって、１３１，０７２バイトを使用して、論理ページＩＤ割り当てビットマップを実現することができる。割り当てビットマップを使用することによって、メンテナンスページの変更や読取りを行うことなく、論理ページＩＤを解放かつ／または割り当てすることができる。これにより、同時に複数のトランザクションがデータベース内でページＩＤの割り当てと解放を行うことができるようになり、並行性が向上する。また、ビットマップとページエントリがすべてデータベースファイル内に格納されるため、割り当てビットマップの使用は論理ページＩＤの割り当てと解放のための強固な機構となる。
【００２７】
ビットマップがメモリに読み込まれた後、またはページエントリのトラバーサルによって計算された後は、割り当て／解放するページに対応するビットが現れるまでビットマップ内のビット数をカウントすることによって、ページの割り当てと解放を行うことができる。論理ページＩＤを解放するには、単にビットを１から０に変更するだけである。論理ページＩＤを割り当てるには、単にビットを０から１に変更するだけである。
【００２８】
論理ページＩＤの割り当て(allocating)および解放(freeing)を行う上記と同じビットマップ型機構は、物理ページアドレスの割り当ておよび解放にも適用可能である。その場合、ビットマップは、データベースファイル内の各物理ページアドレスについて１ビットを有する。一実施例では、１に設定されたビットは、物理ページアドレスが割り当てられていることを示す。０に設定されたビットは、物理ページアドレスが空いていることを示す。物理ページアドレスは、空のページにダーティページが書き込まれると割り当てられる。本明細書に記載されているようにメモリサイズを調整することによって、空／未使用ページの物理ページアドレスを効率的に見つけることが可能になる。一実施例では、この物理アドレス割り当てビットマップは、データベースファイルに格納される。他の実施形態では、物理アドレス割り当てビットマップは、データベースを開くときにデータベースページをトラバーサルすることによって計算される。ビットマップを計算する場合、論理ページＩＤビットマップを計算するのと同時に計算することができるが、これは同じ１組のページがトラバーサルされるためである。物理ページアドレスを解放する技法は、前述のように論理ページＩＤを解放するのと同じ技法である。物理ページアドレスを割り当てる技法は、論理ページＩＤを割り当てるのとほとんど同じである。相違点は、既存の物理ページアドレスが空いていない場合、データベースファイルが拡張され、データベースファイルに付加された新しい物理ページアドレスが、アドレスビットマップ内で空き物理ページアドレスとしてマークされることである。
【００２９】
図６は、自動縮小を実行するプロセスの例示の流れ図である。ステップ６０において、ファイル内の総ページ数が判断される。ステップ６２において、ファイル内の空ページ数が判断される。この数は、任意の適切な手段によって判断することができる。ファイル内の総ページ数と空きページ数を適切に判断する例としては、ファイルのトラバーサルおよび／または割り当てインジケータ（例えばビットマップ）のトラバーサルがある。他の実施形態では、総ページ数と空ページ数は、データベースシステムによってこのプロセスに提供される。ステップ６４において、総ページ数に対する空ページ数の割合が判断される。この割合を表す任意の適切な値を使用することができる。例えば、この値は、空ページ数を総ページ数で割り、その商に１００を掛けることによって求めることができる。これは、以下のように、ＰＣＶ（パーセント値）として数学的に表すことができる。
【００３０】
【数１】
2004362575.tif 000003
【００３１】
ステップ６６において、ＰＣＶが空ページ閾値以上であるか否かが判断される。ステップ６６は省略可能である。すなわち、空ページ閾値は設定されていなくてもよい。空ページ閾値が設定されていない場合、プロセスはステップ６４から直接ステップ６８へ進む。空ページ閾値が設定されている場合、およびＰＣＶが空ページ閾値未満の場合、ステップ７４で再試行インターバル値以上の時間だけ待った後、プロセスはステップ６０に進む。再試行インターバル値がゼロに設定されている場合、プロセスは直接、ステップ６０に進む。再試行インターバル値が無限大に設定されている場合は、プロセスはステップ６０に進むことはない。なお、図６に示されているステップ６０とステップ６２の順序は例示的なものであり、任意の順序が適用可能であることを理解されたい。すなわち、ステップ６０をステップ６２の前に行うことができ、ステップ６２をステップ６０の前に行うことができ、またはステップ６０とステップ６２を同時に行うこともできる。
【００３２】
ステップ６８において、トラバーサルの始点がファイルの最終ページに定められる。ステップ６８は、ファイルの最後にある最終ページに進むように図示されているが、トラバーサルはファイルのいずれの一端からでも開始することができる。例えば、図３を参照すると、トラバーサルはページ９から開始し、ページ１に向かって進んでもよいし、あるいはトラバーサルはページ１から開始し、ページ９に向かって進んでもよい。最初のトラバーサル例（右から左）では、空のページは右にあり、後者のトラバーサル例（左から右）では、空ページは左にある。ステップ７０において、ファイルの一端のページからトラバーサルプロセスが開始する。ステップ７０において、ページに遭遇したとき、そのページが空の場合はスキップページとしてマークされ、空でない場合はダーティページとしてマークされる。遭遇したページがダーティページまたはスキップページとしてマークされた後、ステップ７８において、スキップページとダーティページの累計が空ページ数と比較される。この合計が、空ページ数より少ない場合、トラバーサルはステップ７６のトラバーサルで次のページに進み、ステップ７０でトラバーサルプロセスが続行される。ダーティページとスキップページとの合計が、空ページ数以上の場合、ステップ８０でダーティページが空ページに書き込まれる。ダーティページは、ファイルのうちのまだトラバーサルされていない部分にある空ページに書き込まれる。ステップ８２において、ダーティページとスキップページは未割り当てページとしてマークされる。前述のように、割り当て状況はビットマップによって達成できる。未割り当てページ（ダーティページとスキップページ）は、ステップ８２で切り捨てられる。ステップ８６において、ダーティページとスキップページの数がリセットされ、それにより、次にステップ７８が実行されるときに、例えばスキップページとダーティページの数をカウントするために使用されるカウンタに残余値が残っていないようにする。
【００３３】
図６に示すプロセスの任意の時点で、最大実行時間が経過した場合（ステップ７２）、プロセスはステップ８０に飛び、前述のようにプロセスが進行する。したがって、この自動縮小プロセスは、データベースファイルを漸進的に縮小することができる機能を備えると同時に、ＣＰＵサイクルを節約することができる。
【００３４】
以下の表１−１から表１−４は、データベースにおけるファイルサイズの調整を行うプロセスの一例を、疑似コード(pseudo  code)で示す。以下の疑似コードは、上述の技法を実施するいくつかの機構を示すものである。この疑似コードは、データベース内の空ページと空でないページを追跡し、空ページとダーティページをファイルの他端に移動するのにどれだけの数のページをファイルの一端に移動する必要があるかを判断し、ダーティページを書き込み、空ページとダーティページを切り捨てる機構を示している。
【００３５】
【表１−１】
2004362575.tif 000004
【００３６】
【表１−２】
2004362575.tif 000005
【００３７】
【表１−３】
2004362575.tif 000006
【００３８】
【表１−４】
2004362575.tif 000007
【００３９】
【表１−５】
2004362575.tif 000008
【００４０】
図７は、データベースファイルサイズを調整するシステムの一例を示すブロック図である。一実施例では、このシステムを使用してデータベースのメモリサイズを調整する。したがって、そのような文脈で説明する。このシステムは、システムメモリ９６と、割り当てインジケータ９４と、コントローラ９２と、切り捨て部９０とを含む。システムメモリ９６は、ファイルの形に構成されたメモリページを含む。システムメモリ９６は、半導体メモリ、磁気メモリ（例えばディスク）、光メモリ、またはこれらの組合せなど、任意の適切な種類のメモリで構成することができる。システムメモリ９６は、データを永続的に記憶する機能を備えた永続メモリで構成するのが典型的であり、好適である。したがって、通常の動作条件では、永続メモリに書き込まれたデータは、そのデータが特に除去および／または書直しされるまでは利用可能である。
【００４１】
割り当てインジケータ９４は、前述のように、ダーティページおよびスキップページの論理ＩＤおよび物理アドレスの割り当て状況を示す機能を実行する。割り当てインジケータは、（ファイルのトラバーサル中に）遭遇したページが空の場合はそのページをスキップページとして示す。割り当てインジケータは、遭遇したページが空でないページの場合は、そのページをダーティページとして示す。また、前述のように、割り当てインジケータ９４は、切り捨ての前に、各ダーティページおよび各スキップページを未割り当てページとして示す。一実施例では、ページ割り当てインジケータ９４は、前述のように、割り当て状況を示すビットマップを含む。
【００４２】
コントローラ９２は、前述のメモリサイズの調整に付随する多くの機能を実行する。コントローラ９２は、ファイルの一端にある最終ページからトラバーサルプロセスを開始し、ファイルの他端にある最初のページに向かってトラバーサルプロセスを続ける。コントローラ９２は、スキップページとダーティページとの合計が、ファイル内の空ページの総ページ数以上であるか否かを判断し、合計がファイル内の空ページの総ページ数より少ない場合、トラバーサル順でファイル内の次のページでトラバーサルプロセスを続行する。合計が、空ページの総ページ数以上である場合、コントローラは、ダーティページの内容を、ファイル内のまだトラバーサルされていない空ページに書き込む。切り捨て部９０は、前述のように、未割り当てページをファイルから切り捨てる。
【００４３】
§適合するコンピューティングシステム環境の概要について：
図８は、メモリサイズの調整方法およびシステムを実施することができる、適合するコンピューティングシステム環境１００の一例を示す。このコンピューティング環境１００は、適合するコンピューティング環境の一例に過ぎず、指示要素を動的かつ個別に制御する方法およびシステムの使用または機能の範囲に関して制限を加えることを示唆するものではない。また、このコンピューティング環境１００は、この例示の動作環境１００に図示されている構成要素の１つまたは組合せに関する依存や要件を有するものと解釈すべきではない。
【００４４】
このメモリサイズ調整方法およびシステムは、他の多くの汎用または特殊目的コンピューティングシステム環境または構成でも動作可能である。表示要素(display element)を動的かつ個別に制御する方法およびシステムと共に使用するのに適合する、よく知られているコンピューティングシステム、環境および／または構成としては、パーソナルコンピュータ、サーバコンピュータ、手持ち型装置、ラップトップ装置、マルチプロセッサシステム、マイクロプロセッサ内蔵システム、セットトップボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたは装置などを含む分散コンピューティング環境などがあるが、これらには限定されない。
【００４５】
メモリサイズの調整方法およびシステムについて、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令という一般的背景で説明する場合がある。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データタイプを実現する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、このメモリサイズ調整方法およびシステムは、通信ネットワークまたはそのデータ伝送媒体によってリンクされたリモート処理ユニットによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールおよびその他のデータを、メモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体に配置することができる。
【００４６】
図８を参照すると、メモリサイズ調整方法およびシステムを実施するシステムの一例は、コンピュータ１１０の形態の汎用コンピューティング装置を含む。コンピュータ１１０の構成要素としては、処理ユニット１２０、システムメモリ１３０、およびシステムメモリ１３０を含めて様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１などがあるが、これらには限定されない。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む様々な種類のバス構造のいずれかとすることができる。例えば、このようなアーキテクチャとしては、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクススタンダードアソシエーション(Video  Electronics  Standards  Association:VESA)ローカルバス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス（メザニンバスとも呼ぶ）などがあるが、これらには限定されない。
【００４７】
コンピュータ１１０は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる、任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不能媒体の両方を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体とを含むことができるが、これには限定されない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための方法および技術で実現された、揮発性および不揮発性の、取り外し可能および取り外し不能媒体を含む。コンピュータ記憶媒体には、所望の情報を記憶するために使用することができ、コンピュータ１１０がアクセスすることができる、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくはその他のメモリ技法、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶装置、またはその他の任意の媒体が含まれるが、これらには限定されない。通信媒体は、一般に、搬送波などの変調データ信号またはその他の伝送機構の形態の、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実現し、任意の送達媒体を含む。「変調されたデータ信号(modulated  data  signal)」という用語は、情報を信号の形態でコード化するように設定または変更された１つまたは複数の特徴を有する信号を意味する。例えば、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体と、音波、ＲＦ、赤外線、またはその他の無線媒体などの無線媒体が含まれるが、これらには限定されない。これらの媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれるものと理解されたい。
【００４８】
システムメモリ１３０には、ＲＯＭ１３１やＲＡＭ１３２などの揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体が含まれる。始動時などにコンピュータ１１０内の要素間で情報を伝送するのを支援する基本ルーチンを含む、基本入出力システム１３３（ＢＩＯＳ）が、典型的にはＲＯＭ１３１に記憶される。ＲＡＭ１３２は、一般には、処理ユニット１２０が直ちにアクセス可能および／または現在操作中のデータおよび／またはプログラムモジュールが格納される。例えば、図８には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が図示されているが、これらには限定されない。
【００４９】
コンピュータ１１０は、他の取り外し可能／取り外し不能な、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。例えば、図８には、取り外し不能な不揮発性の磁気媒体の読み書きを行うハードディスクドライブ１４１と、取り外し可能な不揮発性磁気ディスク１５２の読み書きを行う磁気ディスクドライブ１５１と、ＣＤ−ＲＯＭ、ＣＤＲＷ、またはその他の光媒体などの取り外し可能な不揮発性光ディスク１５６の読み書きを行う光ディスクドライブ１５５とが図示されている。例示の動作環境で使用可能なその他の取り外し可能／取り外し不能な揮発性／不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがあるが、これらには限定されない。ハードディスクドライブ１４１は、一般には、インターフェース１４０などの取り外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、一般には、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００５０】
上述した図８に図示するドライブおよびそれに付随するコンピュータ記憶媒体は、コンピュータ１１０のために、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶域を提供する。例えば図８では、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして図示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じ場合も異なる場合もあることに留意されたい。本明細書では、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくとも異なるコピーであることを示すために異なる番号が付してある。ユーザは、キーボード１６２や、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力装置を介して、コンピュータ１１０にコマンドと情報を入力することができる。その他の入力装置（図示せず）として、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなども備えることができる。上記およびその他の入力装置は、システムバス１２１に結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェースおよびバス構造によって接続することもできる。モニタ１９１またはその他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７やプリンタ１９６など他の周辺出力装置も備えることができ、それらは出力周辺装置インターフェース１９５を介して接続することができる。
【００５１】
コンピュータ１１０は、リモートコンピュータ１８０など、１または複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、またはその他の共通ネットワークノードとすることができ、一般には、コンピュータ１１０に関連して前述した要素の多くまたは全部を含むことができるが、図８にはメモリ記憶装置１８１のみが図示されている。図の論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１とワイドエリアネットワーク（ＷＡＮ）１７３とを含むが、他のネットワークも含むことができる。このようなネットワーク環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットで一般的に使用されている。
【００５２】
ＬＡＮネットワーク環境で使用する場合、コンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータ１１０は一般に、インターネットなどのＷＡＮ１７３を介した通信を確立するためのモデム１７２またはその他の手段を備える。モデム１７２は、内蔵または外付けモデムとすることができ、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関連して図示されているプログラムモジュールまたはその一部を、リモートメモリ記憶装置に記憶することもできる。例えば、図８には、リモートアプリケーションプログラム１８５がメモリ装置１８１に常駐するものとして図示されているが、これらには限定されない。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立するその他の手段も使用可能であることがわかるであろう。
【００５３】
パーソナルコンピューティングとインターネットとの統合を考慮して、様々な分散コンピューティングフレームワークが、従来から開発され、現在も開発されている。個人と企業ユーザとを問わず、アプリケーションおよびコンピューティング装置用の、シームレスに相互運用可能なウェブ対応インターフェースを備えており、コンピュータ活動がますますウェブブラウザまたはネットワーク指向になりつつある。
【００５４】
例えば、ＭＩＣＲＯＳＯＦＴ（登録商標）の．ＮＥＴプラットフォームは、サーバ、ウェブベースのデータ記憶などのビルディングブロックサービス、およびダウンロード可能デバイスソフトウェアを含む。おおざっぱに言えば、．ＮＥＴプラットフォームは、（１）あらゆる種類のコンピューティング装置が共に稼働することができるようにし、そのすべての装置上でユーザ情報を自動的に更新し、同期させる機能、（２）ＨＴＭＬではなくＸＭＬの使用が増大したことにより可能となったウェブサイトのための向上した対話機能、（３）カスタマイズされたアクセスと、例えば電子メールなどの様々なアプリケーションやＯｆｆｉｃｅ  ．ＮＥＴなどのソフトウェアの管理のための製品およびサービスを中央の起点からユーザに配信する機能を特徴とするオンラインサービス、（４）情報へのアクセスをより効率的かつ容易にする集中データ記憶と、ユーザ間および装置間での情報の同期、（５）電子メール、ファクス、電話などの様々な通信媒体の統合を可能にする機能、（６）開発者にとっては、再使用可能モジュールを作成し、それによって生産性を向上させ、プログラミングエラー件数を少なくする機能、および（７）その他の多くのプラットフォーム間統合機能を備える。
【００５５】
本明細書では実施例について、コンピューティング装置上にあるソフトウェアとの関連で説明したが、このメモリサイズ調整方法およびシステムの１または複数の部分を、オペレーティングシステム、アプリケーションプログラムインターフェース（ＡＰＩ）、または、コプロセッサと要求側オブジェクトとの間の「中間」オブジェクトを介して実施し、それによって、．ＮＥＴのすべての言語およびサービスを介して、サービスの実行、サポート、アクセスを行うことも、他の分散コンピューティングフレームワークにおいても行うことができるようにすることもできる。
【００５６】
本明細書に記載のメモリサイズ調整方法は、コンピュータ実施プロセスおよびそれらのプロセスを実施するシステムの形態で実施することができる。本明細書に記載のメモリサイズ調整方法は、フロッピィディスケット、読取り専用メモリ（ＲＯＭ）、ＣＤ−ＲＯＭ、ハードドライブ、高密度ディスク、またはその他のコンピュータ可読記憶媒体など、有形媒体で実施されたコンピュータプログラムコードの形態で実施することもでき、このコンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは本発明を実施するシステムとなる。本明細書に記載のメモリサイズ調整方法は、例えば、記憶媒体に記憶されるか、コンピュータにロードされ、かつ／またはコンピュータにより実行されるか、電気配線またはケーブル、光ファイバ、または電磁放射などの何らかの伝送媒体を介して伝送されるかを問わず、コンピュータプログラムコードの形態で実施することができ、そのコンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されると、コンピュータは本発明を実施するシステムとなる。汎用プロセッサ上で実施された場合、コンピュータプログラムコードセグメントは、特定の論理回路を形成するようにプロセッサを構成する。
【００５７】
本明細書に記載の様々な技法は、ハードウェアまたはソフトウェア、あるいは、適切な場合は、両者の組み合わせと共に実施することができる。したがって、本発明の方法および装置、またはその特定の態様および部分は、フロッピィディスケット、ＣＤ−ＲＯＭ、ハードドライブ、またはその他の機械可読記憶媒体などの有形の媒体で実現されたプログラムコード（すなわち命令）の形態をとることができ、そのプログラムコードを、コンピュータなどの機械にロードして実行すると、その機械は本発明を実施する装置となる。プログラム可能コンピュータでのプログラムコードの実行の場合、コンピューティングデバイスは、通常、プロセッサと、プロセッサが読み取ることができる記憶媒体（揮発性および不揮発性メモリおよび／または記憶素子を含む）と、少なくとも１つの入力装置、少なくとも１つの出力装置とを備える。例えばデータ処理ＡＰＩなどの使用を介して本発明の信号処理サービスを使用することができる１つまたは複数のプログラムは、コンピュータ通信をするために高水準手続き型言語またはオブジェクト指向プログラミング言語で実現することが好ましい。しかし、必要であれば、プログラムをアセンブリ言語または機械言語で実現することもできる。いずれの場合も、言語はコンパイラ型言語またはインタプリタ型言語とすることができ、ハードウェア実施態様と組み合わせることができる。
【００５８】
本発明の方法および装置は、電気配線またはケーブル、光ファイバ、またはその他の形態の伝送などを介した何らかの形態の伝送媒体を介して伝送されるプログラムコードの形態で実現された通信を介して実施することもでき、プログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダなどの機械、または前述の実施例で説明した信号処理機能を有する受信側機械によって受け取られ、ロードされ、実行されると、その機械は本発明を実施する装置となる。汎用プロセッサ上で実施した場合、プログラムコードは、プロセッサと組み合わさって、本発明の機能を実行するように動作する固有の装置を実現する。さらに、本発明と共に使用される記憶技法は、常にハードウェアとソフトウェアとの組合せとすることができる。
【００５９】
本発明の実施形態について様々な図面の実施例に即して説明したが、本発明から逸脱することなく、他の同様の実施形態も使用することができ、本発明の同じ機能を実行するために上述の実施形態に変更および追加を加えることができることを理解されたい。さらに、特に無線ネットワーク装置の数が増大し続けるに伴い、ハンドヘルド装置オペレーティングシステムおよびその他の特定用途オペレーティングシステムを含めて、様々なコンピュータプラットフォームが企図されることを強調しておく必要がある。したがって、本発明は、１つの実施形態に限定されるべきではなく、特許請求の範囲に記載の範囲で解釈すべきである。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態による、メモリのページを含むデータベースファイルの一例を示す図である。
【図２】本発明の実施形態の一例による、空ページに書き込まれるページとして識別されたページを示すデータベースファイルの図である。
【図３】本発明の実施形態の一例による、スキップページとしてマークされたページとダーティページとしてマークされたページとを示すファイルの図である。
【図４】本発明の実施形態の一例による、自動縮小プロセスの完了時のデータベースファイルを示す図である。
【図５】本発明の一実施形態による、論理ＩＤを物理アドレスにマッピングするマッピングテーブルの一例を示す図である。
【図６】本発明の実施形態の一例による、自動縮小を実行するプロセスを示す例示の流れ図である。
【図７】本発明の実施形態の一例による、データベースファイルサイズを調整するシステムを示すブロック図である。
【図８】本発明の一実施例によるメモリサイズ調整方法およびシステムを実施することができる、適合するコンピューティングシステム環境の一例を示す図である。
【符号の説明】
【００６１】
５００  マッピングテーブル
５２  エントリ
５４  論理ＩＤ
５６  ページの物理ロケーション
９０  切り捨て部
９２  コントローラ
９４  割り当てインジケータ（ビットマップ生成部）
９６  システムメモリ
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  その他のプログラムモジュール
１３７  プログラムデータ
１４０  取り外し不能不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  その他のプログラムモジュール
１４７  プログラムデータ
１５０  取り外し可能不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
【図１】
2004362575.tif 000009
【図２】
2004362575.tif 000010
【図３】
2004362575.tif 000011
【図４】
2004362575.tif 000012
【図５】
2004362575.tif 000013
【図６】
2004362575.tif 000014
【図７】
2004362575.tif 000015
【図８】
2004362575.tif 000016