JP2004362575A - データベースのサイズを変更するための方法、コンピュータ可読媒体およびシステム - Google Patents

データベースのサイズを変更するための方法、コンピュータ可読媒体およびシステム Download PDF

Info

Publication number
JP2004362575A
JP2004362575A JP2004162500A JP2004162500A JP2004362575A JP 2004362575 A JP2004362575 A JP 2004362575A JP 2004162500 A JP2004162500 A JP 2004162500A JP 2004162500 A JP2004162500 A JP 2004162500A JP 2004362575 A JP2004362575 A JP 2004362575A
Authority
JP
Japan
Prior art keywords
page
file
pages
empty
dirty
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004162500A
Other languages
English (en)
Other versions
JP4537771B2 (ja
Inventor
Steven J Bailey
ジェイ.ベイリー スティーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004362575A publication Critical patent/JP2004362575A/ja
Application granted granted Critical
Publication of JP4537771B2 publication Critical patent/JP4537771B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 すべての空ページがファイルの最後にくるようにファイル内のページを操作することによって、データベースファイルの縮小を行う。
【解決手段】 ファイルの最後から空でないページがファイルの先頭にある空ページに書き込まれる。このプロセスを適切な回数だけ繰り返した結果として、空ページがすべてファイルの最後に存在するようになる。これが達成された後は、すべての空の廃棄可能ページによって使用されていた領域がファイルシステムに返されるように、ファイルの末端が切り捨てられる。ファイルの切り捨て処理では、空でない最初のページが見つかるまで、ファイルの最後からファイルを逆方向にトラバーサルする。ファイルは、最後の空でないページの後で切り捨てられる。
【選択図】 図3

Description

本発明は、一般にはデータベースに関し、詳細には、データベースファイルのサイズの自動変更(automatically resizing)に関する。
現在、データベースおよびデータベースプロダクトが一般的に使用されている。データベースは、レコード、テーブル、インデックスなどのオブジェクトを記憶することができる。オブジェクトの削除など、データベースに対して行われる様々な操作により、データベース内に空き領域(free space)(記憶域(memory))ができることがある。この空き領域は、通例、データベースファイル全体に分散し、したがってデータベースファイルから容易には除去することができない。この空き記憶域(free memory)は、データベース、特に携帯型(mobile)データベースプロダクトにとって問題になる。携帯型データベースプロダクトは、記憶容量および/または速度が限られた小型の携帯装置で一般的に使用される。したがって、記憶域の効率的な使用は、多くの携帯型データベースプロダクトの目標の1つである。
この空き記憶域(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)をファイルから切り捨てる。
本発明の特徴および利点は、添付図面と共に以下の説明を検討すれば最もよくわかるであろう。
本発明によるデータベース自動縮小は、データベースファイルのサイズを自動的に調整する機能を持つ。一般に、この自動縮小技法は、空ページがすべてファイルの一端に連続して配置されるように、ファイル内のページを移動する。次に、空のページが切り捨てられる。その後、切り捨てられたページは、データベースファイルシステムによる使用が可能になる。データベースファイルが切り捨てられるため、ファイルシステムに返された領域は、他のアプリケーションのために使用することができるようになる(例えば、ディスクスペースを解放する)。
図1は、メモリページを9ページ含むデータベースファイルを示す図である。図1は、データベース縮小がデータベースファイルに及ぼす作用の一例として示すものである。図1に示すように、ページ2、4、6、および8は空であり、ページ1、3、5、7、および9は空でない(陰影部分)。図示されている空ページ、空でないページ、およびページ数の構成は、例示的なものである。空ページは、データベースのうち、ユーザにとって関心のない情報が格納されているページ、例えば、データが格納されていないページや、データベース管理システムによって割り当て解除されたページである。したがって、空ページは、廃棄されるか、または他者(例えば他のユーザ)によって使用されることができる。空でないページは、データベースのユーザにとって関心のある内容が格納されたページである。図1に示すファイルには、空ページが4ページと、空でないページが5ページ含まれている。図1のファイル内の総ページ数は9ページであるが、関心のあるページは5ページのみである。空の4ページを廃棄すれば、ファイルのサイズをわずか5ページに縮小することができる。
一実施例では、ファイルの一端から空でないページが、ファイルの他端付近の空のページにコピーされる。例えば、(ファイルの右側に近い)空でないページ7および9の内容を、(ファイルの左側に近い)空のページ2および4にコピーすることができる。その結果、不要なページの連続ブロックの一部が、データベースファイルの最後に置かれることになり、ファイルの末端を切り捨てることができる。図2は、空ページに書き込まれるページとして示されているページ7およびページ9を示すデータベースファイルを示す図である。ページをファイルの一端からファイルの他端に書き込む前に、書き込まれるページが識別される。図2に黒い斜線で示すように、ページ7およびページ9は、空ページに書き込まれるページとして識別済みである。ページ7および9が識別された後は、ファイルの他端にある空ページに書き込むことができる。図2に破線の矢印で示すように、ページ7および9がページ2および4に書き込まれる。図2に示すように、ページ7はページ4に書き込まれ、ページ9はページ2に書き込まれる。このパターンは例示的なものである。例えば、ページ7をページ2に書き込み、ページ9をページ4に書き込むこともできる。ページの記憶場所が維持されている限り、内容が格納されている実際のページに関係なく、ページ7および9の内容を取り出すことができる。ページの記憶場所は、論理識別子(ID)を使用して維持される。論理IDおよび論理IDを使用するページ維持については、以下で詳述する。
コピーされるページが存在するファイルの一端(図2の右側)から開始し、他端に向かってファイルを逆戻りにトラバーサルすることによって、ページ7および9が空ページにコピーされるページとして選択される。この例では、このプロセスは、ページ9から始まり、ページ1に向かって進む。ページに遭遇するたびに、そのページが空であるか否かが判断される。ページが空であるか空でないかの判断は、ページヘッダの解析など、任意の適切な手段によって行うことができる。トラバーサル中にページに遭遇すると、空ページである場合はスキップページとしてマークされ、空でないページの場合にはダーティページとしてマークされる。
図3は、スキップページとしてマークされたページ6および8と、ダーティページとしてマークされたページ7および9を示す、ファイルの図である。この例では、ページ9からトラバーサルを開始し、ページ1に向かって進み、ページ9は空でなく、ダーティページとしてマークされ、ページ8は空であり、スキップページとしてマークされ、ページ7は空でなく、ダーティページとしてマークされ、ページ6は空であり、スキップページとしてマークされる。このトラバーサルプロセスは、この時点で停止し、ページ7および9がページ2および4に書き込まれる。一実施形態では、トラバーサルプロセスはスキップページとダーティページとの合計がファイル内の空ページの数以上になるまで続く。これを以下の数式で示す。
Σ(スキップページ+ダーティページ)≧#ファイル内の空ページ数 (1)
ページに遭遇するたびに、式(1)の値が計算され、ダーティページとスキップページとの合計がファイル内の空ページの数より少ない場合、トラバーサルプロセスはトラバーサル順に次のページに進む。ダーティページとスキップページとの合計が、ファイル内の空ページの数以上の場合、トラバーサルプロセスは停止し、まだトラバーサルされていないファイル内の部分に含まれている空ページにダーティページが書き込まれる。図3を参照すると、ファイル内の空ページの総数は4である。ページ9から開始すると、ページ9は空ではなく、したがってダーティページとしてマークされる。これで合計数は1であり、4より少ないため、トラバーサルはページ8に進む。ページ8は空であり、したがってスキップページとしてマークされる。これで合計数は2となり、したがってトラバーサルはページ7に進む。ページ7は、空でなく、したがってダーティページとしてマークされる。これで合計数は3になり、トラバーサルはページ6に進む。ページ6は空であり、したがってスキップとしてマークされる。これで合計は4になり、したがってトラバーサルプロセスは停止される。ここでページ7および9の内容が、ファイルのうちのまだトラバーサルされていない部分にある空ページに書き込まれる。ページ1から5はまだトラバーサルされていない。ページ2および4は、ファイルのうちのまだトラバーサルされていない部分にある空ページである。したがって、ページ7および9は、ページ2および4に書き込まれる。
図4は、自動縮小プロセスの完了時におけるデータベースファイルを示す。空ページとダーティページは除去されている。残りのページは空でないページである。ページ1、3、および5には、自動縮小プロセスの開始前と同じ内容が格納されている。前に空だったページ2および4には、ファイル内の他の記憶場所にあった空でないページの内容が格納されている。
一実施例では、自動縮小プロセスの様々な構成を設定し、制御する様々なコントロールが設けられる。これらのコントロールは、例えばデータベースを開くときなど、任意の適切な時点で与えることができる。このようなコントロールとしては、空ページ閾値、最大実行制限時間、再試行間隔などがある。これらのコントロールは、個別に、または任意に組み合わせて使用することができる。
空ページ閾値(empty page threshold)は、ファイル内の総ページに占める割合で表される値である。空ページ閾値は、自動縮小プロセスを開始するために使用することができる。例えば、ファイル内の空ページの割合が空ページ閾値と比較される。ファイル内の空ページの割合が空ページ閾値を超える場合、自動縮小プロセスが開始する。したがって、空ページ閾値がゼロに設定された場合、最初の空ページが存在する時点で自動縮小プロセスが開始されることになる。空ページ閾値が100%に設定された場合、(空ページの割合が100になるには、データベース全体にデータがまったく格納されていない必要があるため)自動縮小プロセスは決して開始されない。
最大実行制限時間(maximum execution time limit)は、自動縮小プロセスを実行することができる時間の長さを制限する。一実施形態では、最大実行制限時間は、ミリ秒単位で表される。自動縮小プロセスの実行時間を制限することにより、システムのCPUサイクル数を節約することができる。最大実行制限時間を無限大に設定すると、自動縮小プロセスは完了するまで実行することができ、したがってデータベースファイル内から空ページがすべて除去される。最大実行制限時間がゼロと無限大との間の値に設定され、自動縮小プロセスがその指定された時間より長く実行された場合、自動縮小プロセスは、その実行中に除去することができた空ページの数だけファイルを縮小し、その後、実行を停止する。したがって、最大実行制限時間は、システムを長時間拘束することなく、データベースファイルのサイズを漸進的に縮小することができる機能を持つ。
再試行間隔(retry interval)は、自動縮小プロセスが実行されてから自動縮小プロセスが再開(例えば再始動)することができるまでの時間の値である。再試行間隔は、自動縮小プロセスを再び開始するまでの待ち時間の長さである。例えば、再試行間隔を使用して、空ページの割合が空ページ閾値を超えるデータベースの縮小を試行し続ける頻度を設定することができる。再試行時間間隔は、最大実行制限時間が制限されていない場合(例えば無限大に設定されている場合)には効力がない。最大実行時間が制限されていない場合、自動縮小プロセスは完了するまで続き、ファイルから空ページをすべて削除し、したがって、自動縮小を再試行する必要がなくなる。
上記の3つのコントロール、すなわち空ページ閾値、最大実行制限時間、および再試行間隔をどのように使用することができるかの例を、以下に示す。トランザクションがコミットされ、ディスクにフラッシュされた後、空ページの割合が、ユーザ指定の空ページ閾値を超えるか否かが判断される。空ページ閾値を超えた場合、自動縮小プロセスが最大実行制限時間の間実行される。最大実行制限時間を超えたために縮小プロセスが終了し、空ページ数がまだ空ページ閾値を超える場合、自動縮小プロセスは、自動縮小再試行間隔が経過すると、再びデータベースファイルの縮小を試みる。
前述のように、空でないページを空のページに書き込むときに、ページの記憶場所が維持される。一般的なデータベースプロダクトは、ファイル内のページの物理アドレスを表すページ識別子を使用する。例えば、典型的なデータベースプロダクトは、データベースファイルの先頭からのページの論理オフセットによって各ページを識別する。しかし、この手法は、ページに対するすべての参照をそのページの新しい記憶場所を反映するように更新しなければならないため、ページをデータベースファイル内の1つの場所から他の場所に移動するのを困難にする。
したがって、本発明の一実施例では、データベースファイル内のページを論理ページ識別子(ID)によって識別する。データベース内では、ページは論理IDを使用してアクセスされ、追跡される。論理ページIDは、物理ページアドレス、すなわち、ファイル内へのページのオフセットにマップされる。このマッピングは、任意の適切な手段によって行うことができる。一実施例では、論理ページIDの物理アドレスへのマッピングは、マッピングテーブルを介して行われる。図5は、論理ID54を物理アドレス56にマッピングするためのマッピングテーブル500の一例を示す図である。マッピングテーブル500は、データベースファイルに1組のページとして格納することができる。各マッピングテーブル500は、論理ページID54をそれぞれのメモリページの物理ページアドレス56(記憶場所とも呼ぶ)にマップするエントリ52を含む。ページがアクセスされると、そのページはその論理アドレスによって識別され、マッピングテーブル500を使用してその論理アドレスが物理アドレスに変換される。このプロセスは、仮想アドレスシステムがアドレス変換テーブルを使用して仮想アドレスを物理アドレスにマップする方法に似ている。ページの物理ロケーションが変更されると(例えばデータがデータベースにフラッシュされると)、マッピングテーブル500内の対応するエントリが更新される。そのエントリについて、移動されるページの論理ページID54は変化しないが、ページの移動先の物理アドレスが、マッピングテーブル500内のエントリ52の物理ロケーション部分56に入れられる。論理ページIDを使用してページを識別する場合、データベースファイル内の1つの場所から他の場所にページを移動する管理上の負担が軽減され、したがって、論理ページIDの使用は、多くのページをファイルの最後から先頭に向かって頻繁に移動する自動縮小プロセスを支援することになる。
上記の例(図3参照)を参照すると、ページ7の内容をページ4に書き込むとき、それらの内容に関連づけられた論理IDは変化しない。その論理IDに関連づけられた物理アドレス(physical location)が、その新しい記憶場所を反映するように更新される。したがって、ページ7の内容に関連づけられた論理ページIDは変化せず、その論理ページIDに関連づけられた物理アドレスが、ページ7の記憶場所からページ4の記憶場所へと変化する。データベースシステムは、論理ページIDによってページにアクセスする。一実施例では、論理ページIDには、論理IDの参照先のページのタイプを示す特定の値が割り当てられる。例えば、特定の範囲の論理ページIDが、マッピングテーブルページを参照し、別の範囲がデータページ(例えばインデックスやレコードなどのデータベースコンテキストを含むページ)を参照することもできる。
前述のように、本発明の一実施形態による自動縮小プロセスでは、空でないページの内容を空のページに書き込む。このプロセス時に、解放されることになるページと、使用されるようになるページとがある。割り当てインジケータを使用して、ページの割り当て状況(allocation status)が示される。割り当てインジケータは、論理IDと物理ページの状況(利用可能か利用不能か、空きか使用中か)を示す。状況を示すための任意の適切な手段を使用することができる。一実施例では、ビットマップを使用して論理IDの割り当て状況が示される。論理ID割り当てビットマップ(logical ID allocation bitmap)は、マッピングテーブル(例えばマッピングテーブル500)内の各エントリのためのビットを含む。一実施例では、1に設定されたビットは、対応するエントリが割り当て済み(利用不能)であることを示す。0に設定されたビットは、対応するエントリが空いている(利用可能)ことを示す。自動縮小プロセス中に、ビットマップ値0を探索することによって、利用可能ページを探し出すことができる。見つかったページが新たに割り当てられていることを示すために、対応するビットマップエントリが1に変更される。ダーティページの内容が空ページに書き込まれるとき、ダーティページの物理IDが割り当て済み(使用中または利用不能ページとも呼ぶ)としてマークされ、前に空だったページのIDは未割り当て(空きまたは利用可能とも呼ぶ)としてマークされる。
一実施例では、論理ID割り当てビットマップは、データベースファイルに1組のページとして格納される。他の実施形態では、このビットマップは、データベースが開かれると初期設定される。初期設定は、マッピングテーブル内のすべてのエントリを列挙することによって行うことができる。ページエントリにページの有効物理アドレスが入っている場合、そのページエントリに対応するページIDが割り当て済みとしてマークされる。すべてのエントリがトラバーサルされると、ビットマップはページIDの現在の割り当て状況を示すことになる。
この割り当てビットマップ(allocation bitmap)は、データベースファイル内に格納することができる。例えば、最大データベースファイルサイズが232バイト(4ギガバイト)であり、データベースページサイズが4,096バイトである場合、最大220個の論理ページIDができる。したがって、131,072バイトを使用して、論理ページID割り当てビットマップを実現することができる。割り当てビットマップを使用することによって、メンテナンスページの変更や読取りを行うことなく、論理ページIDを解放かつ/または割り当てすることができる。これにより、同時に複数のトランザクションがデータベース内でページIDの割り当てと解放を行うことができるようになり、並行性が向上する。また、ビットマップとページエントリがすべてデータベースファイル内に格納されるため、割り当てビットマップの使用は論理ページIDの割り当てと解放のための強固な機構となる。
ビットマップがメモリに読み込まれた後、またはページエントリのトラバーサルによって計算された後は、割り当て/解放するページに対応するビットが現れるまでビットマップ内のビット数をカウントすることによって、ページの割り当てと解放を行うことができる。論理ページIDを解放するには、単にビットを1から0に変更するだけである。論理ページIDを割り当てるには、単にビットを0から1に変更するだけである。
論理ページIDの割り当て(allocating)および解放(freeing)を行う上記と同じビットマップ型機構は、物理ページアドレスの割り当ておよび解放にも適用可能である。その場合、ビットマップは、データベースファイル内の各物理ページアドレスについて1ビットを有する。一実施例では、1に設定されたビットは、物理ページアドレスが割り当てられていることを示す。0に設定されたビットは、物理ページアドレスが空いていることを示す。物理ページアドレスは、空のページにダーティページが書き込まれると割り当てられる。本明細書に記載されているようにメモリサイズを調整することによって、空/未使用ページの物理ページアドレスを効率的に見つけることが可能になる。一実施例では、この物理アドレス割り当てビットマップは、データベースファイルに格納される。他の実施形態では、物理アドレス割り当てビットマップは、データベースを開くときにデータベースページをトラバーサルすることによって計算される。ビットマップを計算する場合、論理ページIDビットマップを計算するのと同時に計算することができるが、これは同じ1組のページがトラバーサルされるためである。物理ページアドレスを解放する技法は、前述のように論理ページIDを解放するのと同じ技法である。物理ページアドレスを割り当てる技法は、論理ページIDを割り当てるのとほとんど同じである。相違点は、既存の物理ページアドレスが空いていない場合、データベースファイルが拡張され、データベースファイルに付加された新しい物理ページアドレスが、アドレスビットマップ内で空き物理ページアドレスとしてマークされることである。
図6は、自動縮小を実行するプロセスの例示の流れ図である。ステップ60において、ファイル内の総ページ数が判断される。ステップ62において、ファイル内の空ページ数が判断される。この数は、任意の適切な手段によって判断することができる。ファイル内の総ページ数と空きページ数を適切に判断する例としては、ファイルのトラバーサルおよび/または割り当てインジケータ(例えばビットマップ)のトラバーサルがある。他の実施形態では、総ページ数と空ページ数は、データベースシステムによってこのプロセスに提供される。ステップ64において、総ページ数に対する空ページ数の割合が判断される。この割合を表す任意の適切な値を使用することができる。例えば、この値は、空ページ数を総ページ数で割り、その商に100を掛けることによって求めることができる。これは、以下のように、PCV(パーセント値)として数学的に表すことができる。
Figure 2004362575
ステップ66において、PCVが空ページ閾値以上であるか否かが判断される。ステップ66は省略可能である。すなわち、空ページ閾値は設定されていなくてもよい。空ページ閾値が設定されていない場合、プロセスはステップ64から直接ステップ68へ進む。空ページ閾値が設定されている場合、およびPCVが空ページ閾値未満の場合、ステップ74で再試行インターバル値以上の時間だけ待った後、プロセスはステップ60に進む。再試行インターバル値がゼロに設定されている場合、プロセスは直接、ステップ60に進む。再試行インターバル値が無限大に設定されている場合は、プロセスはステップ60に進むことはない。なお、図6に示されているステップ60とステップ62の順序は例示的なものであり、任意の順序が適用可能であることを理解されたい。すなわち、ステップ60をステップ62の前に行うことができ、ステップ62をステップ60の前に行うことができ、またはステップ60とステップ62を同時に行うこともできる。
ステップ68において、トラバーサルの始点がファイルの最終ページに定められる。ステップ68は、ファイルの最後にある最終ページに進むように図示されているが、トラバーサルはファイルのいずれの一端からでも開始することができる。例えば、図3を参照すると、トラバーサルはページ9から開始し、ページ1に向かって進んでもよいし、あるいはトラバーサルはページ1から開始し、ページ9に向かって進んでもよい。最初のトラバーサル例(右から左)では、空のページは右にあり、後者のトラバーサル例(左から右)では、空ページは左にある。ステップ70において、ファイルの一端のページからトラバーサルプロセスが開始する。ステップ70において、ページに遭遇したとき、そのページが空の場合はスキップページとしてマークされ、空でない場合はダーティページとしてマークされる。遭遇したページがダーティページまたはスキップページとしてマークされた後、ステップ78において、スキップページとダーティページの累計が空ページ数と比較される。この合計が、空ページ数より少ない場合、トラバーサルはステップ76のトラバーサルで次のページに進み、ステップ70でトラバーサルプロセスが続行される。ダーティページとスキップページとの合計が、空ページ数以上の場合、ステップ80でダーティページが空ページに書き込まれる。ダーティページは、ファイルのうちのまだトラバーサルされていない部分にある空ページに書き込まれる。ステップ82において、ダーティページとスキップページは未割り当てページとしてマークされる。前述のように、割り当て状況はビットマップによって達成できる。未割り当てページ(ダーティページとスキップページ)は、ステップ82で切り捨てられる。ステップ86において、ダーティページとスキップページの数がリセットされ、それにより、次にステップ78が実行されるときに、例えばスキップページとダーティページの数をカウントするために使用されるカウンタに残余値が残っていないようにする。
図6に示すプロセスの任意の時点で、最大実行時間が経過した場合(ステップ72)、プロセスはステップ80に飛び、前述のようにプロセスが進行する。したがって、この自動縮小プロセスは、データベースファイルを漸進的に縮小することができる機能を備えると同時に、CPUサイクルを節約することができる。
以下の表1−1から表1−4は、データベースにおけるファイルサイズの調整を行うプロセスの一例を、疑似コード(pseudo code)で示す。以下の疑似コードは、上述の技法を実施するいくつかの機構を示すものである。この疑似コードは、データベース内の空ページと空でないページを追跡し、空ページとダーティページをファイルの他端に移動するのにどれだけの数のページをファイルの一端に移動する必要があるかを判断し、ダーティページを書き込み、空ページとダーティページを切り捨てる機構を示している。
Figure 2004362575
Figure 2004362575
Figure 2004362575
Figure 2004362575
Figure 2004362575
図7は、データベースファイルサイズを調整するシステムの一例を示すブロック図である。一実施例では、このシステムを使用してデータベースのメモリサイズを調整する。したがって、そのような文脈で説明する。このシステムは、システムメモリ96と、割り当てインジケータ94と、コントローラ92と、切り捨て部90とを含む。システムメモリ96は、ファイルの形に構成されたメモリページを含む。システムメモリ96は、半導体メモリ、磁気メモリ(例えばディスク)、光メモリ、またはこれらの組合せなど、任意の適切な種類のメモリで構成することができる。システムメモリ96は、データを永続的に記憶する機能を備えた永続メモリで構成するのが典型的であり、好適である。したがって、通常の動作条件では、永続メモリに書き込まれたデータは、そのデータが特に除去および/または書直しされるまでは利用可能である。
割り当てインジケータ94は、前述のように、ダーティページおよびスキップページの論理IDおよび物理アドレスの割り当て状況を示す機能を実行する。割り当てインジケータは、(ファイルのトラバーサル中に)遭遇したページが空の場合はそのページをスキップページとして示す。割り当てインジケータは、遭遇したページが空でないページの場合は、そのページをダーティページとして示す。また、前述のように、割り当てインジケータ94は、切り捨ての前に、各ダーティページおよび各スキップページを未割り当てページとして示す。一実施例では、ページ割り当てインジケータ94は、前述のように、割り当て状況を示すビットマップを含む。
コントローラ92は、前述のメモリサイズの調整に付随する多くの機能を実行する。コントローラ92は、ファイルの一端にある最終ページからトラバーサルプロセスを開始し、ファイルの他端にある最初のページに向かってトラバーサルプロセスを続ける。コントローラ92は、スキップページとダーティページとの合計が、ファイル内の空ページの総ページ数以上であるか否かを判断し、合計がファイル内の空ページの総ページ数より少ない場合、トラバーサル順でファイル内の次のページでトラバーサルプロセスを続行する。合計が、空ページの総ページ数以上である場合、コントローラは、ダーティページの内容を、ファイル内のまだトラバーサルされていない空ページに書き込む。切り捨て部90は、前述のように、未割り当てページをファイルから切り捨てる。
§適合するコンピューティングシステム環境の概要について:
図8は、メモリサイズの調整方法およびシステムを実施することができる、適合するコンピューティングシステム環境100の一例を示す。このコンピューティング環境100は、適合するコンピューティング環境の一例に過ぎず、指示要素を動的かつ個別に制御する方法およびシステムの使用または機能の範囲に関して制限を加えることを示唆するものではない。また、このコンピューティング環境100は、この例示の動作環境100に図示されている構成要素の1つまたは組合せに関する依存や要件を有するものと解釈すべきではない。
このメモリサイズ調整方法およびシステムは、他の多くの汎用または特殊目的コンピューティングシステム環境または構成でも動作可能である。表示要素(display element)を動的かつ個別に制御する方法およびシステムと共に使用するのに適合する、よく知られているコンピューティングシステム、環境および/または構成としては、パーソナルコンピュータ、サーバコンピュータ、手持ち型装置、ラップトップ装置、マルチプロセッサシステム、マイクロプロセッサ内蔵システム、セットトップボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたは装置などを含む分散コンピューティング環境などがあるが、これらには限定されない。
メモリサイズの調整方法およびシステムについて、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令という一般的背景で説明する場合がある。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データタイプを実現する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、このメモリサイズ調整方法およびシステムは、通信ネットワークまたはそのデータ伝送媒体によってリンクされたリモート処理ユニットによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールおよびその他のデータを、メモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体に配置することができる。
図8を参照すると、メモリサイズ調整方法およびシステムを実施するシステムの一例は、コンピュータ110の形態の汎用コンピューティング装置を含む。コンピュータ110の構成要素としては、処理ユニット120、システムメモリ130、およびシステムメモリ130を含めて様々なシステム構成要素を処理ユニット120に結合するシステムバス121などがあるが、これらには限定されない。システムバス121は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む様々な種類のバス構造のいずれかとすることができる。例えば、このようなアーキテクチャとしては、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダードアソシエーション(Video Electronics Standards Association:VESA)ローカルバス、ペリフェラルコンポーネントインターコネクト(PCI)バス(メザニンバスとも呼ぶ)などがあるが、これらには限定されない。
コンピュータ110は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる、任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不能媒体の両方を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体とを含むことができるが、これには限定されない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための方法および技術で実現された、揮発性および不揮発性の、取り外し可能および取り外し不能媒体を含む。コンピュータ記憶媒体には、所望の情報を記憶するために使用することができ、コンピュータ110がアクセスすることができる、RAM、ROM、EEPROM、フラッシュメモリもしくはその他のメモリ技法、CD−ROM、デジタル多用途ディスク(DVD)もしくはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶装置、またはその他の任意の媒体が含まれるが、これらには限定されない。通信媒体は、一般に、搬送波などの変調データ信号またはその他の伝送機構の形態の、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実現し、任意の送達媒体を含む。「変調されたデータ信号(modulated data signal)」という用語は、情報を信号の形態でコード化するように設定または変更された1つまたは複数の特徴を有する信号を意味する。例えば、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体と、音波、RF、赤外線、またはその他の無線媒体などの無線媒体が含まれるが、これらには限定されない。これらの媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれるものと理解されたい。
システムメモリ130には、ROM131やRAM132などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体が含まれる。始動時などにコンピュータ110内の要素間で情報を伝送するのを支援する基本ルーチンを含む、基本入出力システム133(BIOS)が、典型的にはROM131に記憶される。RAM132は、一般には、処理ユニット120が直ちにアクセス可能および/または現在操作中のデータおよび/またはプログラムモジュールが格納される。例えば、図8には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137が図示されているが、これらには限定されない。
コンピュータ110は、他の取り外し可能/取り外し不能な、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。例えば、図8には、取り外し不能な不揮発性の磁気媒体の読み書きを行うハードディスクドライブ141と、取り外し可能な不揮発性磁気ディスク152の読み書きを行う磁気ディスクドライブ151と、CD−ROM、CDRW、またはその他の光媒体などの取り外し可能な不揮発性光ディスク156の読み書きを行う光ディスクドライブ155とが図示されている。例示の動作環境で使用可能なその他の取り外し可能/取り外し不能な揮発性/不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがあるが、これらには限定されない。ハードディスクドライブ141は、一般には、インターフェース140などの取り外し不能メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、一般には、インターフェース150などの取り外し可能メモリインターフェースによってシステムバス121に接続される。
上述した図8に図示するドライブおよびそれに付随するコンピュータ記憶媒体は、コンピュータ110のために、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶域を提供する。例えば図8では、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして図示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じ場合も異なる場合もあることに留意されたい。本明細書では、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には、少なくとも異なるコピーであることを示すために異なる番号が付してある。ユーザは、キーボード162や、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの入力装置を介して、コンピュータ110にコマンドと情報を入力することができる。その他の入力装置(図示せず)として、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなども備えることができる。上記およびその他の入力装置は、システムバス121に結合されたユーザ入力インターフェース160を介して処理ユニット120に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)など、他のインターフェースおよびバス構造によって接続することもできる。モニタ191またはその他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、スピーカ197やプリンタ196など他の周辺出力装置も備えることができ、それらは出力周辺装置インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など、1または複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、またはその他の共通ネットワークノードとすることができ、一般には、コンピュータ110に関連して前述した要素の多くまたは全部を含むことができるが、図8にはメモリ記憶装置181のみが図示されている。図の論理接続は、ローカルエリアネットワーク(LAN)171とワイドエリアネットワーク(WAN)173とを含むが、他のネットワークも含むことができる。このようなネットワーク環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットで一般的に使用されている。
LANネットワーク環境で使用する場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は一般に、インターネットなどのWAN173を介した通信を確立するためのモデム172またはその他の手段を備える。モデム172は、内蔵または外付けモデムとすることができ、ユーザ入力インターフェース160またはその他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関連して図示されているプログラムモジュールまたはその一部を、リモートメモリ記憶装置に記憶することもできる。例えば、図8には、リモートアプリケーションプログラム185がメモリ装置181に常駐するものとして図示されているが、これらには限定されない。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立するその他の手段も使用可能であることがわかるであろう。
パーソナルコンピューティングとインターネットとの統合を考慮して、様々な分散コンピューティングフレームワークが、従来から開発され、現在も開発されている。個人と企業ユーザとを問わず、アプリケーションおよびコンピューティング装置用の、シームレスに相互運用可能なウェブ対応インターフェースを備えており、コンピュータ活動がますますウェブブラウザまたはネットワーク指向になりつつある。
例えば、MICROSOFT(登録商標)の.NETプラットフォームは、サーバ、ウェブベースのデータ記憶などのビルディングブロックサービス、およびダウンロード可能デバイスソフトウェアを含む。おおざっぱに言えば、.NETプラットフォームは、(1)あらゆる種類のコンピューティング装置が共に稼働することができるようにし、そのすべての装置上でユーザ情報を自動的に更新し、同期させる機能、(2)HTMLではなくXMLの使用が増大したことにより可能となったウェブサイトのための向上した対話機能、(3)カスタマイズされたアクセスと、例えば電子メールなどの様々なアプリケーションやOffice .NETなどのソフトウェアの管理のための製品およびサービスを中央の起点からユーザに配信する機能を特徴とするオンラインサービス、(4)情報へのアクセスをより効率的かつ容易にする集中データ記憶と、ユーザ間および装置間での情報の同期、(5)電子メール、ファクス、電話などの様々な通信媒体の統合を可能にする機能、(6)開発者にとっては、再使用可能モジュールを作成し、それによって生産性を向上させ、プログラミングエラー件数を少なくする機能、および(7)その他の多くのプラットフォーム間統合機能を備える。
本明細書では実施例について、コンピューティング装置上にあるソフトウェアとの関連で説明したが、このメモリサイズ調整方法およびシステムの1または複数の部分を、オペレーティングシステム、アプリケーションプログラムインターフェース(API)、または、コプロセッサと要求側オブジェクトとの間の「中間」オブジェクトを介して実施し、それによって、.NETのすべての言語およびサービスを介して、サービスの実行、サポート、アクセスを行うことも、他の分散コンピューティングフレームワークにおいても行うことができるようにすることもできる。
本明細書に記載のメモリサイズ調整方法は、コンピュータ実施プロセスおよびそれらのプロセスを実施するシステムの形態で実施することができる。本明細書に記載のメモリサイズ調整方法は、フロッピィディスケット、読取り専用メモリ(ROM)、CD−ROM、ハードドライブ、高密度ディスク、またはその他のコンピュータ可読記憶媒体など、有形媒体で実施されたコンピュータプログラムコードの形態で実施することもでき、このコンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは本発明を実施するシステムとなる。本明細書に記載のメモリサイズ調整方法は、例えば、記憶媒体に記憶されるか、コンピュータにロードされ、かつ/またはコンピュータにより実行されるか、電気配線またはケーブル、光ファイバ、または電磁放射などの何らかの伝送媒体を介して伝送されるかを問わず、コンピュータプログラムコードの形態で実施することができ、そのコンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されると、コンピュータは本発明を実施するシステムとなる。汎用プロセッサ上で実施された場合、コンピュータプログラムコードセグメントは、特定の論理回路を形成するようにプロセッサを構成する。
本明細書に記載の様々な技法は、ハードウェアまたはソフトウェア、あるいは、適切な場合は、両者の組み合わせと共に実施することができる。したがって、本発明の方法および装置、またはその特定の態様および部分は、フロッピィディスケット、CD−ROM、ハードドライブ、またはその他の機械可読記憶媒体などの有形の媒体で実現されたプログラムコード(すなわち命令)の形態をとることができ、そのプログラムコードを、コンピュータなどの機械にロードして実行すると、その機械は本発明を実施する装置となる。プログラム可能コンピュータでのプログラムコードの実行の場合、コンピューティングデバイスは、通常、プロセッサと、プロセッサが読み取ることができる記憶媒体(揮発性および不揮発性メモリおよび/または記憶素子を含む)と、少なくとも1つの入力装置、少なくとも1つの出力装置とを備える。例えばデータ処理APIなどの使用を介して本発明の信号処理サービスを使用することができる1つまたは複数のプログラムは、コンピュータ通信をするために高水準手続き型言語またはオブジェクト指向プログラミング言語で実現することが好ましい。しかし、必要であれば、プログラムをアセンブリ言語または機械言語で実現することもできる。いずれの場合も、言語はコンパイラ型言語またはインタプリタ型言語とすることができ、ハードウェア実施態様と組み合わせることができる。
本発明の方法および装置は、電気配線またはケーブル、光ファイバ、またはその他の形態の伝送などを介した何らかの形態の伝送媒体を介して伝送されるプログラムコードの形態で実現された通信を介して実施することもでき、プログラムコードが、EPROM、ゲートアレイ、プログラマブルロジックデバイス(PLD)、クライアントコンピュータ、ビデオレコーダなどの機械、または前述の実施例で説明した信号処理機能を有する受信側機械によって受け取られ、ロードされ、実行されると、その機械は本発明を実施する装置となる。汎用プロセッサ上で実施した場合、プログラムコードは、プロセッサと組み合わさって、本発明の機能を実行するように動作する固有の装置を実現する。さらに、本発明と共に使用される記憶技法は、常にハードウェアとソフトウェアとの組合せとすることができる。
本発明の実施形態について様々な図面の実施例に即して説明したが、本発明から逸脱することなく、他の同様の実施形態も使用することができ、本発明の同じ機能を実行するために上述の実施形態に変更および追加を加えることができることを理解されたい。さらに、特に無線ネットワーク装置の数が増大し続けるに伴い、ハンドヘルド装置オペレーティングシステムおよびその他の特定用途オペレーティングシステムを含めて、様々なコンピュータプラットフォームが企図されることを強調しておく必要がある。したがって、本発明は、1つの実施形態に限定されるべきではなく、特許請求の範囲に記載の範囲で解釈すべきである。
本発明の一実施形態による、メモリのページを含むデータベースファイルの一例を示す図である。 本発明の実施形態の一例による、空ページに書き込まれるページとして識別されたページを示すデータベースファイルの図である。 本発明の実施形態の一例による、スキップページとしてマークされたページとダーティページとしてマークされたページとを示すファイルの図である。 本発明の実施形態の一例による、自動縮小プロセスの完了時のデータベースファイルを示す図である。 本発明の一実施形態による、論理IDを物理アドレスにマッピングするマッピングテーブルの一例を示す図である。 本発明の実施形態の一例による、自動縮小を実行するプロセスを示す例示の流れ図である。 本発明の実施形態の一例による、データベースファイルサイズを調整するシステムを示すブロック図である。 本発明の一実施例によるメモリサイズ調整方法およびシステムを実施することができる、適合するコンピューティングシステム環境の一例を示す図である。
符号の説明
500 マッピングテーブル
52 エントリ
54 論理ID
56 ページの物理ロケーション
90 切り捨て部
92 コントローラ
94 割り当てインジケータ(ビットマップ生成部)
96 システムメモリ
110 コンピュータ
120 処理ユニット
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 取り外し不能不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取り外し可能不揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ

