データベース・サーバのウィンドウに表示されるメッセージ“データベース・ファイル<ファイル名>は<nnn>個のディスク・フラグメントで構成されています。”の意味 (SQL Anywhere 8)

データベース・サーバのウィンドウに表示されるメッセージ “データベース・ファイル <ファイル名> は <nnn> 個のディスク・フラグメントで構成されています。” の意味

質問:

Adaptive Server Anywhere (SQL Anywhere) 8 サーバでデータベースを起動したときに、”データベース・ファイル <ファイル名> は <nnn> 個のディスク・フラグメントで構成されています。” というメッセージが、データベース・サーバのメッセージ・ウィンドウに表示されます。これはどういう意味でしょうか。

回答:

この警告は、データベース・ファイルがどのくらい断片化しているかを示すものです。この警告が表示されるのは、データベース・ファイルが過剰に断片化されると、データベースのパフォーマンスに悪影響が生じる可能性があるためです。ディスクの断片化は、ファイルが大きな連続したブロックではなく小さく孤立した複数の断片 (フラグメント) となってディスクに格納されている状態を説明する用語です。ファイルが複数のフラグメントに分割されると、通常はディスクがファイルの読み込みまたは書き込みを行う際の検索回数が過剰になり、ほとんどの場合パフォーマンスに悪影響が生じます。フラグメントの数やサイズ、ディスク上の相対的な位置によって、パフォーマンスに対する影響の度合いが決まります。どのファイル・システムもディスクの断片化による影響を受けますが、FAT ファイル・システムや、程度はもっと低いものの NTFS ファイル・システムは、ディスクの断片化から受ける影響が大きくなる場合があります。

Windows NT/2000/XP でデータベースを起動するとき、Adaptive Server Anywhere (SQL Anywhere) データベース・サーバは、各 dbspace のファイル・フラグメント数を特定し、各データベースのすべての dbspace のディスク・フラグメント数の合計を、データベース・サーバのメッセージ・ウィンドウに表示します。この警告は、データベースのサイズが大きくなるにつれて、または時間の経過とともにフラグメントの数が増加するにつれて、より重要になります。データベース・ファイルのフラグメント数は、以下のように DBFileFragments データベース・プロパティを使用して得ることもできます。

SELECT db_property ( ‘DBFileFragments’ )

Windows NT/2000/XP 以外のオペレーティング・システムでは、DBFileFragments プロパティは定義されていないため、Adaptive Server Anywhere (SQL Anywhere) データベース・サーバのメッセージ・ウィンドウにこの警告が表示されないことに注意してください。

ファイルの断片化の問題を削減するために、データベース・ファイルとトランザクション・ログを別々のディスク・パーティション (または UNIX ファイル・システム)、または別々の物理ディスク・ドライブに配置することができます。そうすると、重度のディスク障害からの回復力が強化されるという利点もあります。これは、データベース・ファイルとトランザクション・ログに別々の物理ディスクを使用した場合に、特に顕著です。

断片化を削減するもう 1 つの方法は、ALTER DBSPACE 文を使用して各 dbspace に大量の追加領域を事前に割り付けておくことです。たとえば、

ALTER DBSPACE my_db ADD 750 KB

という文を使用すると、750 Kb が追加で my_db dbspace に事前に割り付けられます。通常は、基本となるファイル・システムが、ディスク上の単一のフラグメントでこの領域を割り付けることができます。通常は、この方法で dbspace のサイズを拡大する方が、要求に応じて 64 Kb ブロック単位でデータベース・サーバに dbspace を拡大させるよりも望ましい方法です。後者の方法を使用すると、最悪の場合、64 Kb の割り付けごとにディスク・フラグメントが分割される可能性があります。全く同じ方法で、データベースのトランザクション・ログを拡大することもできます。詳細については、『Adaptive Server Anywhere Anywhere SQL リファレンス・マニュアル』の第 4 章「SQL 文」にある ALTER DBSPACE 文の説明を参照してください。

Windows ファイル・システムで断片化を排除するためには、ディスクの最適化ユーティリティを定期的に実行することができます。最適化ユーティリティが含まれている Windows プラットフォームのほか、Windows 対応のサードパーティのディスク最適化ユーティリティ・プログラムもあります。Windows オペレーティング・システムに含まれている最適化ツールよりも、より精巧な機能を持つサードパーティのツールをお勧めします。最適化処理中にエラーが発生した場合に、データが消失し、回復不能になることを避けるために、最適化ユーティリティを起動する前はデータベースをバック・アップすることを習慣づけてください。ディスクの最適化は、

ディスクの断片化は、UNIX ファイル・システムでも発生する可能性がありますが、通常は FAT ファイル・システムや NTFS ファイル・システムほどの問題にはなりません。ただし、UNIX システム上のディスクの最適化はシステムのコンテンツの容量が限界に近づいた場合に深刻になる可能性があります。この問題を特定して修正する方法は、使用している UNIX システムによって異なります。Linux の場合は、ディスク最適化パッケージ defrag-0.73 が、RedHat と Debian の両方で配布されており、Linux システム対応サードパーティのディスク最適化ソフトウェアが他にもあります。Sun Solaris など、その他の UNIX システムに関しては、ディスクの最適化が問題になったときに通常行われる処理は、ファイル・システム全体をバック・アップしてリストアすることです。そうすると、より大きく連続したディスク・フラグメントでファイルが再作成されます。ディスクの断片化を特定して処理する方法については、ご使用の UNIX システムのマニュアルを参照してください。