Claims (17)

  1. ファイルのサイズを調整する方法であって、
    (a)前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むステップと、
    (b)遭遇したページが空である場合、前記遭遇したページをスキップページとして示すステップと、
    (c)前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示すステップと、
    (d)スキップページにダーティページを加えた合計と、前記ファイル内の空ページの総ページ数とを比較するステップとを含み、
    前記合計が前記空ページの総ページ数より少ない場合、前記ファイルを次のページまでトラバーサルしてステップ(b)、(c)、および(d)を実行し、
    前記合計が前記空ページの総ページ数以上である場合、前記ダーティページの内容を、前記ファイルのまだトラバーサルされていない空ページに書き込み、
    各ダーティページおよび各スキップページを未割り当てページとして示し、
    前記未割り当てページを前記ファイルから切り捨てる、
    ことを特徴とする方法。
  2. 前記ファイルの総ページ数に対する前記ファイルの空ページの割合が空ページ閾値以上であるか否かを判断するステップと、
    前記割合が前記空ページ閾値以上である場合に、前記ファイルの前記トラバーサルを開始するステップと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記ファイルの前記最終ページに最も近いダーティページから開始して、前記ファイルの前記最初のページに向かって進み、前記空ページにダーティページを書き込む、ことを特徴とする請求項1に記載の方法。
  4. 前記トラバーサルを開始してから最大実行時間が経過したか否かを判断するステップと、
    前記最大実行時間が経過した場合、
    前記ダーティページの内容を、まだトラバーサルされていない前記ファイルの空ページに書き込むステップと、
    各ダーティページおよび各スキップページを未割り当てページとして示すステップと、
    前記未割り当てページを前記ファイルから切り捨てるステップと、をほぼ直ちに開始するステップと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  5. 各ダーティページおよび各スキップページの割り当て状況を示すビットマップを生成するステップと、
    各ダーティページおよび各スキップページを未割り当てページとして示す前記ステップに従って前記ビットマップを更新するステップと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記ファイル内の総ページ数を判断するステップと、
    前記ファイル内の空ページ数を判断するステップと、
    前記総ページ数に対する空ページの割合を判断するステップと、
    前記割合の値を空ページ閾値と比較するステップと、
    前記割合の値が前記空ページ閾値以上である場合、
    前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むステップと、
    (a)遭遇したページが空である場合、前記遭遇したページをスキップページとして示すステップと、
    (b)前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示すステップと、
    (c)スキップページにダーティページを加えた合計を前記空ページの数と比較するステップと、
    前記合計が前記空ページの数より少ない場合、前記ファイルを次のページまでトラバーサルし、ステップ(a)、(b)、および(c)を実行するステップと、
    前記合計が前記空ページの数以上である場合、
    前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込むステップと、
    各ダーティページおよび各スキップページを未割り当てページとして示すステップと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  7. ファイルのサイズを調整する方法であって、
    前記ファイル内の総ページ数を判断するステップと、
    前記ファイル内の空ページ数を判断するステップと、
    前記総ページ数に対する空ページの割合を判断するステップと、
    前記割合の値を空ページ閾値と比較するステップと、
    前記割合の値が前記空ページ閾値以上である場合、
    前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むステップと、
    (a)遭遇したページが空である場合、前記遭遇したページをスキップページとして示すステップと、
    (b)前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示すステップと、
    (c)スキップページにダーティページを加えた合計を前記空ページの数と比較するステップと、
    前記合計が前記空ページの数より少ない場合、前記ファイルを次のページまでトラバーサルし、ステップ(a)、(b)、および(c)を実行し、
    前記合計が前記空ページの数以上である場合、
    前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込み、
    各ダーティページおよび各スキップページを未割り当てページとして示し、
    前記未割り当てページを前記ファイルから切り捨てる、
    ことを特徴とする方法。
  8. コンピュータプロセッサに対してメモリのサイズを調整するよう指示するコンピュータプログラムコードが書き込まれたコンピュータ可読媒体であって、前記プログラムコードは、
    前記コンピュータプロセッサに、(a)前記メモリのファイルのトラバーサルを前記ファイルの最終ページから開始させ、前記ファイルの最初のページに向かって進ませる開始コードセグメントと、
    前記コンピュータプロセッサに、(b)遭遇したページが空である場合、前記遭遇したページをスキップページとして示させるスキップ指示コードセグメントと、
    前記コンピュータプロセッサに、(c)前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示させるダーティ指示コードセグメントと、
    前記コンピュータプロセッサに、(d)スキップページにダーティページを加えた合計を前記ファイル内の空ページの総数と比較させる比較コードセグメントと、
    前記コンピュータプロセッサに、前記合計が前記空ページの総数より少ない場合、前記ファイルを次のページまでトラバーサルさせ、ステップ(b)、(c)、および(d)を実行させる次ページコードセグメントと、
    前記コンピュータプロセッサに、前記合計が前記空ページの総数以上である場合、
    前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込ませ、
    各ダーティページおよび各スキップページを未割り当てページとして示させる、合計大なりコードセグメントと、
    前記コンピュータプロセッサに、前記未割り当てページを前記ファイルから切り捨てさせる切り捨てコードセグメントと、
    を含むことを特徴とするコンピュータ可読媒体。
  9. 前記コンピュータプロセッサに、前記ファイルの総ページ数に対する前記ファイルの空ページの割合が空ページ閾値以上であるか否かを判断させる割合コードセグメントと、
    前記コンピュータプロセッサに、前記割合が前記空ページ閾値以上である場合に前記ファイルの前記トラバーサルを開始させる条件付き開始コードセグメントと、
    をさらに含むことを特徴とする請求項8に記載のコンピュータ可読媒体。
  10. 前記空ページにダーティページを書き込むことを、前記ファイルの前記最終ページに最も近いダーティページから開始して、前記ファイルの前記最初のページに向かって進む、ことを特徴とする請求項8に記載のコンピュータ可読媒体。
  11. 前記コンピュータプロセッサに、前記トラバーサルを開始してから最大実行時間が経過したか否かを判断させる最大時間判断コードセグメントと、
    前記最大実行時間が経過した場合、前記コンピュータプロセッサに、
    前記ダーティページの内容を、まだトラバーサルされていない前記ファイルの空ページに書き込むステップと、
    各ダーティページおよび各スキップページを未割り当てページとして示すステップと、
    前記未割り当てページを前記ファイルから切り捨てるステップと、
    をほぼ直ちに開始させる条件付き開始コードセグメントと、
    をさらに含むことを特徴とする請求項8に記載のコンピュータ可読媒体。
  12. 前記コンピュータプロセッサに、各ダーティページおよび各スキップページの割り当て状況を示すビットマップを生成させるビットマップ生成コードセグメントと、
    前記コンピュータプロセッサに、各ダーティページおよび各スキップページを未割り当てページとして示す動作に従って前記ビットマップを更新させる、ビットマップ更新コードセグメントと、
    をさらに含むことを特徴とする請求項8に記載のコンピュータ可読媒体。
  13. メモリサイズを調整するシステムであって、
    複数のページを含むメモリファイルと、
    前記ファイルの最終ページから前記ファイルのトラバーサルを開始し、前記ファイルの最初のページに向かって進むコントローラであって、前記コントローラは、前記トラバーサル中に遭遇した各ページについて、
    遭遇したページが空である場合、前記遭遇したページをスキップページとして示す動作と、
    前記遭遇したページが空でない場合、前記遭遇したページをダーティページとして示す動作と、
    スキップページにダーティページを加えた合計を前記ファイル内の空ページ総数と比較する動作と、
    前記合計が前記空ページ総数より少ない場合、トラバーサル順に前記ファイル内の次のページから前記トラバーサルを続ける動作と、
    前記合計が前記空ページ総数以上である場合、前記ダーティページの内容を、まだ走査トラバーサルされていない前記ファイルの空ページに書き込む動作とを含む動作を実行するコントローラと、
    各ダーティページおよび各スキップページを未割り当てページとして示す割り当てインジケータと、
    前記未割り当てページを前記ファイルから切り捨てる切り捨て部と、
    を含むことを特徴とするシステム。
  14. 前記コントローラはさらに、
    前記ファイルの総ページ数に対する前記ファイルの空ページの割合が空ページ閾値以上であるか否かを判断し、
    前記割合が前記空ページ閾値以上である場合、前記ファイルの前記トラバーサルを開始する動作を実行する、
    ことを特徴とする請求項13に記載のシステム。
  15. 前記空ページにダーティページを書き込むことを、前記ファイルの前記最終ページに最も近いダーティページから開始して、前記ファイルの前記最初のページに向かって進む、ことを特徴とする請求項13に記載のシステム。
  16. 前記コントローラは、さらに、
    前記トラバーサルを開始してから最大実行時間が経過したか否かを判断し、
    前記最大実行時間が経過した場合、
    前記ダーティページの内容を、まだトラバーサルされていない前記ファイルの空ページに書き込み、
    各ダーティページおよび各スキップページを未割り当てページとして示し、
    前記未割り当てページを前記ファイルから切り捨てるステップとをほぼ直ちに開始する動作を実行する、
    ことを特徴とする請求項13に記載のシステム。
  17. 前記割り当てインジケータは、各ダーティページおよび各スキップページの割り当て状況を示すビットマップを含み、
    前記コントローラは、各ダーティページおよび各スキップページを未割り当てページとして示す前記動作に従って前記ビットマップを更新する、
    ことを特徴とする請求項13に記載のシステム。
JP2004162500A 2003-05-30 2004-05-31 データベースのサイズを変更するための方法、コンピュータ可読媒体およびシステム Expired - Lifetime JP4537771B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/448,847 US7296043B2 (en) 2003-05-30 2003-05-30 Memory file size adjustment

Publications (2)

Publication Number Publication Date
JP2004362575A true JP2004362575A (ja) 2004-12-24
JP4537771B2 JP4537771B2 (ja) 2010-09-08

Family

ID=33131619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004162500A Expired - Lifetime JP4537771B2 (ja) 2003-05-30 2004-05-31 データベースのサイズを変更するための方法、コンピュータ可読媒体およびシステム

Country Status (5)

Country Link
US (1) US7296043B2 (ja)
EP (1) EP1482423B1 (ja)
JP (1) JP4537771B2 (ja)
KR (1) KR101087425B1 (ja)
CN (1) CN100445990C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011248747A (ja) * 2010-05-28 2011-12-08 Fujitsu Ltd データベース装置

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7693856B2 (en) 2004-06-25 2010-04-06 Apple Inc. Methods and systems for managing data
US7730012B2 (en) * 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8108579B2 (en) * 2005-03-31 2012-01-31 Qualcomm Incorporated Mechanism and method for managing data storage
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7685145B2 (en) * 2006-03-28 2010-03-23 Microsoft Corporation Database physical design refinement using a merge-reduce approach
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US20090295836A1 (en) * 2008-05-27 2009-12-03 Ravenflow, Inc. System and method for representing large activity diagrams
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US20100169322A1 (en) * 2008-12-26 2010-07-01 Sun Microsystems, Inc. Efficient access of bitmap array with huge usage variance along linear fashion, using pointers
CN101706736B (zh) * 2009-12-22 2012-10-10 北京大学 一种高效的脏页获取方法
JP5943304B2 (ja) * 2012-10-16 2016-07-05 富士ゼロックス株式会社 画像形成装置及びプログラム
US10013217B1 (en) * 2013-06-28 2018-07-03 EMC IP Holding Company LLC Upper deck file system shrink for directly and thinly provisioned lower deck file system in which upper deck file system is stored in a volume file within lower deck file system where both upper deck file system and lower deck file system resides in storage processor memory
US10216536B2 (en) * 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
US9933945B1 (en) 2016-09-30 2018-04-03 EMC IP Holding Company LLC Efficiently shrinking a dynamically-sized volume
CN114925131B (zh) * 2021-12-31 2024-05-07 中企云链股份有限公司 一种数据同步自动遍历方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3226525B2 (ja) * 1988-10-07 2001-11-05 株式会社日立製作所 主記憶管理方法
EP0554854A3 (en) * 1992-02-04 1996-02-28 Digital Equipment Corp System and method for executing, tracking and recovering long running computations
JP2865500B2 (ja) * 1992-09-30 1999-03-08 富士通株式会社 ファイル格納管理方法
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
EP1003103B1 (en) * 1993-06-03 2008-10-01 Network Appliance, Inc. Write anywhere file-system layout method and apparatus
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6119214A (en) * 1994-04-25 2000-09-12 Apple Computer, Inc. Method for allocation of address space in a virtual memory system
US5574907A (en) * 1994-11-30 1996-11-12 Microsoft Corporation Two-pass defragmentation of compressed hard disk data with a single data rewrite
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US6038571A (en) * 1996-01-31 2000-03-14 Kabushiki Kaisha Toshiba Resource management method and apparatus for information processing system of multitasking facility
US5778392A (en) * 1996-04-01 1998-07-07 Symantec Corporation Opportunistic tile-pulling, vacancy-filling method and apparatus for file-structure reorganization
US6070172A (en) * 1997-03-06 2000-05-30 Oracle Corporation On-line free space defragmentation of a contiguous-file file system
US6023744A (en) * 1997-03-07 2000-02-08 Microsoft Corporation Method and mechanism for freeing disk space in a file system
US5956745A (en) * 1997-04-23 1999-09-21 Novell, Inc. System and method for automatically resizing a disk drive volume
US6249792B1 (en) * 1998-12-16 2001-06-19 Microsoft Corporation On-line dynamic file shrink facility
US6408313B1 (en) * 1998-12-16 2002-06-18 Microsoft Corporation Dynamic memory allocation based on free memory size
WO2001004801A1 (en) 1999-07-09 2001-01-18 Wild File, Inc. Optimized disk storage defragmentation with swapping capabilities
US6757801B1 (en) * 2000-10-26 2004-06-29 International Business Machines Corporation Method to modify that an operation needs to be done on a file system
US20020161860A1 (en) * 2001-02-28 2002-10-31 Benjamin Godlin Method and system for differential distributed data file storage, management and access
US6928456B2 (en) * 2001-03-06 2005-08-09 Intel Corporation Method of tracking objects for application modifications

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
CSNB200200461001, ガルシア マルシ フロホック, Microsoft SQL Server 2000 オフィシャルマニュアル 下 初版, 20010319, p.187−245, 日経BPソフトプレス *
CSND200301234003, マイクロソフト プロフェッショナルサポート本部 デベロッパーサポート統括部 データベース開発技術部, "サポートのプロが教えるSQL Server 2000 運用管理ノウハウ&即効Tips", DB Magazine 第11巻 第8号, 20011101, p.84−105, JP, 株式会社翔泳社 *
CSNH200000038010, 中森 昌彦, "DB自動再構成システムの開発", 日立TO技報 第4号, 19981202, p.58−63, 日立東北ソフトウェア株式会社 *
JPN6010002053, ガルシア マルシ フロホック, Microsoft SQL Server 2000 オフィシャルマニュアル 下 初版, 20010319, p.187−245, 日経BPソフトプレス *
JPN6010002054, 中森 昌彦, "DB自動再構成システムの開発", 日立TO技報 第4号, 19981202, p.58−63, 日立東北ソフトウェア株式会社 *
JPN6010002058, マイクロソフト プロフェッショナルサポート本部 デベロッパーサポート統括部 データベース開発技術部, "サポートのプロが教えるSQL Server 2000 運用管理ノウハウ&即効Tips", DB Magazine 第11巻 第8号, 20011101, p.84−105, JP, 株式会社翔泳社 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011248747A (ja) * 2010-05-28 2011-12-08 Fujitsu Ltd データベース装置
US8682941B2 (en) 2010-05-28 2014-03-25 Fujitsu Limited Database apparatus

Also Published As

Publication number Publication date
KR101087425B1 (ko) 2011-11-25
CN100445990C (zh) 2008-12-24
JP4537771B2 (ja) 2010-09-08
CN1609850A (zh) 2005-04-27
US7296043B2 (en) 2007-11-13
EP1482423A2 (en) 2004-12-01
EP1482423B1 (en) 2017-09-20
EP1482423A3 (en) 2006-05-17
US20040243612A1 (en) 2004-12-02
KR20040103483A (ko) 2004-12-08

Similar Documents

Publication Publication Date Title
JP4537771B2 (ja) データベースのサイズを変更するための方法、コンピュータ可読媒体およびシステム
KR101183424B1 (ko) 관리되지 않는 메모리에 대한 콜렉션을 수행하기 위한 방법및 시스템
JP4831759B2 (ja) Dmaアドレス空間を割当てるための方法、システム、およびコンピュータ・プログラム
US6633968B2 (en) Pre-fetching of pages prior to a hard page fault sequence
US7447851B2 (en) System for page-out and page-in of stale objects in memory
US20200104255A1 (en) Deferred destruction for efficient resource reclamation
US6343341B1 (en) Efficient access to variable-length data on a sequential access storage medium
US8028010B2 (en) Adjusting log size in a static logical volume
US8250121B2 (en) Zero-copy maturing of large objects in generational heap with copying collection
JP4544910B2 (ja) シャドウ・ページング
US6317818B1 (en) Pre-fetching of pages prior to a hard page fault sequence
US7870171B2 (en) Method and system for garbage collection in a multitasking environment
US20210089442A1 (en) Dynamically allocating memory pool subinstances
US7921081B2 (en) Managing a snapshot stored within a file system space for efficient detection of in-use blocks
US7533225B1 (en) Method and apparatus for enabling adaptive endianness
JP4589095B2 (ja) プログラム実行装置及びプログラム実行方法及びデータ領域管理プログラム
JP2005050010A (ja) メモリ管理方式
CN117251388A (zh) 基于缓存的数据处理方法及装置、存储介质及电子设备
JP2982134B2 (ja) 主記憶装置の割り当てサイズ決定方法
CN114721584A (zh) 数据写入的方法、设备和计算机程序产品
JPH0310328A (ja) レジスタ管理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100611

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100618

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4537771

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250